« iPodとのシリアル通信させてみる(その3) | トップページ | おらぁ、三太だ »

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


前回書いたMode4(AiRモード)で『[0x00]-[0x32]』コマンドはiPodの画面に4階調の映像表示ができる
なのでC#で表示プログラムを作ってみた。
この事に関してはあんまり詳しい資料がなかったので、試行錯誤でよーやっと出るようになった。どうやらこんなこと真剣に取り組んでいる日本人はいないみたい。(苦笑)
しかも、苦労して作った割りにゃぁ実際動作させてみても4階調だから、表現力にはっきりいって乏しいです。(;´Д`)ハァ~
表示までの時間も遅いし、使う用途が無いかな。
【AiRモードでiPodに画像表示をさせる】
  • 送信プロトコルからデータ長は最大でも0xFF 、なので大量データ(画像データ)は複数に分けて送信する必要がある。
    管理のし易さから言って横1ラインごとにブロック送信するのがええと思う。
  • 複数に分けてのデータ送信には・・・
      ■最初のブロックで、画像のプロパティーを含めたデータをiPodへ。
      ■2回目以降はデータの羅列を送る。
    ことで行える。
  • 最初の送信ブロック
    1. [0xFF]-[0x55]お約束のヘッダ
    2. [0xFF]データ長。後で俺のプログラムが計算するので適当な値
    3. [0x04]-[0x00]-[0x32]Mode4での画像Uploadコマンド
    4. [0x00]-[0x00]ブロック[0]
    5. [0x01]お約束の値だと
    6. [0x00]-[0xD2]画像幅(俺の場合210)
    7. [0x00]-[0x6E]画像高さ(俺の場合110)
    8. [0x00]-[0x00]-[0x00]-[0x38]4Byteアライメントされた画像1ライン分のデータ量。
      例)幅210だと2bitで1Pixcelならば、53Byte必要となる。
      んでも、ここでは4Byte単位で送信する仕様なので、56Byteとここでは指示しなければならない。
      んで実際に余分にはみ出しているデータは表示時に捨てられている模様。
    9. [0x??]・・・・・実際の画像データ。8)で指定した数分必要
    10. [0xFF]チェックサム。後で俺のプログラムが計算するので適当な値

  • 以降の送信ブロック

    1. [0xFF]-[0x55]お約束のヘッダ
    2. [0xFF]データ長。後で俺のプログラムが計算するので適当な値
    3. [0x04]-[0x00]-[0x32]Mode4での画像Uploadコマンド
    4. [0x00]-[0x01]ブロック[1]、[2]・・・と増加させていく
    5. [0x??]・・・・・実際の画像データ。8)で指定した数分必要
    6. [0xFF]チェックサム。後で俺のプログラムが計算するので適当な値

  • 表示する画像はiPodが勝手にセンターリングして表示する。



1)元絵(グレースケール)。ええもうlove&hateですよ。
2)Photoshopの「フィルタ」-「色調補正」-「ポスタリゼーション」で4階調に落とした。
3)↑をBMPで保存。
そのファイルを読んで解析&iPodで表示できるプログラムを作成した。んで結果がコレ↓


実に深夜01:49に睡眠時間削ってプログラム作ってるわけですよ・・・( ´,_ゝ`)プッ
■Photoshopで元絵を作り、4階調にレベルを落としてBMP形式(4bit)でセーブ。(このとき自分でわかりやすいように“行の順序の反転”にチェックをしておいた。)

■4階調のBMPファイルで4bit1Pixcel。だから_
  ’F’・・・白
  ’A’・・・薄灰
  ’5’・・・濃灰
  ’0’・・・黒
なので、iPod用にそれぞれを2bitであらわせる変換プログラムを作った。
あっと、元のBMPファイルも4Byteアライメントされているものなので、変換時に考慮しないとずれる。

■iPodのシリアル送信転送レートは19200bpsでしょ。んだから8で割れば2400Byte/Sec
1枚の画像が210x110で、1ライン56Byteなのでトータル容量は6160Byte
ま~これに尾ひれ背びれが付くので、1画面全部転送する総時間は3秒かかると・・・。
んでも実際やってみると10秒近く画像が出るまでに時間を要している。
(;゚Д゚)あれ~?

【まとめ】
いままでだらだらとC#で「iPodのシリアル制御プログラム」を作ってきた。
PICとかAVRの1チップマイコンで制御するときになにか役に立つかな。>俺

|

« iPodとのシリアル通信させてみる(その3) | トップページ | おらぁ、三太だ »

コメント

町田さん、書き込みありがとうございます。

町田さんの計画はすごいですねぇ。

iPod/iPad側で外部電源からのONを知るには、iPod/iPad側での(ハードウエアを熟知した)アプリケーションソフトを開発することになると思うんですけれど。

私はiPod/iPadのアプリは作ったことがないので、どこまでハードウエアに関するAPIが提供されているか技術的内容がわかりません。
なので、申し訳ないのですがこの程度しかお答えすることができません。

投稿: じむ | 2010/11/22 18:41

このような、情報をブログ公開していただき、ありがとうございます。
みんなと同じようにPC(IT機器)を操作したい!その願いのお手伝いができればと、「できマウス。」プロジェクトを主宰して非営利で活動しております。
iPod/iPadを外部の1スイッチで操作できないものかと
検索していました。
外部からスイッチONでシリアル信号をいれ、iPod/iPad側で、外部スイッチONを検出することは、可能でしょうか?

投稿: 町田 健治 | 2010/11/22 17:42

コメントを書く



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


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



トラックバック


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

« iPodとのシリアル通信させてみる(その3) | トップページ | おらぁ、三太だ »