UART 不发送字节
UART send no bytes
我正在尝试编写测试代码以在我的 Raspberry PI 3 b+ 上通过 UART 发送数据,但我无法收到已发送的数据。 Raspberry 通过 UART 模块连接到我的笔记本电脑,所以我可以在 Putty 中看到结果。谁能告诉我我做错了什么?
我检查了端口是否打开并返回了 True ,返回的 msg=b'Hello' Hello 显示了 hello ,但没有收到字节。发送单个字节也没有检测到字节。擦除超时显示已到。
编辑:几乎没有测试端口是否正常工作
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()
预期结果:
Found 5 bytes in serial
(index) - (byte at that index)
得到:
Found 0 bytes in serial
已解决。这只是接线问题。
如果将来有人想 运行 那样测试 - 他们必须记住将 RX 连接到 TX 线。或者,如果它与笔记本电脑连接,则最好创建负责在其上进行通信的代码(但端口应设置为正确的 COM,而不是 ttyS0 或 Serial0,例如 "COM3")
我正在尝试编写测试代码以在我的 Raspberry PI 3 b+ 上通过 UART 发送数据,但我无法收到已发送的数据。 Raspberry 通过 UART 模块连接到我的笔记本电脑,所以我可以在 Putty 中看到结果。谁能告诉我我做错了什么?
我检查了端口是否打开并返回了 True ,返回的 msg=b'Hello' Hello 显示了 hello ,但没有收到字节。发送单个字节也没有检测到字节。擦除超时显示已到。
编辑:几乎没有测试端口是否正常工作
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()
预期结果:
Found 5 bytes in serial
(index) - (byte at that index)
得到:
Found 0 bytes in serial
已解决。这只是接线问题。 如果将来有人想 运行 那样测试 - 他们必须记住将 RX 连接到 TX 线。或者,如果它与笔记本电脑连接,则最好创建负责在其上进行通信的代码(但端口应设置为正确的 COM,而不是 ttyS0 或 Serial0,例如 "COM3")