Pyserial无法读取设备

时间:2016-08-08 19:23:05

标签: python serial-port hardware pyserial

我正在尝试使用转换模块(SSI到RS232)读取我购买的传感器的数据。我通过USB /串行转换器将模块插入我的Windows笔记本电脑。

当我在串行模式下使用Putty时,我可以发送命令$ 2RD并从传感器单元接收相应的响应。当我运行脚本尝试做同样的事情时,单位返回:''

以下是我正在使用的代码:

import sys
import serial
import time

ser = serial.Serial(
    port='COM4', 
    baudrate=9600, 
    timeout=1,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS,
)  

while True:
    ser.write('$2RD'.encode())
    #time.sleep(1)
    s = ser.read(26)
    print s

其他几点说明:

  • 我尝试了一些使用flushInput,flushOutput,sleep,waiting等的变体......似乎没什么帮助。
  • 我知道我的COM端口正确/硬件都在Putty中工作,所以很确定这是我的代码。
  • 我也尝试了13400 BAUD,结果没有差异。
  • 如果我从USB连接TX和RX线路,我可以读取我正在发送的命令......所以它至少应该到达RS232 / SSI转换设备。

1 个答案:

答案 0 :(得分:0)

s = ser.read(26)应该是ser.read(size=26),因为它需要关键字参数而不是位置参数。

此外,您可以尝试设置超时以查看在特定时间之后发送的内容,否则如果未按照pyserial的读取文档中的指定发送26个字节,则该函数可以阻止:

  

从串口读取大小字节。如果设置了超时,则可能会根据请求返回较少的字符。没有超时,它将阻塞,直到读取所请求的字节数。