目前我正在努力使用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
答案 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
不漂亮,但是它可以胜任。