Sirius -旧ブログ、更新されません-

2011年01月の記事

<< 前のページ

2011年1月31日(月) 20:19

Super C で音声のみを再エンコード

AVIファイルは音声が mp3 以外だと DTV-X900 で再生できないので、映像はそのままで音声のみを再エンコードして再生できるようにします。

VirtualDub がありますが今回は このあたりからダウンロードできる複数ファイル変換が簡単なSuper Cを使って、音声のみをエンコードしなおします。



設定は、

Output Container を AVI にします。

Output Audio Codec を mp3 にします。

Container設定



VIDEO はそのまま使うので Stream Copy にチェックを入れます。

VIDEO設定



AUDIO は好みの設定でいいと思います。

AUDIO設定



これで変換したいファイルをドラッグアンドドロップしてエンコードボタンを押せば変換開始です。音声のみ再エンコードなので短時間で終了します。デフォルトの設定では元のファイルと同じ場所に変換後のファイルが保存されます。あとは、FourCC を XVID に書き換えれば再生できるようになります。ところが Super C は FourCC の Description cede を DX50 にするため、CCOOO での書き換えは出来ませんでした。

代わりに コマンドライン版 を利用して強制的に書き換えました。このコマンドライン版では、間違ったファイルを指定してもチェックせずに書き換えてしまうので注意が必要ですが -f オプションを付けると強制的に書き換えてくれるようです。次のようなバッチファイルを CCC.exe と同じフォルダに作成して書き換えたいファイルをドラッグアンドドロップすると書き換えられます。


---------------------------ここから---------------------------

@echo off

set BASE=%~dp0

for %%i in (%*) do %BASE%\CCC.exe -d:XVID -f %%i

---------------------------ここまで---------------------------




解像度 1280x720 や 1440x810 の DivX ファイルも再生できました。

written by sirius [デジモノ] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2011年1月30日(日) 19:40

KURO-RS 用 daemon その9

ほぼ完成しました。しばらく使って問題が無ければ公開する予定です。ただし、今回は再配布を制限したいので、 GPL での公開をしないつもりです。バイナリつきで公開すると、GPL 部分を含んでしまうのでソースのみ公開する予定です。ソースだけであれば全て資料をみて作成したので GPL は含んでいません。制限するのは再配布のみで、個人利用の場合、ソース改変は許可します。改変したものの配布は禁止しますが、改変したものの差分(パッチ)の公開まで制限するものではありません。

written by sirius [KURO-RS] [この記事のURL] [コメントを書く] [コメント(1)] [TB(0)]

この記事へのトラックバックPingURL

2011年1月30日(日) 11:01

CCOOO を使って FourCC を書き換える

やはり、DTV-X900 で再生できない DivX の avi ファイルは、FourCC を書き換えることで全てではありませんが再生できるようになりました。

書き換えて再生は出来ますが、場合によっては画質が荒く再生されたりすることもあるようです。ほぼ同じですが XVID = DivX では無いのでこれは仕方が無いでしょう。

CCOOO というソフトで書き換えてみました。

CCOOO

起動したら、右クリックで環境設定を行います。

CCOOOメニュー

CCOOO環境設定1

環境設定の右側の DivX ファイル設定の Description Codeを XVID にします。

CCOOO環境設定2

あとは書き換えたいファイルをドラッグアンドドロップするだけです。ただし、書き換えはバックアップをとってから行ったほうがよいと思います。

written by sirius [デジモノ] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2011年1月29日(土) 17:20

Buffalo DTV-X900 を購入

Buffalo の DTV-X900 を購入しました。もともと、LT-H90WN を持っていて、LT-H90DTV を買い、アップグレードサービスで LT-H91DTV 相当にして、DTV をメインにして使っています。なかなか便利なのですが、アップグレードサービス利用者は特別価格で購入できたので買ってしまいました。つなげた USB HDD を簡易 NAS 機能で PC から読み書きできたり、録画した番組を DTCP-IP を利用して他のプレーヤで再生できるようです。最大の購入理由は、DiviX HD が再生できるということだったのですが、いくつか試したところ再生できないものもあるようです。それどころか、LT-H91DTV で再生できている DivX も映像が出なかったりします。たぶん、FourCC コードを書き換えれば再生できるんじゃないかと思います。まあ、DTV-X900 のファームウェアがきちんとしてくれればいいだけなんですが。

written by sirius [デジモノ] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2011年1月28日(金) 23:18

KURO-RS 用 daemon その8

シグナルの受信がうまく出来ていません。udev から起動したものは、signal を受け付けてくれません。手動で起動した場合は大丈夫です。やはりきちんとしたプロセス間通信を実装しないとだめでしょうか。そうすると同時にスレッドにしないとだめなのです。よく調べてみると signal() より sigaction() の方が正式なシグナル処理らしいので、sigaction() を使ってみましたが、同じでした。どうも udev から起動するとだめな模様です。試しに rc.local から起動するようにしたら問題ありません。BonCasServer や pcscd も rc.local から起動するようにしたら問題無く動きます。常時つないで運用なのでこれでいいでしょう。

written by sirius [KURO-RS] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2011年1月26日(水) 21:20

KURO-RS 用 daemon その7

ログ出力に初めて syslog を使ってみました。意外と簡単で便利です。

ただし、大量のログ出力があると、syslog はシステムを重くしてしまうようです。



syslog の使い方は、syslog.h をインクルードして、openlog() で準備して、syslog() でログの出力をします。最後に、closelog() で閉じますが、closelog() は必須では有りません。



openlog() は三つの引数があります。

void openlog(const char *ident, int option, int facility);

一つ目がプログラム名、二つ目がオプションで LOG_CONS, LOG_NDELAY, LOG_NOWAIT, LOG_ODELAY, LOG_PERROR, LOG_PID で必要なものを OR でまとめます。三つ目が記録されるプログラムのタイプの指定で、通常は LOG_DAEMON でいいと思います。



syslog() は printf() 形式のフォーマットが使える可変引数の関数です。

void syslog(int priority, const char *format, ...);

はじめの引数がプライオリティで、重要度の高い順から LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG のどれかを指定します。



プライオリティを使ってログの出力を抑制するには、setlogmask() を使います。

int setlogmask(int mask);

例えば、LOG_ERR 以上のプライオリティのログだけを出力する場合は、

setlogmask(LOG_UPTO(LOG_ERR));

という風にします。簡単でなかなか便利です。

written by sirius [KURO-RS] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2011年1月25日(火) 21:51

PLEX PX-W3PE

地デジの録画環境として今は、SKNET の HDP2 を使っていますが、それ以外に HDUSF や アースソフトの PT2、PLEX の PX-S3U もあります。なのに、また、PLEX の PX-W3PE を買ってしまいました。



PX-W3PE については、次のサイトが詳しいです。

PLEX PX-W3PE 3波ダブルチューナーまとめ



おいおい使ってみたいと思います。



PT2 は再販されているようです。

written by sirius [アースソフト PT2] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2011年1月24日(月) 21:05

赤外線信号の解析その4

必要なデータを考えます。

・リーダ部の on のビット数と off のビット数

・リピートのタイプ

・フレームサイズ

・データのビット数

有ったほうがいいデータ

・ストップビットのビット数

・データの on ビットのビット数

・データが 0 のときの off ビットのビット数

・データが 1 のときの off ビットのビット数

送るコード

・カスタムコード(ベンダーコード)

・データコード



これらを使ってデータを定義します。


typedef struct _param_t {

    int vender;        /* カスタムコード */

    int l_on;          /* Leader 部の on bit の数 */

    int l_off;         /* Leader 部の off bit の数 */

    int on;            /* on bit の数 */

    int off1;          /* 0 の時の off bit のビット数 */

    int off2;          /* 1 の時の off bit のビット数 */

    int s_on;          /* ストップビットのビット数 */

    int bit_length;    /* 送信データのビット数 */

    int frame_size;    /* Leader 部を除いたデータのビット数 */

    int repeat_type;   /* データの繰り返しタイプ */

} param_t;



param_t table[] = {

    { 0x50ef, 90, 45, 6, 6, 16, 6, 32, 1083, 1 }, /* HDUSF */

    { 0x30ce, 90, 45, 6, 6, 16, 6, 32, 1073, 1 }, /* LT-H91DTV */

    { 0xc4a2, 90, 44, 6, 6, 16, 6, 32, 1069, 1 }, /* SHDSW_4SV */

    { 0x06,   90, 45, 6, 6, 16, 6, 32, 1075, 1 }, /* PF720 */

    { 0xc5,   86, 42, 6, 6, 16, 6, 16, 465, 2 },  /* TH-BA1 */

    { 0xf5,   86, 42, 6, 6, 16, 6, 16, 465, 2 },  /* TH-BA1 */

    { 0x20,   23, 11, 5, 6, 17, 5, 16, 489, 3 },  /* DT-100HDMI */

    { 0,0,0,0,0,0,0,0,0,0 }

};




このテーブルを使い、データコード等をパラメータで受け取り、KURO-RS 用の送信データを作成するプログラムを作ろうと思います。

written by sirius [KURO-RS] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2011年1月23日(日) 20:39

KURO-RS 用 daemon その6

細かい部分を除き、基本部分(信号を受信してコマンドを実行する)はほぼ実装できました。



残りの作業

・リピート信号にも反応するようにする。

・セクションの切り替え時にセクション番号分 LED を発光させる。

・データセクションの数、値の最大個数を動的に変更できるようにする。

・セクション切り替えをループさせるコマンド。

・設定ファイルチェックプログラムの作成。

・受信エラー時にデバイスを開き直す様に変更。

・ログ出力の実装。

・メモリリークが無いかソースをチェックする。

・エラー処理の強化、特に設定ファイルの読み込み部分。←設定ファイルチェックプログラムで対応。



まだ公開するまでは、先が長そうです。

written by sirius [KURO-RS] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2011年1月22日(土) 11:57

KURO-RS 用 daemon その5

外部コマンドからの要求をどう受け取るかを考えました。プロセス間通信で行うのが正しい方法でしょうが、そこまで手間をかけたくありません。そこで、signal を使うことにしました。SIGUSR1 を送信要求、SIGUSR2 を受信要求にします。設定ファイルでやり取りする一時ファイルをきめて、そのファイルを通して赤外線信号データのやり取りをすることにしました。signal 処理部分を作成中です。

written by sirius [KURO-RS] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2011年1月21日(金) 18:45

KURO-RS 用 daemon その4

KURO-RS が応答しなくなってしまうのは KURO-RS が送信や受信の待ち状態になっているようです。受信待ちをキャンセルする c コマンドがありますが、このコマンドで全ての状態を解除は出来ないようです。調べていくと LED を点灯させる i コマンドは、送信キャンセルコマンドも兼ねるようです。試しに、デバイスを開いた直後に i コマンドを使ってみたところ応答がなくなることはなくなりました。そこで、初期化処理として、i コマンドを使い、i コマンドが失敗した場合に c コマンドを使うようにしました。

written by sirius [KURO-RS] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2011年1月20日(木) 21:13

赤外線信号の解析その3

リモコン信号には製品付属のリモコンでは出せない保守用の信号や隠しコマンドが有る場合があるそうです。そこで KURO-RS を使い任意のデータを送信できるプログラムを作成しようと思います。HDUSF の信号を見るとデータの後にもパターンがあります。NEC フォーマットを見るとリピートが有ります。ちょっと形が違うようですがこれも含めて信号を作成したいと思います。

ついでなのでほかのリモコンの信号も調べてみました。ちょっと長くなりますが、信号をダンプしてみます。



・HDUSF の Power ボタン

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111

11111111 11111111 11111111 11100000 00000000 00000000 00000000 00000000

00000000 11111100 00011111 10000000 00000000 00111111 00000111 11100000

00000000 00001111 10000001 11111000 00111111 00000011 11100000 01111100

00000000 00000001 11111000 00000000 00000011 11110000 00000000 00001111

11000000 11111000 00000000 00000011 11110000 00000000 00000111 11000000

00000000 00011111 10000000 00000000 00111110 00000000 00000000 11111100

00001111 10000001 11111000 00111111 00000111 11100000 01111100 00001111

11000000 00000000 00111111 00000011 11100000 00000000 00001111 11000000

00000000 00011111 00000000 00000000 01111110 00000000 00000000 11111100

00000000 00000011 11110000 00000000 00000111 11100000 11111100 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00111111

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111

11111111 11111111 11110000 00000000 00000000 00011111 10000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000



・HDMI セレクター (SDHSW-4SV) の Power ボタン

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111

11111111 11111111 11111111 11000000 00000000 00000000 00000000 00000000

00000011 11110000 00000000 00001111 11000000 00000000 00011111 00000011

11110000 01111110 00001111 11000000 00000000 00111111 00000011 11100000

01111110 00000000 00000001 11111000 00111111 00000000 00000000 11111100

00001111 11000001 11111000 00111111 00000000 00000000 11111100 00001111

10000000 00000000 00111110 00000111 11100000 11111100 00011111 10000001

11110000 00111111 00000111 11100000 11111100 00011111 10000000 00000000

01111110 00000000 00000000 11111000 00000000 00000011 11110000 00000000

00001111 11000000 00000000 00111111 00000000 00000000 11111110 00000000

00000001 11111000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000111 11111111 11111111

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111

11111110 00000000 00000000 00000111 11100000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000



・Buffalo LT-H91DTV の Power ボタン

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111

11111111 11111111 11111111 11000000 00000000 00000000 00000000 00000000

00000001 11111000 00111111 00000111 11100000 00000000 00011111 10000000

00000000 00111110 00000111 11100000 11111100 00011111 10000011 11110000

00000000 00001111 11000000 00000000 00011111 00000011 11110000 01111110

00000000 00000001 11111000 00000000 00000111 11100000 00000000 00001111

10000001 11111000 00000000 00000111 11100000 11111100 00000000 00000011

11110000 00000000 00000111 11000000 11111100 00011111 10000011 11110000

00000000 00001111 11000001 11111000 00000000 00000011 11100000 01111110

00001111 11000000 00000000 00111111 00000000 00000000 11111100 00000000

00000001 11110000 00111110 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00111111 11111111

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111

11111111 11100000 00000000 00000000 01111110 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000



・Transcend のフォトフレーム PF720 の Power ボタン

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111

11111111 11111111 11111111 11100000 00000000 00000000 00000000 00000000

00000001 11111000 00011111 10000011 11110000 01111110 00000111 11000000

11111100 00000000 00000011 11110000 00000000 00001111 11000000 11111100

00000000 00000011 11110000 00000000 00001111 11000000 00000000 00111111

10000000 00000000 01111110 00000000 00000001 11111000 00111111 00000011

11110000 00000000 00001111 11000001 11111000 00000000 00000111 11110000

01111110 00001111 11000001 11111000 00011111 10000011 11110000 01111110

00000000 00000001 11111100 00011111 10000000 00000000 01111110 00000000

00000001 11111000 00000000 00000011 11110000 00000000 00001111 11000000

00000000 00111111 00000000 00000000 11111110 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00011111 11111111

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111

11111111 11111000 00000000 00000000 00011111 10000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000



・カノープスの MTV シリーズ用のリモコン CRM-1 の Power ボタン

11111000 01111001 11100011 10001110 00001111 00011100 00000111 10000000

11100011 10000111 00011100 01110000 11100011 10000011 11000111 00011100

01110000 00000011 10000000 11110001 11000111 00000011 10001110 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 11100000 11110001 11000111

00011100 00001110 00111000 00000111 00000001 11000111 10001110 00111000

11110001 11000111 00000011 10001110 00111000 11110000 00000111 00000000

11100011 10001110 00000111 00011100 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000



・ビクター ホームシアターサウンドシステム TH-BA1 の Power ボタン

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111

11111111 11111111 11111100 00000000 00000000 00000000 00000000 00000000

11111000 00000000 00001111 11000000 00000000 01111100 00001111 10000011

11100000 01111100 00000000 00000111 11100000 11111000 00000000 00000111

11000000 00000000 00111110 00000000 00000011 11110000 00000000 00011111

00000011 11100000 00000000 00111111 00000111 11000001 11111000 00111110

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 01111100 00000000 00000011 11100000 00000000 00011111

00000111 11000000 11111000 00111110 00000000 00000001 11110000 01111110

00000000 00000011 11100000 00000000 00011111 00000000 00000000 11111000

00000000 00001111 11000001 11110000 00000000 00001111 10000011 11110000

01111100 00011111 10000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 01111110 00000000 00000011 11110000

00000000 00011111 00000011 11100000 11111000 00011111 00000000 00000001

11111000 00111110 00000000 00000001 11110000 00000000 00011111 10000000

00000000 11111100 00000000 00000111 11000000 11111000 00000000 00001111

11000001 11110000 01111110 00001111 10000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00111110 00000000

00000001 11110000 00000000 00011111 10000011 11100000 01111100 00011111

00000000 00000000 11111000 00111111 00000000 00000001 11110000 00000000

00001111 10000000 00000000 01111100 00000000 00000111 11100000 11111000

00000000 00000111 11000001 11111000 00111110 00001111 11000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000



・ユニデンの地デジチューナー DT-100HDMI の Power ボタン

11111111 11111111 11111111 00000000 00011111 00000011 11100000 00000000

00001111 11000000 11111000 00000000 00000011 11100000 01111110 00001111

11000000 11111000 00000000 00000011 11110000 01111110 00001111 11000000

00000000 00011111 00000011 11100000 01111110 00001111 11000000 11111000

00011111 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000011 11111111 11111111

11110000 00000000 11111000 00011111 00000000 00000000 01111110 00000111

11000000 00000000 00011111 00000011 11110000 00111110 00000111 11000000

00000000 00011111 00000011 11110000 00111110 00000000 00000000 11111000

00011111 00000011 11110000 01111110 00000111 11000000 11111000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00011111 11111111 11111111 10000000 00000111

11000000 11111100 00000000 00000011 11110000 00111110 00000000 00000000

11111100 00011111 10000011 11110000 00111110 00000000 00000000 11111100

00011111 10000011 11110000 00000000 00000111 11000000 11111100 00011111

10000001 11110000 00111110 00000111 11000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 11111111 11111111 11111110 00000000 00111110 00000111 11000000

00000000 00011111 10000001 11110000 00000000 00000111 11000000 11111100

00011111 10000001 11110000 00000000 00000111 11100000 11111100 00011111

10000000 00000000 00111110 00000111 11100000 11111100 00001111 10000001

11110000 00111110 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000



これらの中で、HDUSF、SDHSW-4SV、KT-H91DTV、PF720 はほぼ同形式に見えます。TH-BA1 はリーダ部は似ていますが、データがちょっと違うようです。CRM-1 はリーダ部も見つけられず、よく分かりません。

これらの中で、記録した信号を KURO-RS で送信しても相手が無反応なのが CRM-1 です。CRM-1 は KURO-RS では全く使えないようです。

また、以前作成したデコードプログラムを修正してもデコードできなかったのは、CRM-1 です。

TH-BA1 と DT-100HDMI は 16ビットのデータを繰り返し送っているようです。

プログラムは、NEC フォーマット と、TH-BA1 、DT-100HDMI の信号を作れるようにします。

written by sirius [KURO-RS] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2011年1月19日(水) 21:31

KURO-RS 用 daemon その3

赤外線信号とコマンドの対応は、設定ファイルの中に書くようにしました。こんな感じです。

--------------------ここから--------------------

[global]

device=/dev/ttyUSB0

ext_send_file=/tmp/kuro_rs_ext_send00.tmp

[macro]

base_dir=/usr/local/share/kuro_rs

ir_data=$base_dir/data

action_dir=$base_dir/bin

lt_h91dtv=$ir_data/Media_Player/LT-H91DTV

[1]

1=50ef8976,3,$th_ba1/Power

2=50ef49b6,2,$shdsw_4sv/Power

3=50efc936,1,$lt_h91dtv/Power

3=50efc936,3,$th_ba1/Digital-1

3=50efc936,2,$shdsw_4sv/1

4=50ef29d6,5,$action_dir/UpMediaPlayer.sh

4=50ef29d6,3,$th_ba1/Digital-2

4=50ef29d6,2,$shdsw_4sv/2

--------------------ここまで--------------------

設定をセクションで分けて、global セクションで全体の設定を指定します。

macro セクションは置き換えの定義をします。

数字のセクションがデータセクションでここに信号のハッシュ(データコード)とアクションタイプ、パラメータを指定します。

アクションは 1 〜 4 で対応するポートから赤外線信号の送出、5 がコマンドの実行、6 がセクションの切り替えが出来るようにします。

ひとつのボタンに複数のアクションをかけるようにします。

例えば、"3" のボタンでは、

・TH-BA1 の入力を Digital-1 に切り替える赤外線信号の送出。

・HDMIセレクタで入力を 1 番に切り替える赤外線信号の送出。

・メディアプレーヤーの電源を入れる赤外線信号の送出。

を行います。

現在設定ファイルを読み込む部分を作成中です。

written by sirius [KURO-RS] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2011年1月18日(火) 22:18

KURO-RS 用 daemon その2

KURO-RS を受信待ちにして受信した信号によってコマンドを実行する部分は、赤外線信号の解析がとりあえず出来たので動作はしています。

しかし、信号とコマンドのテーブルをソースに埋め込んでしまうと後からの修正が面倒になるのとほかの人が使えないので、信号とコマンドの対応は別ファイルにする予定です。どういった形式にするかを検討中です。コーディング量はこっちの方が多くなりそうな気がします。

あと、何度か試していると KURO-RS が応答しなくなってしまうことがあり、原因を探っています。

ある程度動くようになったら今度は、外部コマンドからの要求で赤外線信号を送ったり、受信したりする方法を考えます。

written by sirius [KURO-RS] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2011年1月17日(月) 21:57

KURO-RS 用 daemon その1

土曜日の夜に熱を出し寝込んでいました。



赤外線データの解析と平行して daemon プログラムを作成しています。まず、KURO-RS とやり取りする共通関数を製作しています。

次のような関数です。



・open_rs

KURO-RS デバイスを開きます。引数として、デバイスファイル、ブロックするかどうかが必要です。戻り値として KURO-RS 用構造体のポインタを返します。

・close_rs

KURO-RS デバイスを閉じます。引数として、KURO-RS 用構造体のポインタが必要です。

・send_command

KURO-RS へコマンドを送信します。引数として、KURO-RS 用構造体のポインタ、1文字のコマンドが必要です。

・send_data

リモコン信号を送信します。引数として、KURO-RS 用構造体のポインタ、送信ポート、送信データが必要です。

・recive_data

リモコン信号を受信します。引数として、KURO-RS 用構造体のポインタ、受信データ格納場所が必要です。

・send_irdata

リモコン信号を送信します。引数として、KURO-RS 用構造体のポインタ、送信ポート、送信データが必要です。

send_data との違いは、送信要求も含めてこの関数が行います。

・recive_irdata

リモコン信号を受信します。引数として、KURO-RS 用構造体のポインタ、受信データ格納場所が必要です。

recive_data との違いは、受信要求も含めてこの関数が行います。



上記関数は既に実装済みで、これらを使って送受信プログラムを作成してみました。

受信プログラム


----------------------ここから----------------------

#include <stdio.h>

#include <stdlib.h>

#include <signal.h>

#include <string.h>

#include <malloc.h>



#include "kuro_rs.h"

#include "kuro_rs_common.h"



int main(int argc,char *argv[])

{

    unsigned char buf[255];

    char *data_file = NULL;

    char *device = "/dev/ttyUSB0";

    FILE *fp;

    RS *rp;



    if( argc >= 2 && argv[1] && *argv[1] )

        data_file = argv[1];



    if( !data_file ) {

        printf("%s data file\n", argv[0]);

        exit(1);

    }



    if( !(rp = open_rs(device, 1)) ) {

        printf("device open error(%s)\n", device);

        exit(1);

    }

    if( recive_irdata(rp, buf) ) {

        printf("recive error\n");

        exit(1);

    }

    close_rs(rp);



    if( !(fp = fopen(data_file, "wb")) ) {

        printf("file open err(%s)\n", data_file);

        exit(1);

    } else {

        fwrite(buf, sizeof(unsigned char), REC_DATA_SIZE, fp);

        fclose(fp);

    }

    printf("Rec File : %s\n", data_file);

    exit(0);

}

----------------------ここまで----------------------


KURO-RS を開き、データを受信。最後に閉じます。



送信プログラム


----------------------ここから----------------------

#include <stdio.h>

#include <stdlib.h>

#include <signal.h>

#include <string.h>

#include <malloc.h>



#include "kuro_rs.h"

#include "kuro_rs_common.h"



int main(int argc,char *argv[])

{

    unsigned char buf[255];

    char *port = "1";

    char *data_file = NULL;

    char *device = "/dev/ttyUSB0";

    FILE *fp;

    RS *rp;



    if( argc >= 2 && argv[1] && *argv[1] )

        data_file = argv[1];

    if( argc >= 3 && argv[1] && *argv[2] )

        port = argv[2];



   if( !data_file ) {

        printf("%s data file [port]\n", argv[0]);

        exit(1);

    }



    if( !(fp = fopen(data_file, "rb")) ) {

        printf("file open err(%s)\n", data_file);

        exit(1);

    } else {

        fread(buf, sizeof(unsigned char), REC_DATA_SIZE, fp);

        fclose(fp);

    }



    if( !port || (*port < '1' || *port > '4') )

        *port = '1';



    if( !(rp = open_rs(device, 1)) ) {

        printf("device open error(%s)\n", device);

        exit(1);

    }

    if( send_irdata(rp, *port, buf) ) {

        printf("can't send data\n");

        exit(1);

    }

    close_rs(rp);

    printf("Send File : %s\n", data_file);



    exit(0);

}

----------------------ここまで----------------------


送信データを読み込んで、KURO-RS を開き、送信します。最後に KURO-RS を閉じます。



保存したファイルを指定して動かしてみました。リモコンデータの送信が行われました。

大丈夫なようです。

written by sirius [KURO-RS] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2011年1月15日(土) 18:50

サイズの eSATA鎌蔵3.5 RAID 壊しました

サイズの eSATA鎌蔵3.5 RAID を eSATA 接続で使っていると XP がブルースクリーンになったり書き込みエラーになったりするので、ファームウェアを書き換えようとして失敗し、壊してしまいました。中の HDD は無事ですが、パワーランプがつかないし、PC と接続してもうんともすんとも言いません。残念。

written by sirius [デジモノ] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2011年1月14日(金) 21:42

サイズの eSATA鎌蔵3.5 RAID SDB2UE

だいぶ前に サイズという会社の HDD ケース、SDB2UEを買って使っています。3.5inch の HDD を 2 台内蔵できるケースで、PC との接続は USB2.0 と eSATA で行います。ただし、eSATA 接続では、ポートマルチプライヤに対応していないとうまく認識してくれません。USB2.0 での接続は問題ありません。



ケースに内蔵した 2 台の HDD は、個別に使うことも、一台にまとめることも、RAID0 や RAID1 にすることが出来ます。ただ、残念なことに、RAID1 構成にした場合、HDD の故障を検知することは出来ないそうです。



このケースは RAID1 で使っています。故障の検知は出来ませんが、同時に 2 台に同じデータを書き込むケースとして使っています。

一度書き込んだらあまり更新しないデータの保存用です。今までは、1TB x 2 という構成で使ってきましたが、これを 2TB x 2 にしました。しばらく構成を変えていなかったので設定方法が分からず、はじめはうまく動きませんでした。構成を変えたときは裏のリセットスイッチを押さないとだめです。マニュアルもどこかにしまって見つからないので、サイズのホームページを探して PDF を見てやっと思い出しました。



eSATA 接続で約 1TB のデータをコピーするのに、FFC でベリファイをして 8 時間ほどかかりました。

written by sirius [デジモノ] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2011年1月13日(木) 22:12

赤外線信号の解析その2

HDUSF のリモコン信号の形式が NEC フォーマットのようなので、デコードするプログラムを考えてみました。

NEC フォーマットの詳細は、ルネサスのホームページを参照してください。


------------------------ここから------------------------

#include <stdio.h>

#include <stdlib.h>



#define bits(x) ((x) < 0 ? 0 : (buf[(x)/8]>>((x)%8))&0x1)

#define is_one(on, off)  ((on) >= 3 && (off) >= 10)

#define is_zero(on, off) ((on) >= 3 && (off) <= 9)



int main(int argc, char *argv[])

{

    FILE *fp;

    unsigned char buf[255];

    int i, on, off, count, leader, tailer;

    unsigned long code;



    if( argc != 2 ) exit(1);



    if( !(fp = fopen(argv[1], "rb")) ) exit(1);



    fread(buf, sizeof(unsigned char), 240, fp);

    fclose(fp);



    printf("%-14s ", argv[1]);

    on = off = code = count = leader = tailer = 0;

    for( i = 0 ; i < 240*8; i++ ) {

        if( bits(i) && bits(i-1) ) on++;

        else if( !bits(i) && !bits(i-1) ) {

            off++;

            if( off > 90 ) {

                tailer = 1;

                break;

            }

        } else if( !bits(i) &&  bits(i-1) ) off = 1;

        else if(  bits(i) && !bits(i-1) ) {

            if( on > 20 && off > 10 )  leader = 1;

            else if( is_one(on, off) )  code = (code<<1) + 1,count++;

            else if( is_zero(on, off) ) code = (code<<1), count++;

            on = 1;

        }

    }

    printf("code = %-8lx(%d bit) %s-%s ", code, count,

                leader ? "true " : "false", tailer ? "true " : "false");

    if( count == 32 ) {

        if( ((code>>16) & 0xff) != (~(code>>24) & 0xff) )

            printf("Vender = 0x%04x ", (code>>16)&0xffff);

        else

            printf("Vender = 0x%02x ", (code>>24)&0xff);

        if( (code & 0xff) == (~(code>>8) & 0xff) )

            printf("Data = 0x%02x\n", (code>>8)&0xff);

        else

            printf("data error\n");

    } else

        printf("\n");

}

------------------------ここまで------------------------


コードが 32bit の場合、前半 16bit がカスタムコード、後半 16bit がデータコードになります。

カスタムコードは、16bit の場合と、8bit + 反転 8bit のケースと二つあります。カスタムコードがベンダーを表します。

データコードは、8bit + 反転 8bit となります。データのエラーチェックをすることが出来ます。



実行した結果は次のようになります。


HDUS_Power     code = 50ef817e(32 bit) true -true  Vender = 0x50ef Data = 0x81


同じボタンを何回か記録して試しましたが全て同じ結果となりました。これで押されたボタンを識別できそうです。

written by sirius [KURO-RS] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2011年1月12日(水) 22:11

赤外線信号の解析その1

KURO-RS で保存したリモコンのデータをビット列で表示したところ、先頭の 1 のビット列がリーダのようです。

リモコンの赤外線信号がどのようなフォーマットになっているか調べたところ、いくつかの種類があるようです。

その中で、HDUSF のリモコン信号は、NEC フォーマットといわれるもののようです。次のようなページが見つかりました。



赤外線リモコンの利用

赤外線リモコンの製作 送信側



その他のフォーマットとしては、NEC フォーマットに似た SONY フォーマットと、マンチェスター符号化を利用した PHILIPS フォーマットがあるようです。上の二つのサイトの説明は NEC フォーマットのようです。詳しい形式については参考サイトを見てください。



同じビットが何個連続するかを表示するプログラムをつくり、実行してみました。




----------------------ここから----------------------

#include <stdio.h>

#include <stdlib.h>



#define bits(x) ((x) < 0 ? 0 : (buf[(x)/8]>>((x)%8))&0x1)

#define max(x, y) (((x) > (y)) ? (x) : (y))



int main(int argc, char *argv[])

{

    FILE *fp;

    unsigned char buf[255];

    int i, max_on, max_off, on, off, count;



    if( argc != 2 ) exit(1);



    if( !(fp = fopen(argv[1], "rb")) ) exit(1);



    fread(buf, sizeof(unsigned char), 240, fp);



    max_on = max_off = on = off = count = 0;

    for( i = 0; i < 240*8; i++ ) {

        if( bits(i) ) {

            if( bits(i-1) ) on++;

            else {

                if( i ) {

                    count++;

                    printf("%-3d, " , off);

                    if( (count % 8) == 7 ) printf("\n");

                } else count--;

                max_off = max(max_off, off);

                on = 1;

            }

        } else {

            if( bits(i-1) ) {

                count++;

                printf("%-3d, ", on);

                if( (count % 8) == 7 ) printf("\n");

                max_on = max(max_on, on);

                off = 1;

            } else off++;

        }

    }

    if( bits(i-2) == bits(i-1) ) {

        if( bits(i-1) ) {

             printf("%-3d\n", on);

             max_on = max(max_on, on);

        } else {

             printf("%-3d\n", off);

            max_off = max(max_off, off);

        }

    }

    printf("max on bit %d, off bit %d\n", max_on, max_off);

}



----------------------ここまで----------------------




実行した結果

91 , 45 , 6 , 5 , 6 , 17 , 6 , 5 ,

6 , 17 , 5 , 6 , 6 , 5 , 6 , 6 ,

5 , 6 , 5 , 17 , 6 , 17 , 6 , 16 ,

6 , 6 , 5 , 17 , 6 , 17 , 5 , 17 ,

6 , 17 , 5 , 17 , 6 , 6 , 5 , 6 ,

6 , 5 , 6 , 5 , 6 , 6 , 5 , 6 ,

6 , 16 , 6 , 6 , 5 , 17 , 6 , 17 ,

5 , 17 , 6 , 17 , 6 , 16 , 6 , 17 ,

6 , 5 , 6 , 388, 90 , 23 , 6 , 719

max on bit 91, off bit 719



最初のビットの並びは、1 が 91 個、次が 0 が 45 個です。KURO-RS は 0.1ms 毎にサンプリングするので、HIGH が 9ms、LOW が 4.5ms のリーダ部とぴったりマッチします。



データは、



1 -- 0.56 ms の HIGH 1.69 ms の LOW

0 -- 0.56 ms の HIGH 0.56 ms の LOW



となるそうです。また、データの最後には 0.56ms の HIGH があります。つまり、リーダ部以外では 0.56ms 以上の HIGH はこないということです。カウントした結果では、1 の連続は、5 〜 6 個、0 の連続が 5 〜 6 または 16 〜 17 個なのでこれもぴったり合います。

上の実行結果を色分けしてみます。リーダ部を赤、データ部を青、データの最後を緑色で表示しています。

91 , 45 , 6 , 5 , 6 , 17 , 6 , 5 ,

6 , 17 , 5 , 6 , 6 , 5 , 6 , 6 ,

5 , 6 , 5 , 17 , 6 , 17 , 6 , 16 ,

6 , 6 , 5 , 17 , 6 , 17 , 5 , 17 ,

6 , 17 , 5 , 17 , 6 , 6 , 5 , 6 ,

6 , 5 , 6 , 5 , 6 , 6 , 5 , 6 ,

6 , 16 , 6 , 6 , 5 , 17 , 6 , 17 ,

5 , 17 , 6 , 17 , 6 , 16 , 6 , 17 ,

6 , 5 ,
6 , 388, 90 , 23 , 6 , 719



データ部の 1 の連続 + 0 の連続のペアは 32 個です。リモコンのデータも 32bit だそうなのでこれもぴったりと合います。

これをもとにして信号をデコードできそうです。

written by sirius [KURO-RS] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2011年1月11日(火) 20:50

KURO-RS 用 daemo プログラムの作成

玄箱で KURO-RS が使えることが分かったので、サービスとして動き、リモコンでコントロールできるようなソフトを探してみました。しかし、自分の利用に合うようなものが見つからなかったので自分で作ってみることにしました。



自分が欲しい機能は、



1、登録しているリモコンのボタンで玄箱をコントロールする。

2、登録しているリモコンのボタンで KURO-RS から他の機器へリモコンの信号が送れる。

    このときボタンひとつで複数の機器へそれぞれリモコン信号を送れるようにする。

3、daemon として動き、daemon が動いていても、外部コマンドからの要求でリモコン信号の送出や学習が出来る。

4、KURO-RS とやり取りする標準的な関数群を作成し、再利用できるようにする。



リモコン信号の保存と送信は付属のソースをコンパイルして出来ますが、同時使用は当然出来ないでしょう。

また送られてきたリモコン信号と登録されている信号の比較をどうするかも考えないといけません。



まず、リモコンの信号と KURO-RS(PC-OPRS1) について検索してみると次のようなページにたどり着きました。



[PC-OP-RS1]SONYフォーマットを合成する(Perlで)

赤外線リモコンを Linux からコントロール



なるほど、KURO-RS は送られてきた信号 240 バイト分をそのまま記録してそのまま送出しているだけのようです。

この信号をちゃんとデコードできればいいのか。



まず、自分なりに保存したリモコンの信号を解析してみることにしました。

保存したデータをビット列で表示するプログラムを作成しました。

-------------------ここから-------------------


#include <stdio.h>

#include <stdlib.h>



int main(int argc, char *argv[])

{

    FILE *fp;

    int i, j;

    int msb, byte;

    unsigned char buf[255], c;



    if( argc != 3 ) exit(1);



    msb = byte = 0;

    if( *(argv[2]) == '1' ) msb = 1;

    if( *(argv[2]+1) == '1' ) byte = 1;



    if( !(fp = fopen(argv[1], "rb")) ) exit(1);



    fread(buf, sizeof(unsigned char), 240, fp);



    for( i = 0; i < 240; i++ ) {

        if( byte ) {

            if( i % 2 ) c = buf[i-1];

            else        c = buf[i+1];

        } else c = buf[i];

        for( j = 0; j < 8; j++ ) {

            if( msb ) printf("%d", (c>>j) &0x1);

            else      printf("%d", (c>>(7-j)) &0x1);

        }

        if( (i % 8) == 7 ) printf("\n");

        else               printf(" ");

    }

    printf("\n");

}


-------------------ここまで-------------------

最初の引数がリモコン信号を保存したファイル名、次の引数の最初の文字が最上位ビットの位置、次の文字がバイトスワップするかどうかを指定します。



PC 用の USB 接続地デジチューナー HDUSF のリモコンが余っていたので、この電源ボタンの信号を保存し、ビット列で表示してみました。

$ dump Power 00

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111

11111111 11111111 11111111 00000111 00000000 00000000 00000000 00000000

00000000 00111111 11111000 00000001 00000000 11111100 11100000 00000111

00000000 11110000 10000001 00011111 11111100 11000000 00000111 00111110

00000000 10000000 00011111 00000000 11000000 00001111 00000000 11110000

00000011 00011111 00000000 11000000 00001111 00000000 11100000 00000011

00000000 11111000 00000001 00000000 01111100 00000000 00000000 00111111

11110000 10000001 00011111 11111100 11100000 00000111 00111110 11110000

00000011 00000000 11111100 11000000 00000111 00000000 11110000 00000011

00000000 11111000 00000000 00000000 01111110 00000000 00000000 00111111

00000000 11000000 00001111 00000000 11100000 00000111 00111111 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 11111100

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111

11111111 11111111 00001111 00000000 00000000 11111000 00000001 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000



$ dump Power 10

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111

11111111 11111111 11111111 11100000 00000000 00000000 00000000 00000000

00000000 11111100 00011111 10000000 00000000 00111111 00000111 11100000

00000000 00001111 10000001 11111000 00111111 00000011 11100000 01111100

00000000 00000001 11111000 00000000 00000011 11110000 00000000 00001111

11000000 11111000 00000000 00000011 11110000 00000000 00000111 11000000

00000000 00011111 10000000 00000000 00111110 00000000 00000000 11111100

00001111 10000001 11111000 00111111 00000111 11100000 01111100 00001111

11000000 00000000 00111111 00000011 11100000 00000000 00001111 11000000

00000000 00011111 00000000 00000000 01111110 00000000 00000000 11111100

00000000 00000011 11110000 00000000 00000111 11100000 11111100 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00111111

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111

11111111 11111111 11110000 00000000 00000000 00011111 10000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000



$ dump Power 01

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111

11111111 11111111 00000111 11111111 00000000 00000000 00000000 00000000

00111111 00000000 00000001 11111000 11111100 00000000 00000111 11100000

11110000 00000000 00011111 10000001 11000000 11111100 00111110 00000111

10000000 00000000 00000000 00011111 00001111 11000000 11110000 00000000

00011111 00000011 11000000 00000000 00000000 00001111 00000011 11100000

11111000 00000000 00000000 00000001 00000000 01111100 00111111 00000000

10000001 11110000 11111100 00011111 00000111 11100000 11110000 00111110

00000000 00000011 11000000 11111100 00000000 00000111 00000011 11110000

11111000 00000000 00000000 00000000 00000000 01111110 00111111 00000000

11000000 00000000 00000000 00001111 00000111 11100000 00000000 00111111

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 11111100 00000000

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111

11111111 11111111 00000000 00001111 11111000 00000000 00000000 00000001

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000



$ dump Power 11

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111

11111111 11111111 11100000 11111111 00000000 00000000 00000000 00000000

11111100 00000000 10000000 00011111 00111111 00000000 11100000 00000111

00001111 00000000 11111000 10000001 00000011 00111111 01111100 11100000

00000001 00000000 00000000 11111000 11110000 00000011 00001111 00000000

11111000 11000000 00000011 00000000 00000000 11110000 11000000 00000111

00011111 00000000 00000000 10000000 00000000 00111110 11111100 00000000

10000001 00001111 00111111 11111000 11100000 00000111 00001111 01111100

00000000 11000000 00000011 00111111 00000000 11100000 11000000 00001111

00011111 00000000 00000000 00000000 00000000 01111110 11111100 00000000

00000011 00000000 00000000 11110000 11100000 00000111 00000000 11111100

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00111111 00000000

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111

11111111 11111111 00000000 11110000 00011111 00000000 00000000 10000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000



どうやら MSB でバイトスワップもしなくていいようです。そのままやればいいんですね。

written by sirius [KURO-RS] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

<< 前のページ

Sirius -旧ブログ、更新されません-

MySketch 2.7.2 written by 夕雨