« iPodとのシリアル通信させてみる(その2) | トップページ | iPodとのシリアル通信させてみる(その4) »

iPodとのシリアル通信させてみる(その3)

前回からの続き。

[0xFF]-[0x55]-[0x03]-[0x00]-[0x01]-[0x04]-[0xF8]
を送ると「アドバンス・iPod・リモートモード」になる。
そのとき画面はNIKEのマークみたいのが出る
【モード0x04:アドバンスド・iPod・リモート(=AdvancediPodRemote)】
  • モード2は一方的なリモコン送信であるが、AiRは双方向で行うことでより高度な制御を可能となる。
  • 返り値があるコマンドは、すぐさま情報が同じプロトコルを使ってiPodから返ってくる。
  • コマンドがいっぱいある。なので自分にとって必要だったものだけ書いてみる。

    コマンド内容
    0x000x14
    iPodの名前教えて
    0x15

    設定されたiPod名(文字列)返信
    ※文字コードUTF8
    0x1C

    1. 再生時間
    2. ステータス
    教えて
    0x1D

    1. 1曲の長さ(1/1000単位)(4Byte)
    2. 再生時間(1/1000単位)(4Byte)
    3. ステータス(1Byte)

      0:Stop ,1:playing, 2:paused
    0x1E

    Playlistのカレントポジション教えて
    (ポジション=曲番号で無いところに注目
    シャッフルとかだとポジションは絶対曲番号とは違う)
    0x1F

    関連とポジション(4Byte)

    0=1ポジション
    1=2ポジション
      :
    0x20

    このポジション(4Byte)の曲名教えて
    0x21

    設定された曲名(文字列)返信
    ※文字コードUTF8
    0x22

    このポジション(4Byte)のアーティスト名教えて
    0x23

    設定されたアーティスト名(文字列)返信
    ※文字コードUTF8
    0x24

    このポジション(4Byte)のアルバム名教えて
    0x25

    設定されたアルバム名(文字列)返信
    ※文字コードUTF8
    0x28

    このポジション(4Byte)曲をダイレクトプレイ
    0x29

    再生コマンド(1Byte)
    • 0x01:Play/Pause
    • 0x02:Stop
    • 0x03:Skip+
    • 0x04:Skip-
    • 0x05:FFwd
    • 0x06:FRwd
    • 0x07:SotpFF/RW
    0x2C

    シャッフルモード教えて
    0x2D

    現在のシャッフルモード(1Byte)
    • 0x00:なし
    • 0x01:曲単位
    • 0x02:アルバム単位
    0x2E

    このシャッフルモードにして(1Byte)
    • 0x00:なし
    • 0x01:曲単位
    • 0x02:アルバム単位
    0x2F

    リピートモード教えて
    0x30

    現在のリピートモード(1Byte)
    • 0x00:なし
    • 0x01:1曲リピート
    • 0x02:全曲リピート
    0x31

    このリピートモードにして(1Byte)
    • 0x00:なし
    • 0x01:1曲リピート
    • 0x02:全曲リピート
    0x32

    4階調の画像表示(下記項目として別途記載)
    0x35

    総曲数教えて
    0x36

    総曲数(4Byte)
    0x37

    この絶対番号(4Byte)曲をダイレクトプレイ



  • コマンド[0x00]-[0x32]は画面に白黒4階調の絵が表示できる。
    (4階調なので2bit/Pixcel・・・「濃い 11>10>01>00 薄い
      次回詳細記載


今までのを統合するとこんな感じ・・・(;´∀`)

|

« iPodとのシリアル通信させてみる(その2) | トップページ | iPodとのシリアル通信させてみる(その4) »

コメント

だんでろんさん、書込みどーもです。

え〜っと、ずいぶん昔のネタだったので、かなり忘れています。
久々に読み返しての回答をしたいと思います。

通常“チェックサム”をデータ末尾に付けるのですが、付けていますでしょうか?
提示された例題コマンドを見て、そう感じました。

投稿: じむ | 2012/02/12 15:52

はじめまして。
ipodからのデータ取得部分について、情報を探していたらこのブログにたどり着きました。

コマンドを送信して、モード4への移行はできたようなのですが、
0xff 0x55 0x03 0x04 0x00 0x14
のようなコマンドを送信しても、返信がありません。
acknowrichというシリアル通信ソフトを使って確認しています。

なにか命令は間違っていますでしょうか。

投稿: だんでろん | 2012/02/12 11:45

saitoさんコメントどーもです。

動き始めたようですね。
シリアル通信にはユーザが解析した資料がありますが、コレといった教科書が無いので自分が思ったように動けばそれが正解だと思っています。

では早速質問に答えます。
最初にマスターであるPCやらPICからのiPod名要求コマンド(0x14)を送信すると、それに対してiPodが以下のように返信してきます・・・

受信配列  その内容
 [0][1]   [0xFF][0x55]・・・データヘッダ
 [2]     [0x??]   ・・・以後続くデータ長
 [3]     [0x04]   ・・・モード4
 [4]     [0x00]   ・・・コマンド頭固定値(?)
 [5]     [0x15]   ・・・以後iPod名だよ
 :      :
 [n]    チェックサム
の順でデータが送られてくるはずです。

これはマスターであるPC(PIC)が送るコマンドと同じ構成で返信データ(キャラクター群)が反ってくるというこってす。

なのでPC(PIC)のやることは、
 1)iPodのデータが欲しいコマンドを送る
 2)iPodからデータがくるのを待つ
   (要タイムアウト処理)
 3)来たデータからヘッダーを見つけ出し、
 4)送ったコマンドに対する返答データか判断する
 5)もしそうなら、キャラクターを抽出
   →それが欲するデータ
てな感じでしょうか。

iPodからもらったデータで最後のチェックサムを受け取るまで待って、それからそれを使ってデータの信頼性をあげるのも良し、信頼性は落ちるけれど無視して得たデータをすぐさま使うのも良し、それはsaitoさんの好きでよろしいんではないでしょうか。

投稿: じむ | 2008/10/30 01:37

こんにちは。
その後色々読んでみると、AiRモード解除には、再生/一時停止コマンドを送ると良いという事が分かり、
再生/一時停止を二回(再生→一時停止)送ってみたところ、Dockコネクタを外した時点でAiRモードが解除されました。ご報告まで・・・

改めて質問なんですが、iPodからの戻り値は、
例えば『iPod名』だと
[0xFF]-[0x55]-[0x03]-[0x04]-[0x00]-[0x15]のあとにiPod名が続くんでしょうか?また、その場合のチェックサムはどうなるでしょうか?

投稿: saito | 2008/10/29 14:05

早速のお返事ありがとうございます!
合間合間に進めていますが、付属リモコンからRX線を引き出して接続し、モード1へは移行するのですけれどそこから他のモードへ移行しなかったり、
ドックコネクタからだと一切反応がなかったりと散々な現状ですが(笑)七転八倒して完成させたいと思います。
それでは、失礼致します。

投稿: saito | 2008/10/22 18:44

saitoさん、コメントどーもです。
PICですか。今私もライターを造っているところです。(近日ブログで発表予定)
さて、ご質問にお答えします。

1)AIRモードから通常に戻す場合。
通常モードって言うのはモード2のことなので、モード切換えコマンドで"モード2"を送ればメニュー画面に戻ります。
具体的には
 [0xFF][0x55][0x03][0x00][0x01][0x02][CheckSUM]
です。

2)AIRモードに行かないというのは、ナイキのマークみたいなのが出ないってことなんでしょうか?
特に前準備というのはしていませんねぇ。
上で答えたのがモード2の話で、AIRだとモード4にすれば良いため_
 [0xFF][0x55][0x03][0x00][0x01][0x04][CheckSUM]
を送っているだけですよ。

とここまで書いて思い出しましたが、ボタンリリースのコマンドも送ってみてはどうでしょう。
ブログでも書きましたが、コマンドって送ったのはずーっと生きているので「ボタンを離したよコマンド」を送る訳です。
  [0xFF][0x55][0x03][0x02][0x00][0x00][CheckSUM]
です。

うまく動くと良いですね〜

投稿: じむ | 2008/10/22 00:18

こんにちは。
PICでiPodを制御しようと試行錯誤している者です。
通信プロトコルの解説を大変分かりやすく解説していただきありがとうございます。
二つ質問があるのですが、お答え頂くと幸いです。
1.AIRモード等から通常の状態へ戻すには、iPodを再起動させれば宜しいですか?
2.今現在、お恥ずかしい話ですがAIRモードに移行してくれず難儀している最中です。コマンドを送信するにあたり、前段階で行うべき操作等ありますでしょうか?

以上、よろしくお願いいたします

投稿: saito | 2008/10/21 11:08

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: iPodとのシリアル通信させてみる(その3):

» iPodとのシリアル通信させてみる(その4) [じむの(とりあえず)やってみたの巻]
前回書いたMode4(AiRモード)で『[0x00]-[0x32]』コマンドは4 [続きを読む]

受信: 2007/12/24 14:37

« iPodとのシリアル通信させてみる(その2) | トップページ | iPodとのシリアル通信させてみる(その4) »