Skip to content

バイナリーコマンド

廃止予定: このドキュメントはこ使用されていた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 フラグ