我想爲RFID-230-2讀卡器寫一個python驅動程序。 作爲文件說,爲了與該設備進行通信,人們必須使在下面的格式的數據包:試圖找出塊數據
|STX|ADDR|LEN|CMD/STU|DATA|BCC|
STX: Communication start character, 1 byte, 0x02
ADDR: Device Addr, 1 byte, 0 can be used in any addr
LEN: Data length, 1 byte, data length of CMD/STU+DATA
CMD/STU: Command byte (Host->Reader) or Status byte (Reader->Host), 1byte
DATA: Data information, byte is not specified. Can be not existed
BCC: Section checking character, 1 byte, the XOR value of all the bytes except STX, BCC
爲了能夠讀取來自RFID讀取器的數據,對具有設置CMD
到0x38
並設置DATA
如下:
,但我一直無法弄清楚如何創建這樣的數據格式。 任何幫助將不勝感激。這是我迄今
STX = 0x02
REQUEST_FORMAT = 'bbbbbb'
def communicate(self, command, data):
address = 0x0
length = 1 + len(str(data)) + len(str(command))
bcc = address^length^command
i = struct.pack(REQUEST_FORMAT, STX, address, length, command, data, bcc)
ser = serial.Serial('/dev/ttyUSB0', 9600)
ser.write(i)
time.sleep(.1)
resp = ser.read()
程序停止了在resp = ser.read()
等待RESP。 如果有人感興趣,這是完整的文檔。 http://www.tetagroup.net/products/pdf/rft230.pdf
的文件說,爲了讀你必須提供Request Card Parameter
+ Card Series No.
可以拿到卡一卡的來自Anti Collide命令的序列號返回數據。但問題是,我怎麼能把這張牌系列沒有一邊請求卡paramteres選擇卡? 卡片序列號是4byte數據。我試過,但
communicate(0x33, [0x93, 1487824920])
File "main.py", line 21, in communicate
i = struct.pack('BBBB%sBB' % len(data), STX, address, length, command, *(data + [bcc]))
struct.error: ubyte format requires 0 <= number <= 255
1487824920的結果是:
a = binascii.hexlify(data)
card_series = int(a, 16)
'「\ x0A」'?如何檢測行/包結束? – dsgdfg