我正试图用PySerial从一个简单的com3usb串行端口读取数据。在
我的代码如下:
import serial
import time
ser = serial.Serial("COM3", 230400, timeout=2) #Also tried timeout=None, loads to infinity then
print (ser)
while True:
line = ser.readline() #also tried read()
print(line)
time.sleep(1)
控制台输出:
print(ser)
=>;Serial<id=0x2757c50, open=True>(port='COM3', baudrate=230400, bytesize=8, parity='N', stopbits=1, timeout=2, xonxoff=False, rtscts=False, dsrdtr=False)
我试图搞乱串行对象ser
(例如xonxoff
)的布尔属性,但没有成功
print(line)
=>;empty string
或b''
我尝试在Python2.7和Python3.6.5中对此进行测试。在
通过serial.tools.list_ports.comports()
列出所有COM端口将返回:
当我使用程序HDTerm时,我得到以下输出: Screenshot_HDTerm_COM3_Port_Output
所以这个端口实际上返回了一些东西,但是我无法从python读取数据。Python代码中的参数与HDTerm中的参数相同。在
你知道为什么Python什么都不打印(或者如果timeout=None
加载到无穷大)?在
注:COM46&COM47在Python和HDTerm中运行得非常好。但它们有其他输出(只发送和接收彼此的数据)。在
如果我说对了。
试试看
这样你就能知道“ser”的类型,如果它是iterable(列表、元组等),你可以试试:
^{pr2}$希望这能有所帮助。在
我现在自己解决了这个问题。在
我不得不做
ser.dtr=False
即使}仍然是
print(ser)
表示参数dsrdtr=False
(我将其解释为“dsr和dtr”),属性{True
(用print(set.dtr)
进行测试)。在您必须手动将
dtr
设置为False
,如上所示。我觉得有点奇怪,也许是个虫子?在相关问题 更多 >
编程相关推荐