问题描述
我试图在PC和传感器设备之间建立SPI通信。为此,我使用了TCP / IP到SPI转换器。该项目的这一侧已经在工作。我可以通过TCP / IP向转换器发送一些内容,并且它可以完成其工作。
那么问题出在哪里呢?我使用套接字库。在Python 3.8中做TCP / IP端:
import socket,sys
TCP_IP = '192.168.100.100'
TCP_PORT = 1003
BUFFER_SIZE = 1024
s = socket.socket()
try:
s.connect((TCP_IP,TCP_PORT))
except socket.error as mag:
print (" Socket Erroer: " + str(mag))
s.send(b'\x8000')
data = s.recv(BUFFER_SIZE)
print(data)
我想做的是发送(以 binary (二进制)格式) 1000 0000 0000 0000 (十六进制为8000)。 但是python将\ x8000拆分为\ x80 \ x00,然后将其作为两个8位字作为1000 0000发送,然后将其作为第二个包0000 0000发送。但是转换器将其作为16位字发送,否则将其填充。 SPI信号是 0000 0000 1000 0000 0000 0000 0000 0000,这很糟糕,没有前8位,我无法读取单个寄存器。
有没有办法将/ x8000作为一个16位字发送? 我还想了解更多有关数据类型(或其任何内容)的信息 b'什么是'那是什么?是什么?
感谢您阅读本文!我愿意接受所有建议和批评。希望您能帮助我,谢谢您的一切尝试!
解决方法
您可以使用Python raw socket在单个数据包中包含16位并发送。
b'something'
是python表示法,默认情况下使用utf-8
将字符串“ something”转换为二进制形式(字节)。
例如,如果您编码a=b'Hello'
,则a
将具有\x48\x65\x6C\x6C\x6F
。