Skip to content
Branch: master
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
.gitkeep
README.md

README.md

RPi-IREXコマンド仕様

概要

RPi-IREXは、UARTまたはUSBで制御することができます。
USB接続ではCDCとして動作しますので、USB接続とUART接続(GPIO 40PIN接続)どちらも同様にシリアルデータ通信で制御することができます。

USBディスクリプタ

項目 備考
Vendor ID 0x0584 RATOC Systems, Inc.
Product ID 0x007A RPi-IREX
Manufacturer String RATOC Systems, Inc. -
Product String RPi-IREX IR Remote Controller -

UART設定

項目
転送速度 115200bps
データビット 8bit
パリティ なし
ストップビット 1bit
フロー制御 なし

通信フォーマット

通信するデータパケットは、下記のように'コマンドデータ'を'SYN'で挟んだフォーマットで行います。

SYN ---------- コマンドデータ ---------- SYN
項目 バイト数
SYN 1 0x7E
コマンドデータ 可変 コマンドフォーマットに従う
SYN 1 0x7E

コマンドデータフォーマット

コマンドデータのフォーマットは、ヘッダー/カウント/ペイロード/CRCで構成されます。

ヘッダー カウント ペイロード CRC
項目 バイト数
ヘッダー 1 0xAA
カウント 1
1
ペイロードのバイト数 Hiバイト
ペイロードのバイト数 Loバイト
ペイロード 可変 各コマンドに従う
CRC 1 ペイロードのCRC

※ ペイロードのCRCは下記の計算式で算出します

CRC = x^8 + x^7 + x^2 + 1

通信フォーマット例

[送信] ファームウェアバージョン取得コマンドデータ

SYN ヘッダー カウント(Hi) カウント(Lo) ペイロード CRC SYN
0x7E 0xAA 0x00 0x01 0xD0 0x3E 0x7E

[受信] ファームウェアバージョン取得応答データ(0x01 0x00の場合)

SYN ヘッダー カウント(Hi) カウント(Lo) ペイロード CRC SYN
0x7E 0xAA 0x00 0x04 0xD0 0x00 0x01 0x00 0xD8 0x7E

コマンドデータのエスケープシーケンス

コマンドデータ(ヘッダー/カウント/ペイロード/CRC)の中に0x7E(SYN)または0x7D(ESC)が含まれている場合、下記のような処理をする必要があります。

  • 送信時
    送信するコマンドデータの中に0x7E(SYN)または0x7D(ESC)が含まれている場合、0x7E(SYN)または0x7D(ESC)の前に0x7D(ESC)を挿入します。 0x7E(SYN)または0x7D(ESC)を0x20で排他的論理和した値を0x7E(SYN)または0x7D(ESC)と入れ替えます。
    ペイロードサイズやCRCの計算は、処理前の値で計算します。

  • 受信時
    受信したコマンドデータの中に0x7D(ESC)が含まれている場合、0x7D(ESC)の次の1バイトを0x20で排他的論理和した値で0x7D(ESC)と次の1バイトを入れ替えます。
    ペイロードサイズやCRCの計算は、処理後の値で計算します。

通信フォーマット例
[送信] 赤外線信号送出コマンド(赤外線信号データが0x7Dの場合)

SYN ヘッダー カウント(Hi) カウント(Lo) ペイロード CRC SYN
送信データ 0x7E 0xAA 0x00 0x05 0x01 0x00 0x00 0x01 0x7E 0x0A 0x7E
処理後 0x7E 0xAA 0x00 0x05 0x01 0x00 0x00 0x01 0x7D 0x5E 0x0A 0x7E

コマンドデータに0x7Eが含まれますので、0x7D0x7Eの前に挿入します。 0x7E0x20で排他的論理和した値が0x5Eになりますので、0x7E0x5Eに入れ替えます。
処理後のデータを送信します。

[受信] ファームウェアバージョン取得応答データ(0x01 0x7Eの場合)

SYN ヘッダー カウント(Hi) カウント(Lo) ペイロード CRC SYN
受信データ 0x7E 0xAA 0x00 0x04 0xD0 0x00 0x01 0x7D 0x5E 0xA5 0x7E
処理後 0x7E 0xAA 0x00 0x04 0xD0 0x00 0x01 0x7E 0xA5 0x7E

コマンドデータに0x7Dが含まれていますので、0x7Dの次の1バイトの0x5E0x20で排他的論理和します。
計算値が0x7Eになりますので、0x7D 0x5E0x7Eで入れ替えます。
処理後のデータを受信データとして扱います。


コマンド一覧

コマンド名 コマンドコード
赤外線信号送出 0x01
赤外線信号学習 0x02
赤外線信号学習中断 0x03
ファームウェアバージョン取得 0xD0

共通終了コード

終了コード 説明
0x09 CRCエラー
0x0A マジックコードエラー
0x0B ペイロードサイズエラー
0x0C 送信コマンドエラー
0x0D パラメータエラー

コマンド説明

赤外線信号送出コマンド(0x01)

赤外線信号を送出します。
赤外線信号学習コマンド(0x02)で受信した赤外線データを送信します。

コマンドデータ

offset 内容
0 赤外線信号送出コマンドコード 0x01
1 赤外線フォーマットタイプ SONY : 0x01
その他 : 0x00
2 赤外線送信データバイト数 Hiバイト 0xXX
3 赤外線送信データバイト数 Loバイト 0xXX
4 1バイト目の赤外線送信データ Data 0
5 2バイト目の赤外線送信データ Data 1
... ... ...
N+4 N+1バイト目の赤外線送信データ Data N

応答データ

offset 内容 備考
0 応答コード 0x01 赤外線信号送出コマンドコード
1 終了コード 正常終了 : 0x00 その他エラー時は共通終了コード参照

赤外線信号学習コマンド(0x02)

赤外線信号の学習を開始します。
RPi-IREX基板上の赤外線受光部に赤外線信号が入力すると赤外線フォーマットタイプ・赤外線データ数・赤外線データを取得します。
赤外線データの最大値は2048バイトです。
15秒間入力がなければ、タイムアウトで学習モードを終了します。

コマンドデータ

offset 内容
0 赤外線信号学習コマンドコード 0x02
1 学習モード 通常モード : 0x00

応答データ

offset 内容 備考
0 応答コード 0x02 赤外線信号学習コマンドコード
1 終了コード 学習正常終了 : 0x02
15秒タイムアウト : 0x03
オーバーフロー : 0x04
その他エラー時は共通終了コード参照
2 赤外線フォーマットタイプ SONY : 0x01
その他 : 0x00
3 赤外線送信データバイト数 Hiバイト 0xXX
4 赤外線送信データバイト数 Loバイト 0xXX
5 1バイト目の赤外線送信データ Data 0
6 2バイト目の赤外線送信データ Data 1
... ... ...
N+5 N+1バイト目の赤外線送信データ Data N 最大2048バイト

赤外線信号学習中断コマンド(0x03)

赤外線信号の学習モードを中断します。
学習モードではないときに、このコマンドを実行すると中断エラーになります。

コマンドデータ

offset 内容
0 赤外線信号学習中断コマンドコード 0x03

応答データ

offset 内容 備考
0 応答コード 0x03 赤外線信号学習中断コマンドコード
1 終了コード 正常終了 : 0x00
中断エラー : 0x01
その他エラー時は共通終了コード参照

ファームウェアバージョン取得コマンド(0xD0)

ファームウェアのバージョンを取得します。

コマンドデータ

offset 内容
0 ファームウェアバージョン取得コマンドコード 0xD0

応答データ

offset 内容 備考
0 応答コード 0xD0 ファームウェアバージョン取得コマンドコード
1 終了コード 正常終了 : 0x00 その他エラー時は共通終了コード参照
2 メジャーバージョン 0xXX
3 マイナーバージョン 0xXX
You can’t perform that action at this time.