RFID使用Python套接字(低级命令)

时间:2017-12-07 19:37:41

标签: python python-2.7 sockets rfid low-level-io

SAAT-520Wireless-Communication-Programming-Development-Protocol我一直在尝试向我的RFID发送Lowlevel命令来获取设备信息。我正在使用wireshark来点击连接,它接缝很好,因为数据包似乎从我的PC到RFID设备,反之亦然。

但我无法在程序中看到任何响应或输出。在设备上注意我有响应命令,我不确定我和/或我可以在哪里使用命令响应。

Import socket

TCP_IP = '192.168.0.238'
TCP_PORT = 7086
BUFFER_SIZE = 20
MESSAGE = '0x55, 0x00~0xFF, 0x01, 0x00, 0x00~0xFF'

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
    s.connect((TCP_IP, TCP_PORT))
except:
    print ('failed' + TCP_IP, 'down')
s.sendall(MESSAGE)
data = s.recv(BUFFER_SIZE)
s.close()
print 'received', repr(data)

我不明白为什么我的计划没有回复。没有错误也没有程序成功。只是过程永远不会结束。

另请参阅附件中的命令注释。

系统信息查询命令(0x01H)

img1

命令响应

img2

1 个答案:

答案 0 :(得分:0)

(来自你的问题)

throw new MyException("Found issue for event " + (evt != null ? evt.getDeatil() : null));

您通过send发送数据,立即询问响应数据,然后关闭套接字。没有足够的时间来获得回复。为了测试,尝试在两者之间设置时间延迟。

s.sendall(MESSAGE)
data = s.recv(BUFFER_SIZE)
s.close()

您还可以等待传入的数据;

import time
s.sendall(MESSAGE)
time.sleep(5)
data = s.recv(BUFFER_SIZE)
print(data)
s.close()

如果我的缓冲区大小太小,我个人遇到了问题 - 我必须抓住超时异常来处理它。也许尝试增加缓冲区大小。

下面是我用于我的应用程序的实际代码;它是python 3.x,你必须稍微调整一下 - 但它对我有用。

import time
s.sendall(MESSAGE)
while data is None:
    data = s.recv(BUFFER_SIZE)
    print "No data, waiting...."
    time.sleep(0.5)

print "Data arrived"
incoming = data.decode('utf-8')
print incoming
# Process Data