DLE EOT 1 のデコードに問題があり、ビット順序と先行ゼロの欠如を考えています
import serial
x = 1
while x:
time.sleep(3)
ser.write("\x10\x04\x01".encode())
bytesToRead = ser.inWaiting()
data = ser.read(bytesToRead)
while data:
print(data)
print(bin(int.from_bytes(data, byteorder="big")))
print(bin(data[0])[2:])
data = ""
したがって、これは準備完了およびオンライン状態のときに返されるものです。
b'\x16'
0b10110
10110
これは、ドアが開いているときに返されるものであり、'assume OFFLINE status' です。
b'\x1e'
0b11110
11110
それはどのように翻訳されますか?私は8ビットを返す必要はありませんか?
EPSON ESC マニュアルからの抜粋:
各ステータスは 1 バイトで構成され、値は 0xx1xx10b です。リアルタイム ステータスは、ビット 0、1、4、および 7 によって、ブロック データ内のデータ (Header – NUL) を除いて、他の送信データと区別できます。
ビット バイナリ ステータス |16 進数 |10 進数 ====+============================================ =+===+====== 0 | 0 | 固定 |00 |0 | --+-----+-------------------------------------------------------- --+----+-----+ 1 | 1 | 固定 |02 |2 | --+-----+-------------------------------------------------------- --+----+-----+ 2 | 0 | ドロワー キックアウト コネクタのピン 3 が LOW |00 |0 | | | 1 | ドロワー キックアウト コネクタのピン 3 が HIGH |04 |4 | --+-----+-------------------------------------------------------- ------+-----| 3 | 0 | オンライン |00 |0 | | | 1 | オフライン |08 |8 | --+-----+-------------------------------------------------------- ------+-----| 4 | 1 | 固定 |10 |16 | --+-----+-------------------------------------------------------- ------+-----| 5 | 0 | オンライン回復を待機していません |00 |0 | | | 1 | |20 |32 | オンライン回復を待機しています。 --+-----+-------------------------------------------------------- ------+-----| 6 | 0 | 給紙ボタンが押されていません |00 |0 | | | 1 | 給紙ボタンが押されています |04 |64 | --+-----+-------------------------------------------------------- ------+-----| 7 | 0 | 固定 |00 |0 | -------------------------------------------------- ------------