バイナリーコマンド¶
廃止予定: このドキュメントはこ使用されていたDAC閾値設定コマンドです。現在はテキストプロトコルが推奨されます。詳細は テキストプロトコル仕様書 を参照。
概要¶
「バイナリーコマンド」は、3バイトの固定長コマンド形式でDAC(デジタル・アナログ・コンバーター)にスレッショルドを設定するコマンドです。
コマンド形式¶
[Channel] [Data1] [Data2]
1-3 0x00 0x00
0xFE 0xFF
| バイト | 説明 | 範囲 |
|---|---|---|
| 1 | DAC チャネル | 1-3 |
| 2 | 上位データ | 0x00-0xFE (0xFF は予約) |
| 3 | 下位データ | 0x00-0xFF |
DACエンコーディング¶
DACに送るスレッショルド値は、ユーザー側で2バイトに分割してエンコードする必要があります。 次のエンコード式で、上位6ビットと下位8ビットに分割してください。
エンコード式¶
byte1 = 0x10 + (threshold >> 6) // 上位6ビット
byte2 = (threshold << 2) & 0xFF // 下位8ビット
例¶
| 閾値 | byte1 | byte2 | 用途 |
|---|---|---|---|
| 0 | 0x10 | 0x00 | 最高感度 |
| 500 | 0x17 | 0xD0 | 標準 |
| 1023 | 0x20 | 0xFC | 最低感度 |
デコード(逆算)¶
threshold = ((byte1 - 0x10) << 6) | (byte2 >> 2)
レスポンス¶
正常な受信時¶
[channel (10進)]
[data1 (2進)]
[data2 (2進)]
例: コマンド 01 17 D0 → レスポンス
1
10111
11010000
エラー時¶
dame
条件: data1 == 0xFF の場合
実装例¶
Python¶
import serial, struct, time
device = serial.Serial('/dev/ttyUSB0', 115200, timeout=1)
time.sleep(2)
# DAC 閾値 500 を channel 1 に設定
threshold = 500
byte1 = 0x10 + (threshold >> 6)
byte2 = (threshold << 2) & 0xFF
device.write(struct.pack('BBB', 1, byte1, byte2))
response = [device.readline().decode().strip() for _ in range(3)]
print(response)
device.close()
Bash¶
# threshold=500 → byte1=0x17, byte2=0xD0
echo -ne '\x01\x17\xD0' > /dev/ttyUSB0
timeout 1 cat < /dev/ttyUSB0
参考¶
- テキストプロトコル - 推奨されるテキスト形式
- ビルドコマンド:
task v0:build(バイナリプロトコル使用)またはtask v1:buildと-DENABLE_TEXT_COMMAND=0フラグ