| | 首页 | 文章中心 | 下载中心 | 本站特供 | 软硬件结合论坛 | | |
![]() | |
| 您现在的位置: 中国软硬件结合技术网 >> 文章中心 >> 软硬件结合 >> 串口通讯相关 >> 正文 |
|
|||||
| 也谈VB MSCOMM与PLC通讯 | |||||
| 作者:forestchat 文章来源: 点击数: 更新时间:2007-9-23 | |||||
| VB的MSCOMM控件用于串口通讯非常方便,在DELPHI中也可引入。 只要在VB设计环境的部件中选择了MicroSoft COMM Control,即可将MSCOMM从控件栏拖入Frame。 所有的设置均可通过该控件属性完成,无需代码。正确的设置除各应用所需的通讯4参数(bps,数据位,效验位,停止位)Settings及通讯端口号CommPort外,还应设置另外两项:InputMode:comInputModeBinary、RThreshold:1。使用2进制输入方式,是因为Text方式相当容易受到干扰而引起通讯长时间堵塞,甚至不能恢复。更改接收阈值=1后,即可使用控件事件OnComm,使程序无需查询端口。其他设置使用控件缺省值即可,一般应用无需更改。 准备完毕后,程序在入口仅需增加MSComm1.PortOpen = True来打开通讯口,既可工作。实用程序中,还应加入错误捕捉检测端口是否存在,以免程序跳出。 由于抗干扰的需要使用了2进制通讯方式,给编程带来一定麻烦,需要使用2进制函数收发数据,剪一段代码如下,代码适用于文本通讯: 接收: Private Sub MSComm1_OnComm() Select Case MSComm1.CommEvent '此时收到aStr字符串,连续拼装后即可找到完整的接收串。 End Select 发送: Public Sub SendaStr(ByVal aStr As String) 当需要进行2进制通讯时(如MODICOM),不应使用字符串作为收发缓冲,可将2位码值(HEX())存入字符串进出收发函数,以免VB判定\0为字符串结束。 2进制通讯对于00、01之类的控制码均能接收,进程不会卡死,我还尝试收发中文均能成功,但代码较多。 本人使用MSCOMM控件建立多S7 200的数据通讯网络,比买组态并且学习总是在变的规则简单多了。 |
|||||
| 文章录入:forestchat 责任编辑:Polylove | |||||
| 【发表评论】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| 没有相关文章 |
| |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | | |
![]() |
Copyright ©2004 - 2006 中国软硬件结合技术网 91tech.net 91tech.cn 91tech.com 站长:Polylove |