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