我是C的初学者和串行通信的复杂性。我会尽力提供有关此问题的所有信息;请告诉我,如果有任何额外的内容我会提供帮助。
我正在将串行设备(微操纵器)的通信协议从C移植到Python,以便在我的实验室正在开发的Python应用程序中使用。该公司为我们提供了用于与设备连接的小型命令行实用程序的源代码。使用此逻辑,我们的Python模块能够生成正确/相同的数据块,包括CRC。但是,当Python代码发送数据块(与C代码生成的数据块相同)时,它不会收到设备的响应。使用串口监控程序(Free Serial Port Monitor),我注意到Python和设备之间的通信在某些情况下与公司提供的实用程序不同。
这是所提供实用程序的日志的屏幕截图,它可以正常工作。它显示了发送一个数据块及其响应,以及发送第二个数据块和响应的开始。
这是我们的Python代码发生的截图;如你所见,它发送的数据块没有响应。
至于其他可能有用的信息,我正在使用标准的Python串行库。数据块的结构是14个ASCII字符,以STX开头,以ETX结尾。前八个数据字符对应于函数,地址,值等,而最后四个字符是CRC。
正如我所说,我在这方面有点像菜鸟,我真的不知道从哪里开始。任何建议或帮助,或可能帮助我解决这个问题的资源将不胜感激,如果我有任何更具体的信息,请告诉我们!
答案 0 :(得分:0)
我发现win32serial.py,提供pyserial,提供直接(绑定?)到Windows API串行设置,这似乎有用,我从C代码逐行复制设置,包括流控制和RTS。非常感谢@Serge的时间和时间帮助!