2012-05-02 12 views
3

ドックコネクタ(Appleアクセサリプロトコルを使用している可能性が高い)からコマンドを送信するドッキングステーション(iPod用)にiPod touch(4G、jailbroken、iOS 5.0) iPod、例えば再生を開始/停止します。 iPodがjailbrokenされているので、次のように私がiPodに接続しているときにコマンドが入力されるのを見ることができます(ここではドッキングステーションの再生/一時停止ボタンを繰り返し押して、各行はボタンプレスに等しい)。外部デバイスからの予期しない入力 - iOS

iPod Touch:~ mobile$ od /dev/tty.iap 
0000000 102000 177020 004017 000360 004017 000360 144204 004317 
0000020 000340 002020 000376 004017 177430 002010 000376 000440 
0000040 147730 160010 004377 147740 160010 020000 154001 102000 
0000060 177020 020400 177000 102000 177710 160010 007400 014010 
0000100 000377 004417 177430 007400 014011 000377 002020 020400 
0000120 177000 004000 000300 140010 004377 000340 000440 000344 

ここでの入力が常に異なる理由はわかりません。同じボタンを押すと、入力の各行が同じであることが期待されます(最初はオフセットマーカーを明示的に無視しています)。そうしないと、再生/一時停止ボタンが正常に動作します(このodコマンドが実行されていない場合)。

私の質問は:odまたは私が要求を正しく見ることができるように使用できる別のユーティリティを呼び出すより良い方法はありますか?またはボーレートなどを変更する必要がありますか?

EDIT: 1つではなく、1つのボタンを押すたびに2行の入力が表示されます。それは整列/バッファリングの問題でしょうか?

答えて

0

明らかに問題はボーレートで、/dev/tty.iapでは9600で(デフォルトで)でした。小さなCプログラム(ボーレートをodまたはhexdumpに設定する方法やシリアルポートを直接変更する方法は分かりません)、ボーレートをcfsetspeedを使用して19200に変更した場合、外部アクセサリからのコマンド入力は常に同じです。

+0

'stty -F /dev/tty.iap 19200'は、コマンドラインからシリアル速度を設定する方法です。現在の設定を表示するには、 'stty -F/dev/tty.iap'を実行し、stty:' stty --help'の詳細を確認してください。 –

+0

私にとってはうまくいかないようです。私の質問をここに見てください:http://unix.stackexchange.com/q/37972/18401 – newenglander

+0

本当にうまくいくはずです。しかし、他のいくつかのプロセスがそれを元に戻しているようです。私はシステムメッセージを次のように見ています:「シリアルポートiapを放棄」し、「シリアルポートiapを再取得」したので、変更を継続するとttyを閉じてから元の設定を元に戻すまで続きます。 –

関連する問題