0

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 |
-------------------------------------------------- ------------
4

1 に答える 1