robi 发表于 2011-4-17 20:39:15

利用MSComm进行串口通信小结

之前发过几个帖子,求助串口通信程序的编制,得到了无能前辈的无私帮助,还有我的两位同学的大力支持。
现在程序基本完成,写个小结,说不上经验,毕竟我也是第一次写通信程序,算是教训吧。
1. 通信协议的理解
每个硬件设备厂商都有自己的一套通信协议,比如发送或接收命令的定义,发送命令之后返回数据的定义等等。这应该是通信程序收发数据逻辑顺序的依据。
2. 接受、发送数据的格式
MSComm接、发数据有两种格式,在属性InputMode里设置,一为comInputModeBinary,二进制;二为comInputModeText,为文本。
我之前就是数据格式弄混了,所以一直出现错误。例如,MSComm1.Output = "R00000016U"," "里面的就是文本形式的数据,如果InputMode里设置的是InputMode=comInputModeBinary,那么发送肯定有误。
3. 清空缓存和清空接收数据存放的缓冲数组
每收发一次数据,就要清空缓存或是数据存放的缓冲数组。以免两次收发的数据发生交叠,产生错误。


这三点是之前编程时最常犯的错误。希望能给各位需要编制串口通信程序的社友提个醒。

再次感谢各位社友的关注和帮助!



metalstorm 发表于 2011-4-17 21:24:35

请教楼主,这类面向硬件的通讯程序大都用什么语言来写的?

robi 发表于 2011-4-17 21:41:38

回复 metalstorm 的帖子

我做的是串口通讯,用API函数,或是MSComm。
通信程序C和VB都可以编。

happqiwei 发表于 2011-4-18 18:33:30

回复 robi 的帖子

你有用VC编的和PLC通讯的程序吗?如有的话可发到我的邮箱:qw_mailbox@163.com。不胜感激

robi 发表于 2011-4-18 23:07:21

回复 happqiwei 的帖子

具体需要实现什么功能呢 不同功能的实现程序不一样

happqiwei 发表于 2011-4-19 10:12:41

回复 robi 的帖子

就是通过一个简单的界面对PLC输入输出或辅助寄存器按位进行读取和控制,以及读取数据寄存器的数值。如果有三菱PLC和S7-200PLC的例子最好。主要是不知道该怎么做,想找个示例程序参考参考,谢谢!

寒秋飘雨 发表于 2011-4-19 14:00:31

谢谢楼楼主的分享,在此支持下~~

robi 发表于 2011-4-23 22:13:31

回复 happqiwei 的帖子

我现在正在做一个用VB监控DB72的程序。做好了再拿到论坛来跟大家探讨。

robi 发表于 2011-4-23 22:41:26

回复 happqiwei 的帖子

西门子PLC可以用FB2\FB3进行DB的读写。可以用step7软件讲数据放入数控系统变量R参数中,再通过VB或C,使用DDE,将数据读取出来。
当然你说读取的是位数据,用R参数可能不便。我现在准备用VB直接读,应该不难的。

wancj 发表于 2011-4-25 12:51:47

有机会试试看,串口通讯现在仍然有活力呀。
页: [1] 2
查看完整版本: 利用MSComm进行串口通信小结