0

我是 C 和复杂的串行通信的初学者。我将尽力提供有关此问题的所有信息;让我知道我是否应该提供任何额外的帮助。

我正在将串行设备(微操作器)的通信协议从 C 移植到 Python,以便在我的实验室正在开发的 Python 应用程序中使用。该公司为我们提供了用于与设备交互的小型命令行实用程序的源代码。使用这个逻辑,我们的 Python 模块能够生成正确/相同的数据块,包括 CRC。但是,当 Python 代码发送一个数据块(与 C 代码生成的数据块相同)时,它不会收到设备的响应。使用串行端口监控程序(Free Serial Port Monitor),我注意到 Python 和设备之间的通信在某些情况下与公司提供的实用程序不同。

这是提供的实用程序的日志屏幕截图,它可以正常工作。它显示了一个数据块的发送及其响应,以及第二个数据块的发送和响应的开始。

来自实用程序的日志示例

这是我们的 Python 代码发生的情况的屏幕截图;如您所见,它发送数据块而没有响应。

来自python的日志示例

至于其他可能有用的信息,我使用的是标准 Python 串行库。数据块的结构是 14 个 ASCII 字符,以 STX 开头,以 ETX 结尾。前 8 个数据字符对应于函数、地址、值等,而后 4 个字符是 CRC。

正如我所说,我在这方面有点菜鸟,我真的不知道从哪里开始。任何可能帮助我解决这个问题的建议或帮助或资源将不胜感激,如果我应该提供任何更具体的信息,请告诉我!

http://reentry.mit.edu/extserialport.c

http://reentry.mit.edu/extserialport.h

4

1 回答 1

0

我发现 pyserial 提供的 win32serial.py 直接(绑定?)到 Windows API 串行设置,在我逐行复制 C 代码中的设置(包括流控制和 RTS)之后,这似乎有效。非常感谢@Serge 的时间和帮助!

于 2013-05-06T19:24:25.357 回答