Pyserial Com3 端口没有输出? Windows 7
Pyserial Com3 Port no output? Windows 7
我正在尝试使用 PySerial 从简单的 COM3 USB 串行端口读取数据。
我的代码如下:
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)
我试图弄乱 Serial 对象的布尔属性 ser
(例如 xonxoff
)但没有成功
print(line)
=> empty string
或 b''
我试图在 Python 2.7 和 Python 3.6.5 中对此进行测试。
通过 serial.tools.list_ports.comports()
returns 列出所有 COM 端口:
COM3 - USB Serial Port (COM3)
COM46 - com0com - serial port emulator CNCA0 (COM46)
COM47 - com0com - serial port emulator CNCB0 (COM47)
当我使用程序 HDTerm 时,我得到以下输出:
Screenshot_HDTerm_COM3_Port_Output
所以端口实际上是 returns 的东西,但我无法以某种方式从 python 读取数据。我的 Python 代码中的参数与 HDTerm 中的参数相同。
知道为什么 Python 不打印任何内容(或者如果 timeout=None
则加载到无穷大)吗?
PS.: COM46 和 COM47 在 Python 和 HDTerm 中运行良好。但它们有其他输出(仅相互发送和接收数据)。
如果我没猜错的话。
尝试
type(ser)
这样你就会知道'ser'的类型,如果它是可迭代的(列表,元组等...),你可以尝试:
for s in ser:
print s
time.sleep(1)
希望对您有所帮助。
现在我自己解决了这个问题
我不得不做 ser.dtr=False
即使 print(ser)
显示参数 dsrdtr=False
(我将其解释为 "dsr and dtr"),属性 set.dtr
仍然存在成为 True
(使用 print(set.dtr)
进行测试。
您必须手动将 dtr
设置为 False
,如上所示。我觉得有点奇怪,也许是一个错误?
我正在尝试使用 PySerial 从简单的 COM3 USB 串行端口读取数据。
我的代码如下:
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)
我试图弄乱 Serial 对象的布尔属性 ser
(例如 xonxoff
)但没有成功
print(line)
=> empty string
或 b''
我试图在 Python 2.7 和 Python 3.6.5 中对此进行测试。
通过 serial.tools.list_ports.comports()
returns 列出所有 COM 端口:
COM3 - USB Serial Port (COM3)
COM46 - com0com - serial port emulator CNCA0 (COM46)
COM47 - com0com - serial port emulator CNCB0 (COM47)
当我使用程序 HDTerm 时,我得到以下输出: Screenshot_HDTerm_COM3_Port_Output
所以端口实际上是 returns 的东西,但我无法以某种方式从 python 读取数据。我的 Python 代码中的参数与 HDTerm 中的参数相同。
知道为什么 Python 不打印任何内容(或者如果 timeout=None
则加载到无穷大)吗?
PS.: COM46 和 COM47 在 Python 和 HDTerm 中运行良好。但它们有其他输出(仅相互发送和接收数据)。
如果我没猜错的话。
尝试
type(ser)
这样你就会知道'ser'的类型,如果它是可迭代的(列表,元组等...),你可以尝试:
for s in ser:
print s
time.sleep(1)
希望对您有所帮助。
现在我自己解决了这个问题
我不得不做 ser.dtr=False
即使 print(ser)
显示参数 dsrdtr=False
(我将其解释为 "dsr and dtr"),属性 set.dtr
仍然存在成为 True
(使用 print(set.dtr)
进行测试。
您必须手动将 dtr
设置为 False
,如上所示。我觉得有点奇怪,也许是一个错误?