pySerial:port只在我打开电源后才使用它

时间:2015-04-14 13:19:08

标签: python serial-port pyserial

我无法使用pySerial读取任意端口。我打开端口没有被任何程序使用后,我只能读取端口。否则,我可以打开端口,但ser.inWaiting()返回0,告诉我端口缓冲区中没有数据。实际上,我可以在端口监视器中看到数据,为什么pySerial没有数据?我使用os x 10.9.5。,python 2.7.8和pySerial 2.7

以下是代码:

def usb():
    ser = serial.Serial('/dev/tty.usbmodem422651', 115200)
    try:
        while True:
            print ser.read(1000)
    except KeyboardInterrupt:
        ser.close()
         exit


if __name__ == "__main__":
    testUSB()

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您需要了解串行的工作原理。

如果你已经打开了一些终端并读取了数据,那么串口的输入缓冲区现在是空的。

while True:
   print ser.read(1000)

这不是一个好习惯,您可以使用inWating尝试以下内容:

if ser.inWaiting:
   ser.read(len(ser.inWaiting()))

您无法从2个不同的应用或软件中打开端口。

好的代码如下:

import serial


def my_usb():
    s_handle = serial.Serial('/dev/tty.usbmodem422651', 115200)

# or any other end condition
while True:
    try:
        if s_handle.inWaiting():
            print s_handle.read(s_handle.inWaiting())
    except KeyboardInterrupt:
        print "exiting...."
    finally:
        s_handle.close()

if __name__ == "__main__":
    my_usb()