找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5856|回复: 10

利用MSComm进行串口通信小结

[复制链接]
发表于 2011-4-17 20:39:15 | 显示全部楼层 |阅读模式
之前发过几个帖子,求助串口通信程序的编制,得到了无能前辈的无私帮助,还有我的两位同学的大力支持。6 V6 G) s2 I6 |4 ^3 ?
现在程序基本完成,写个小结,说不上经验,毕竟我也是第一次写通信程序,算是教训吧。5 l" s, |( @" ?$ S3 g& F+ A1 M1 u3 z
1. 通信协议的理解
6 [3 {# q) C( x: e  s每个硬件设备厂商都有自己的一套通信协议,比如发送或接收命令的定义,发送命令之后返回数据的定义等等。这应该是通信程序收发数据逻辑顺序的依据。
) V1 u" \3 U: N2. 接受、发送数据的格式
0 l' N# D9 T( S6 V2 oMSComm接、发数据有两种格式,在属性InputMode里设置,一为comInputModeBinary,二进制;二为comInputModeText,为文本。2 M* Z1 x' @6 A6 [2 P3 N6 Q
我之前就是数据格式弄混了,所以一直出现错误。例如,MSComm1.Output = "R00000016U"," "里面的就是文本形式的数据,如果InputMode里设置的是InputMode=comInputModeBinary,那么发送肯定有误。) S& V& C0 }$ r4 P0 `, h9 q* h
3. 清空缓存和清空接收数据存放的缓冲数组+ x% A5 W8 I4 x& l$ H
每收发一次数据,就要清空缓存或是数据存放的缓冲数组。以免两次收发的数据发生交叠,产生错误。0 L7 h! ]3 j! x& M5 _  y4 _" G2 I

; V& r& e. Q: L4 \1 n! ]+ f7 n0 S( p3 Y; \! {
这三点是之前编程时最常犯的错误。希望能给各位需要编制串口通信程序的社友提个醒。
+ A) G6 q: M* g+ |2 v' Y/ t- t
$ t0 F) q* l1 G4 j2 }/ n  A再次感谢各位社友的关注和帮助!
4 H6 c0 _% y3 J2 e9 o! v- K4 y$ q& K1 U: C# L. F5 w
4 V' d+ N/ G- ~$ V# s

6 ~, R+ X0 r+ J( v) A# B

点评

可能给你帮了倒忙了……  发表于 2011-4-17 21:00
楼主这种精神值得学习,解决了问题上来还晾下,很多大侠一问不知归处了。哈哈  发表于 2011-4-17 20:55

评分

参与人数 2威望 +11 收起 理由
metalstorm + 1
舟航 + 10

查看全部评分

回复

使用道具 举报

发表于 2011-4-17 21:24:35 | 显示全部楼层
请教楼主,这类面向硬件的通讯程序大都用什么语言来写的?
 楼主| 发表于 2011-4-17 21:41:38 | 显示全部楼层
回复 metalstorm 的帖子7 K3 @% u' ]5 k. l/ \0 \
2 u1 m) ]- k5 F6 ]9 Y; i' j1 L8 E
我做的是串口通讯,用API函数,或是MSComm。& A  X! b! m2 W$ v
通信程序C和VB都可以编。8 l! K* ^( R6 {2 J

评分

参与人数 1威望 +1 收起 理由
metalstorm + 1

查看全部评分

发表于 2011-4-18 18:33:30 | 显示全部楼层
回复 robi 的帖子  k9 U7 I1 j( J& Y9 D  A- g
) I3 }& E$ X9 K
你有用VC编的和PLC通讯的程序吗?如有的话可发到我的邮箱:qw_mailbox@163.com。不胜感激
 楼主| 发表于 2011-4-18 23:07:21 | 显示全部楼层
回复 happqiwei 的帖子* o) G2 z, M6 j& G8 R9 U

* C8 t1 }) i, @1 P. R1 A6 h: `具体需要实现什么功能呢 不同功能的实现程序不一样) x0 B( m& s9 x6 o
发表于 2011-4-19 10:12:41 | 显示全部楼层
回复 robi 的帖子
! ?6 H5 @, N; R" c6 |) p
! u8 P* }8 W# E就是通过一个简单的界面对PLC输入输出或辅助寄存器按位进行读取和控制,以及读取数据寄存器的数值。如果有三菱PLC和S7-200PLC的例子最好。主要是不知道该怎么做,想找个示例程序参考参考,谢谢!
发表于 2011-4-19 14:00:31 | 显示全部楼层
谢谢楼楼主的分享,在此支持下~~
 楼主| 发表于 2011-4-23 22:13:31 | 显示全部楼层
回复 happqiwei 的帖子
! ]" O( E. ^5 }+ O; ~* g$ Q; d. u5 o1 @% r$ p9 w0 J
我现在正在做一个用VB监控DB72的程序。做好了再拿到论坛来跟大家探讨。
) b) J- a2 F8 O8 p5 N: e" g
 楼主| 发表于 2011-4-23 22:41:26 | 显示全部楼层
回复 happqiwei 的帖子
6 O6 O" q) p7 C5 U' @6 M! u  z1 \
西门子PLC可以用FB2\FB3进行DB的读写。可以用step7软件讲数据放入数控系统变量R参数中,再通过VB或C,使用DDE,将数据读取出来。, i+ n5 n  c4 c3 V" W2 a
当然你说读取的是位数据,用R参数可能不便。我现在准备用VB直接读,应该不难的。0 y% B0 X- s% l
发表于 2011-4-25 12:51:47 | 显示全部楼层
有机会试试看,串口通讯现在仍然有活力呀。
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Archiver|手机版|小黑屋|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-7-15 04:50 , Processed in 0.063120 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表