Pyserial,in_waiting给出空值'0L'

时间:2016-12-13 10:39:01

标签: python python-2.7 serial-port pyserial

目前我正在努力使用Python 2.7 / Pyserial与外部设备进行串行通信。作为替代方案,我使用终端软件进行数据记录:Screenshot of fomerly used Software。 可以看到设备首先给出标题行,然后是循环更新的数据字符串(每行有CR LF的分隔行)

现在尝试以某种方式将数据导入Python不起作用,cp:

import serial
ser = serial.Serial('COM8', 38400)

然后

ser.inWaiting()

给出

0L

当终端软件正常运行时,从python访问时缓冲区似乎是空的。

我尝试过设置

ser.setDTR(1)
ser.dsrdtr=1

都没有成功。

更多信息:设备在虚拟端口分配器上运行。 USB电缆连接到COM3。有两种工具使用COM6(用于通过HMI进行设备配置)和COM8用于数据记录,如此处所述。

我真的很感激任何帮助。

此致 mulm

1 个答案:

答案 0 :(得分:0)

所以,我找到了解决问题的方法。由于与我的设备一起使用的终端软件运行良好,我使用其内置的http服务器,然后使用Python发出请求。现在我必须开始一个额外的软件,但就我而言,这是最好的选择。

二手软件: http://www.umonfw.com/ucon/

代码段:

import socket

# Closing the connection after a single request prevents the buffer from filling up with outdated data.

try:
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client.connect(('xxx.xx.xx.xxx', 50080))

    val = client.recv(96)

    client.close()

except socket.error:
    print "Unable to connect to server."
    val = None

不漂亮,但是它可以胜任。