Python 3.x UART不发送字节
我正试图在Raspberry PI 3 b+上编写测试代码,以便通过UART发送数据,但我无法接收回我发送的数据。Raspberry通过UART模块连接到我的笔记本电脑,所以我可以在Putty中看到结果。谁能告诉我我做错了什么 我检查了端口isOpen是否返回True,msg=b'Hello'返回Hello show Hello,但没有收到字节。发送单个字节时也未检测到字节。擦除超时表示已达到超时 编辑:很少测试端口是否正常工作Python 3.x UART不发送字节,python-3.x,raspberry-pi,uart,Python 3.x,Raspberry Pi,Uart,我正试图在Raspberry PI 3 b+上编写测试代码,以便通过UART发送数据,但我无法接收回我发送的数据。Raspberry通过UART模块连接到我的笔记本电脑,所以我可以在Putty中看到结果。谁能告诉我我做错了什么 我检查了端口isOpen是否返回True,msg=b'Hello'返回Hello show Hello,但没有收到字节。发送单个字节时也未检测到字节。擦除超时表示已达到超时 编辑:很少测试端口是否正常工作 from __future__ import print_func
from __future__ import print_function
import serial
test_string = "Testing 1 2 3 4".encode('utf-8')
#test_string = b"Testing 1 2 3 4" ### Will also work
port_list = ["/dev/serial0", "/dev/ttyS0"]
for port in port_list:
try:
serialPort = serial.Serial(port, 9600, timeout = 2)
serialPort.flushInput()
serialPort.flushOutput()
print("Opened port", port, "for testing:")
bytes_sent = serialPort.write(test_string)
print ("Sent", bytes_sent, "bytes")
loopback = serialPort.read(bytes_sent)
if loopback == test_string:
print ("Received", len(loopback), "valid bytes, Serial port", port, "working \n")
else:
print ("Received incorrect data", loopback, "over Serial port", port, "loopback\n")
serialPort.close()
except IOError:
print ("Failed at", port, "\n")
这给了我tty0工作不正常的信息,但也完全没有得到关于serial0端口正确性的答案
import serial
import struct
import time
port = serial.Serial("/dev/ttyS0", baudrate=115200, timeout=2.0)
i = 0
while True:
msg = struct.pack('>HBBB', 3000, 243, 234, 254)
port.write(msg)
time.sleep(0.3)
bytesToRead = port.inWaiting()
print("Found {} bytes in serial".format(bytesToRead))
if bytesToRead == 5:
rcv = port.read(5)
# port.write('\r\nYou sent:' + repr(rcv))
for i in range(5):
print('\r {} - {}'.format(i, bytes(rcv[i])))
idCode = struct.pack('BB', rcv[0], rcv[1])
idCode = struct.unpack('>H', idCode)
idCode = idCode[0]
# value = struct.unpack_from('HBBB', decode)
i += 1
if i == 4:
exit()
预期成果:
在串行数据中找到5个字节
(索引)-(该索引处的字节)
得到:
在串行数据中找到0个字节
解决了。这只是接线的问题。
如果将来有人想运行这样的测试,他们必须记住连接RX和TX线路。或者,如果它与笔记本电脑连接,则最好创建负责在其上通信的代码(但不是ttyS0或Serial0,端口应设置为正确的COM,例如“COM3”)。这只是接线的问题。
如果将来有人想运行这样的测试,他们必须记住连接RX和TX线路。或者,如果它与笔记本电脑连接,则最好创建负责其通信的代码(但不是ttyS0或Serial0,而是将端口设置为正确的COM,例如“COM3”)是否禁用内核输出并使用
raspi配置启用端口?看一看。我的cmdline现在丢失了,看起来是这样的:dwc_otg.lpm_enable=0 console=ttyam0115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 lifter=deadline rootwait,在config.txt中,只有enable\u uart=1最安全的方法是运行sudo raspi config
并启用菜单上的串行端口。然后重新启动并做一个连接RX和TX的环回测试,看看你在端口上写的东西是否有回音我在RPI上编译时Putty控制台上有回音,但环回是空的我看到了。。。你能解释一下你是如何连接你的端口的吗?你有没有禁用内核输出并用raspi config
启用端口?看一看。我的cmdline现在丢失了,看起来是这样的:dwc_otg.lpm_enable=0 console=ttyam0115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 lifter=deadline rootwait,在config.txt中,只有enable\u uart=1最安全的方法是运行sudo raspi config
并启用菜单上的串行端口。然后重新启动并做一个连接RX和TX的环回测试,看看你在端口上写的东西是否有回音我在RPI上编译时Putty控制台上有回音,但环回是空的我看到了。。。你能解释一下你是如何连接你的端口的吗?