我有一个设备(Pololu Wixel),我正试图通过USB串行连接与之通信。超终端工作很好,但我正尝试使用Python来实现更大的灵活性。我可以向设备发送命令,但当我尝试接收时,得到的只是刚刚发送的命令。但是,如果我打开超级终端,我将在那里收到对脚本发送的命令的回复。我的代码在下面。我有点不知所措,看来这应该是相当直接的。我很感激你的帮助。

import serial
import time

'''
Go through 256 COM ports and try to open them.
'ser' will be the highest port number. Fix this later.
'''

for i in range(256):

    currentPort = "COM" + str(i+1)

    try:
        ser = serial.Serial(currentPort,baudrate=115200,timeout=5)
        print("Success!!")
        print(ser.name)
    except:
        pass

print(ser.isOpen())
str = "batt"    #Command to request battery levels.
ser.write(str.encode())

x = ser.inWaiting()
print(x)

while ser.inWaiting() > 0:
    out = ser.readline()
    print(out.decode())

最佳答案

在找到活动端口后添加中断,
尝试将不同的eol值传递给readline()、“\r”或“\r\n”。

关于python - 无法使用PySerial接收回复,但 super 终端有效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28476467/

10-11 07:38