pySerial:端口仅在我打开电源后第一次使用它时有效
pySerial: port only works the first I use it after I power it on
我无法使用 pySerial 读取任意端口。我只能在端口打开后没有被任何程序使用的情况下读取端口。否则,我可以打开端口但是 ser.inWaiting() returns 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()
感谢您的帮助!
您需要了解串行的工作原理。
如果您已经打开了一些终端并读取了数据,那么串口的输入缓冲区现在是空的。
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()
我无法使用 pySerial 读取任意端口。我只能在端口打开后没有被任何程序使用的情况下读取端口。否则,我可以打开端口但是 ser.inWaiting() returns 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()
感谢您的帮助!
您需要了解串行的工作原理。
如果您已经打开了一些终端并读取了数据,那么串口的输入缓冲区现在是空的。
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()