Pyserial Com3端口没有输出?Windows 7系统

2024-10-03 13:23:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图用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 stringb''

我尝试在Python2.7和Python3.6.5中对此进行测试。在

通过serial.tools.list_ports.comports()列出所有COM端口将返回:

^{pr2}$

当我使用程序HDTerm时,我得到以下输出: Screenshot_HDTerm_COM3_Port_Output

所以这个端口实际上返回了一些东西,但是我无法从python读取数据。Python代码中的参数与HDTerm中的参数相同。在

你知道为什么Python什么都不打印(或者如果timeout=None加载到无穷大)?在

注:COM46&COM47在Python和HDTerm中运行得非常好。但它们有其他输出(只发送和接收彼此的数据)。在


Tags: 端口代码importfalsetimelinetimeoutserial
2条回答

如果我说对了。
试试看

type(ser)

这样你就能知道“ser”的类型,如果它是iterable(列表、元组等),你可以试试:

^{pr2}$

希望这能有所帮助。在

我现在自己解决了这个问题。在

我不得不做ser.dtr=False

即使print(ser)表示参数dsrdtr=False(我将其解释为“dsr和dtr”),属性{}仍然是True(用print(set.dtr)进行测试)。在

您必须手动将dtr设置为False,如上所示。我觉得有点奇怪,也许是个虫子?在

相关问题 更多 >