python-3.x - Win32api用于excel VBA中的串行通信
问题描述
我有数据采集设备,我想从中提取信息。我在 Python 3.5 中开始了一个小项目,使用 pyserial 与设备通信。我可以发送命令和接收数据。
import serial
ser = serial.Serial()
ser.port = 'COM1'
ser.baudrate = 9600
ser.parity = PARITY_NONE
ser.timeout=.5
ser.open()
ser.write(b'#02\r')
print(ser.readline())
ser.close()
这会发送一个命令来检索缓冲区中的数据,当我使用 readline 命令时,我会拉入数据。
b'>-999999-999999-999999-999999 -999999\r'
我创建了一个 Excel 表来托管数据表和测试标准,我在这些标准上判断我们机器的性能。这最初是用于手动用户输入,但我决定尝试看看是否可以直接在 excel 中自动执行此操作。我浏览了几个网页,找到了几家要求支付代码费用的公司等等。我终于确定了The Scarms所做的工作,它使用 WIN32API 处理串行 I/O 与原始 mscomm32.ocx司机。
我已经能够将他的文件带入我的项目,并使用示例代码开始。我可以发送一条消息,并通过我正在通信的设备进行视觉验证,但我没有从我的终端数据采集设备得到任何回复。
strData = "#02\r"
lngSize = Len(strData)
lngStatus = CommWrite(intPortID, strData)
变量 strData 是一个字符串。使用 pyserial 发送消息时,它的前缀是“b”(据我所知),它表示在通过串行端口发送之前将其编码为位。
我一直在尝试查看从上面链接提供的代码中添加到 VBA 的 modCOMM 代码,但我似乎根本无法获得输入。我是否使用 WIN32API 错误地发送了信息?
如何通过总线正确发送此命令以获得来自终端设备的响应?
有问题的终端设备是 Advantech ADAM 4017+。
解决方案
推荐阅读
- laravel - 无法打开流:超出磁盘配额
- java - Predictionio pio 构建成功,但 pio train 错误未找到“名称”
- node.js - Node.js 没有正确重定向
- postgresql - PostgreSQL + Apache 连接池:MaxIdle 和 MaxActive 与 RAM 使用情况
- python - python - 如何绘制一个直方图,其中y轴作为“与每个x bin对应的y值的总和”,x轴作为python中x的n bin?
- java - 使用Java查找给定上一个季度结束日期的下一个季度结束日期
- c3.js - c3.js 减小 x 轴的宽度
- javascript - 是否可以对来自 xhttp 对象外部的 AJAX 响应做出反应?
- excel - 保存错误 - 运行时“1004”
- visual-studio - 如何自定义 Visual Studio 自动完成的键?