Python 3.x UART不发送字节

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

我正试图在Raspberry PI 3 b+上编写测试代码,以便通过UART发送数据,但我无法接收回我发送的数据。Raspberry通过UART模块连接到我的笔记本电脑,所以我可以在Putty中看到结果。谁能告诉我我做错了什么

我检查了端口isOpen是否返回True,msg=b'Hello'返回Hello show 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()
预期成果:

在串行数据中找到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控制台上有回音,但环回是空的我看到了。。。你能解释一下你是如何连接你的端口的吗?