電話からの間隔計:続き

少し前まで、 afanユーザーは特別に細工されたオーディオファイルを使用して、赤外線を介してデバイスを制御する機能を説明する記事を書きまし 。 それは当時SONY NEX-5についてであり、彼のためにオーディオファイルが提示されました。 記事に記載されている方法に興味がありましたが、SONY H50にはRMT-DSC2リモートコントロールが使用され、NEX-5にはRMT-DSLR1が使用されているため、そこでコマンドが異なります。 この記事は、LIRC構成ファイルからオーディオファイルへのコンバーターを含むledremプロジェクトへのリンクを提供しました。 実際、この記事では一連のコマンドの変換について説明します。



ledremプロジェクトの最後の変更は2008年8月にさかのぼりますが、コンバータープログラムがカメラの構成ファイルを使用することを拒否した後、私はこれに気付きました。 プログラムのウェブサイトには、ある種の衛星チューナー用のサンプルファイルがあり、それを最新のLIRCコマンドファイルと比較すると、そのプログラムが動作を拒否した理由を理解できます。 提示された変換ユーティリティはRAWコードを変換するように設計されていますが、現在、 LIRCディレクトリ内のほとんどの構成は異なる形式で提示されています(詳細は後述)。 ところで、それは非常に特定のRapid Q Basicに書かれています。



そのため、プログラムは機能しませんが、何らかの間隔計を作成したいという要望は残っています。 さて、Adobe AIRを開発プラットフォームとして使用し、オーディオファイルを書き込むプログラムのメインコンポーネントを使用して独自のプログラムを作成します。 しかし、最初に、LIRCがIRコマンドをどのように記述し、「理解」するかを理解する必要があります。





LIRCコマンドの構造





送信されるIR信号のシーケンスを記述するファイルは、2つの主要な部分で構成されます。最初の部分はIRメッセージの期間と構成を記述し、2番目はRAWまたはより一般的な16進形式のコードを直接含みます。



主なフィールドとそのシーケンス









pre_dataおよびpost_dataフィールドは、対応するフィールドの16進値に相当する一連のパルスです。 データはバイナリ形式で送信されます。 ゼロと1のパルス幅も示されます。

 ワン100200
ゼロ120 400 


構成ファイルのfoot、header、pre、post、one、zeroフィールドの場合、期間は次の形式で示されます

  [名前] [オン、マイクロ秒] [オフ、マイクロ秒]
ヘッダー1940 200 


残りのフィールド-ptrailおよびplead-は、伝送の持続時間によってのみ示されます。

  [名前] [マイクロ秒を含む]
 ptrail 1342 


16進パラメーターの場合、これらのパラメーターが含まれるビット数が決定されます。

  [ビット、pre_data_bits、post_data_bits] [ビット数] 


バイナリシーケンスに変換されたコードに含まれるビットが構成で指定されたビットよりも少ない場合、残りのビットはゼロで埋める必要があります。



SONY H50の構成例:

リモートを開始
  名前Sony_RMT-DSC2
  ビット12

   .....

  ヘッダー2461 525
   1つの1266 525
  ゼロ668 525
   post_data_bits 8
   post_data 0x8F
  ギャップ44752 
   min_repeat 4


これは、完成したオーディオファイルの一部のようになります。







なぜ一部だけですか? min_repeatもあるからです。



コマンドの繰り返し





一部のデバイスでは、アクションを実行するためにコマンドを繰り返す必要があります。 そのようなデバイスをサポートするために、LIRCはさらにいくつかの表記法を使用します。



  min_repeat [number] 
デバイスによって認識されるコマンドの最小繰り返し回数を示します。

  min_repeat 4 


 ギャップ[オフ、マイクロ秒] 
この値は、ptrailを送信した後の一時停止の期間を表示します。 設定値min_repeatのために必要なコマンドを繰り返す場合、再送信信号の送信開始までの遅延時間を決定します。

 ギャップ44300 


さらに、キーを長押しするための多くのパラメーターが定義されています。 オーディオファイルへの変換の場合、そのようなパラメーターはメインのパラメーターほど必要ではないため、ここでは分解されません。



コマンド転送





Nokia 5800では、出力信号の振幅が小さいため、提案された送信方法は機能しませんでした。 家で見つかったオーディオ出力を備えたデバイスをざっと見てみると、すべてのデバイスが望ましい信号レベルを提供できるわけではないことが明らかになりました。 このため、TDA7050チップ上に小さなアンプを組み立てる必要がありました。 このチップは、ヘッドフォンのアンプとして、さまざまなプレーヤー、ラジオなどで使用されています。 包含スキームは非常に簡単です。







この場合、特定のオブジェクトが選択されました。これはかつては点滅する2色の懐中電灯でした。 ケースには、バッテリーコンパートメント、スイッチ、およびLED用の場所があり、この場合に必要なものはすべてあります。



38オームの公称値でLEDの電流を制限する抵抗が、LEDとマイクロ回路の間にはんだ付けされています。



結果の構造の内部ビュー...







...および外部:







プログラム





そして最後に、コンバータープログラム自体:







スクリーンショットに見られるように、SoXを使用して動作します(Linuxユーザーは、soxバイナリを探す必要がなく、適切なフィールドにsoxを書き込むだけです)。 結果フォルダーは、BTN_HOME.raw、BTN_HOME.wav、KEY_UP.raw、KEY_UP.wavなどの形式のファイルになります。[スタート]ボタンをクリックすると、cmdファイルまたはshファイルへの書き込みが開始されます(OSによって異なります)。自分で実行する必要があります。



$ sh lirc2wav_temp.sh



もちろん、プログラムから起動するにはNativeProcessApiがありますが、それを使用しても、手動起動と同じ結果を得るのは非常に困難です。 クロスプラットフォームは課題に追加されます。



作業はWindowsとLinuxでテストされていますが、Macでは試していません。



ここからプログラムをダウンロードできます( Adobe Airバージョン2.0以降が必要です)。



関連リンク:




All Articles