8

我已经阅读了文档,但似乎无法找到一个直接的答案。我有一个连接到计算机的调制解调器正在使用的所有 COM 端口的列表。从这个列表中,我尝试打开它,向它发送一个命令,如果它回复任何内容,则将其添加到另一个列表中。我不完全确定我是否正确使用了 pyserial 的读写功能。

i=0
for modem in PortList:
    for port in modem:
        try:
            ser = serial.Serial(port, 9600, timeout=1)
            ser.close()
            ser.open()
            ser.write("ati")
            time.sleep(3)
            print ser.read(64)
            if ser.read(64) is not '':
                print port
        except serial.SerialException:
            continue
        i+=1

我没有从 ser.read() 中得到任何东西。我总是得到空白字符串。

4

2 回答 2

11

一段与 python 一起工作以读取 rs232 的代码,以防万一其他人需要它

ser = serial.Serial('/dev/tty.usbserial', 9600, timeout=0.5)
ser.write('*99C\r\n')
time.sleep(0.1)
ser.close()
于 2015-05-19T09:09:23.553 回答
8

ser.read(64)应该是ser.read(size=64);ser.read 使用关键字参数,而不是位置。

此外,您正在从端口读取两次;你可能想要做的是:

i=0
for modem in PortList:
    for port in modem:
        try:
            ser = serial.Serial(port, 9600, timeout=1)
            ser.close()
            ser.open()
            ser.write("ati")
            time.sleep(3)
            read_val = ser.read(size=64)
            print read_val
            if read_val is not '':
                print port
        except serial.SerialException:
            continue
        i+=1
于 2013-10-02T18:05:14.257 回答