gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 12:08:50 24 4
gpt4 key购买 nike

SAAT-520Wireless-Communication-Programming-Development-Protocol我一直在尝试向我的RFID发送低级命令以获取设备信息。我使用的是Wireshark来建立连接,因为数据包似乎从我的PC传到RFID设备,反之亦然,因此接缝很好。

但是我在程序上看不到任何响应或输出。在设备说明中,我有response命令,我不确定是否应该和/或在哪里可以使用命令response。

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)

命令回应

最佳答案

(根据您的问题)

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

您正在通过send发送数据,立即询问响应数据,然后关闭套接字。没有足够的时间让您得到回应。为了进行测试,请尝试在两者之间放置一个时间延迟。
import time
s.sendall(MESSAGE)
time.sleep(5)
data = s.recv(BUFFER_SIZE)
print(data)
s.close()

您也可以等待传入的数据。
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

如果我的缓冲区大小太小,我个人确实有一个问题-我必须捕获超时异常来处理它。也许尝试增加缓冲区大小。

以下是与我在应用程序中使用的实际代码接近的内容;它是python 3.x,您需要对其进行一些调整-但它对我有用。
            try:
data = s.recv(buf_len)
if data is not None and len(data) > 0:
while True:
new_data = s.recv(buf_len)
if new_data is None or len(new_data) == 0:
break
data = data + new_data

except socket.timeout:
if data is not None and self.callback is not None:
logger.debug(f"Received packet: {data}")

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

关于python - 使用Python套接字的RFID(低级命令),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47702548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com