« 貯めに貯めた99ポイント(当選確率15%) | トップページ | 東京事変「娯楽(バラエティー)」購入 »

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

iPodとPCをつなぐ治具を作ったので、制御ソフトを作ってみる。
作るにあたってインターネットで資料を集めた。
開発言語は以前マインスイーパを作ったC#(Microsoft Visual C# 2005 Express Edition)で行うことにする。(シリアル通信の設定が楽そう
【ネットで仕入れた資料よりわかったこと】

  • シリアル通信設定:
    19200bps、STOP1、パリティー無し
  • USBで接続中はシリアルのコマンドが利かない。(あたりまえか?)
  • 通信プロトコルは主に5つに連なり_

    1. ヘッダー
      ([0xFF]、[0x55]の順で固定な値
    2. データ数
      1(モード数分)(データ数分)
    3. モード
      ([0x00]~[0x04])
    4. データ
      (コマンド等)
    5. チェックサム
      (100h-データ数-モード-データ

    で構成される。
    これは送信データ・受信データ共に同じ
    (最初送信データ側だけこのプロトコルなのかと思っていたら、作っていくうちにiPodからの返答もこのプロトコルでやってくるというのを実際に受けた受信データからわかったよ。)
  • ようは「3.モード」と「4.データ」をiPodへ与えてやれば何かしらの制御が可能であると。
  • まずその「3.モード」は3種類ある。それぞれは

    1. 「ボイスレコーダ」・モード
    2. 「簡易リモート」・モード
    3. 「アドバンス(上級)iPod・リモート」・モード
  • んでそれぞれに「4.データ」も付加して送るわけである。上記3種類の各モードに対するデータはどんなものがあるか、さらに詰めていく。
【モード0x00:モード切替】
  • [0xFF]-[0x55]-[0x03]-[0x00]-(モード値(※))-[チェックサム]
  • PCから順にiPodへ送ることでモード値に書かれたモードにさせる。
    ※モード値内容
    [0x01]-[0x01]iPodをモード1「ボイスレコーダ」にする
    [0x01]-[0x02]iPodをモード2「簡易リモート」にする
    [0x01]-[0x04]iPodをモード4「上級リモート」にする

  • 例)iPodをモード4(AdvanceiPodRemote)にさせる
    [0xFF]-[0x55]-[0x03]-[0x00]-[0x01]-[0x04]-[0xF8]
    チェックサム・・・100h-0x03-0x00-0x01-0x04=0xF8
【モード0x01:ボイスレコーダ】
  • のiPodではマイクが付けられて、このモードにすることで
      8kHzのモノラル
    で録音できたみたい。
  • どうやら過去iPod機種のみサポートのようで、自分のiPod(3G)ではこのモードにすると怒られた。
    なのでこのボイスレコーダとしては使えないようだ。(´・ω・`)ショボーン
【モード0x02:簡易リモート】

  • 簡単な再生系のコマンドiPodの周辺機器で売られているリモコンはこのコマンドを使っているもよう。
  • コマンドを送ると、動作をし続けるので停めてやるコマンドを送らねばならない
    例えば「音量 増」を送るとドンドンボリュームが上がっていってしまう。
    「ボタンリリース」を送らないと止まらない。
    同様に「Play/Pause」コマンドを送ると、ずーっと[Play/Pause]ボタンを押した状態になるのでその結果電源が落ちてしまう。([Play/Pause]キーの長押しで電源Off)
  • コマンドは2バイト、3バイト、4バイト、5バイトで構成されているが、自分のiPod(3G)では3、4、5バイトのコマンドは対象外のようで受け付けてくれなかった。
    (5バイトのコマンドにスクロールUP/Downがあるんだよなぁ・・ちぇ。)
  • 例)次のアルバムにする。
    [0xFF]-[0x55]-[0x03]-[0x02]-[0x00]-[0x20]-[0xD9]
    すかさず
    [0xFF]-[0x55]-[0x03]-[0x02]-[0x00]-[0x00]-[0xFB]



    コマンド数 内容12345
    2バイトボタンリリース0x000x00
    Play/Pause0x01
    音量 増0x02
    音量 減0x04
    スキップ 増0x08
    スキップ 減0x10
    アルバム 次0x20
    アルバム 前0x40
    停止0x80
    3バイト(※)Play(Pauseなし)0x000x000x01
    Pause(Playなし)0x02
    ミュート(サイクリック)0x04
    プレイリスト 次0x20
    プレイリスト 前0x40
    シャッフル(サイクリック)0x80
    4バイト(※)リピート(サイクリック)0x000x000x000x01
    電源OFF0x04
    電源ON0x08
    メニュー0x40
    決定0x80
    5バイト(※) スクロール ↑0x000x000x000x000x01
    スクロール ↓0x02
※3,4,5バイトコマンドは自分のiPodでは動かないので参考程度に。(まんまネットで得た内容(;´∀`))
<モード4については次回>(つーかまだ作っていて終わっていない。(;´∀`))

| |

« 貯めに貯めた99ポイント(当選確率15%) | トップページ | 東京事変「娯楽(バラエティー)」購入 »

コメント

コメントを書く



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


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



トラックバック


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

» iPodとのシリアル通信させてみる(その2) [じむの(とりあえず)やってみたの巻]
前回からだいぶ経ちました。ええ長い間サボっていました。 なんかプログラムを書くモ [続きを読む]

受信: 2007/12/20 23:04

« 貯めに貯めた99ポイント(当選確率15%) | トップページ | 東京事変「娯楽(バラエティー)」購入 »