私はRFID-230-2カードリーダー用のpythonドライバを書こうとしています。 ドキュメントは、デバイスと通信するために、一つは以下のフォーマットでパケットを作成しなければならない、と言うとおりにCMD
を設定しなければならないブロックデータを見つけようとしています
|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リーダーからデータを読み取ることができるようにするために、上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を待っresp = ser.read()
でプログラムを停止行っているものです。 誰かがintrestされている場合、これは完全な文書です。 http://www.tetagroup.net/products/pdf/rft230.pdf
ドキュメントはRequest Card Parameter
+ Card Series No.
を提供する必要がカードを読み取るために、あなたがカードを取得することができ、言うようにAnti Collideコマンドの系列番号はデータを返します。しかし、問題は、どのようにカードを選択するために側の要求カードのparamteresに沿ってそのカードシリーズを置くことができますか? カードシリーズは4バイトのデータではありません。私はこれを試みたが、
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