机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5205|回复: 10
打印 上一主题 下一主题

利用MSComm进行串口通信小结

[复制链接]
跳转到指定楼层
1#
发表于 2011-4-17 20:39:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
之前发过几个帖子,求助串口通信程序的编制,得到了无能前辈的无私帮助,还有我的两位同学的大力支持。
1 Y4 i& z& }' s. S2 f9 }8 y0 q现在程序基本完成,写个小结,说不上经验,毕竟我也是第一次写通信程序,算是教训吧。  d8 k, f) I! ?, h
1. 通信协议的理解4 A0 k+ y; E+ F3 N) y
每个硬件设备厂商都有自己的一套通信协议,比如发送或接收命令的定义,发送命令之后返回数据的定义等等。这应该是通信程序收发数据逻辑顺序的依据。
! {4 Z3 _. s1 J) W* r2. 接受、发送数据的格式
3 p& M1 X* |+ z+ G" H, @" Z6 j8 oMSComm接、发数据有两种格式,在属性InputMode里设置,一为comInputModeBinary,二进制;二为comInputModeText,为文本。0 y4 P0 _) _4 X( B6 s& z4 f
我之前就是数据格式弄混了,所以一直出现错误。例如,MSComm1.Output = "R00000016U"," "里面的就是文本形式的数据,如果InputMode里设置的是InputMode=comInputModeBinary,那么发送肯定有误。
# X5 ~6 ^- J: L* X* e7 z! L3. 清空缓存和清空接收数据存放的缓冲数组7 `7 F# k" U( I$ M+ j! i. |
每收发一次数据,就要清空缓存或是数据存放的缓冲数组。以免两次收发的数据发生交叠,产生错误。* S& ?/ Y3 \2 Y7 d

( d1 D6 z; [8 F' Z  i) {7 q
! c# q2 m( J: |% Q8 b4 h( s这三点是之前编程时最常犯的错误。希望能给各位需要编制串口通信程序的社友提个醒。
' P( b) y" L* f$ c
+ C+ ~, J, P# T6 u( t) c4 p再次感谢各位社友的关注和帮助!
  u, i2 `9 ~8 p( D, g  g) X$ l9 l. T

% Q+ K1 y# j. E, L; ]' M% F- n" f' F# v- t( B

点评

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

评分

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

查看全部评分

回复

使用道具 举报

2#
发表于 2011-4-17 21:24:35 | 只看该作者
请教楼主,这类面向硬件的通讯程序大都用什么语言来写的?
回复 支持 反对

使用道具 举报

3#
 楼主| 发表于 2011-4-17 21:41:38 | 只看该作者
回复 metalstorm 的帖子
( K. H. E' o4 |: C2 K( P) T3 b) j4 v
我做的是串口通讯,用API函数,或是MSComm。
4 {6 R' s. A/ R/ L& U5 e( ?3 g$ ]通信程序C和VB都可以编。$ p! ^& ~/ `1 m+ f( h+ Q& G

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

4#
发表于 2011-4-18 18:33:30 | 只看该作者
回复 robi 的帖子
( t+ I0 y  x: h# ^: D
/ G) I3 d. N8 n7 L( l4 y3 W5 k你有用VC编的和PLC通讯的程序吗?如有的话可发到我的邮箱:qw_mailbox@163.com。不胜感激
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2011-4-18 23:07:21 | 只看该作者
回复 happqiwei 的帖子) s! ~  J; n6 A! D2 a8 h0 y
* r5 q4 ^% e: ^7 Q/ t
具体需要实现什么功能呢 不同功能的实现程序不一样
, T/ w! M+ f7 R  Q# H5 a; V4 V/ x
回复 支持 反对

使用道具 举报

6#
发表于 2011-4-19 10:12:41 | 只看该作者
回复 robi 的帖子2 N* p1 o2 M# s0 `: Y

4 R1 A1 U, P7 _  u- k9 M* K+ m就是通过一个简单的界面对PLC输入输出或辅助寄存器按位进行读取和控制,以及读取数据寄存器的数值。如果有三菱PLC和S7-200PLC的例子最好。主要是不知道该怎么做,想找个示例程序参考参考,谢谢!
回复 支持 反对

使用道具 举报

7#
发表于 2011-4-19 14:00:31 | 只看该作者
谢谢楼楼主的分享,在此支持下~~
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2011-4-23 22:13:31 | 只看该作者
回复 happqiwei 的帖子- M: @3 F" }& y4 l' B2 m: ^" @

) N' G+ D  q  T& {我现在正在做一个用VB监控DB72的程序。做好了再拿到必威APP精装版下载来跟大家探讨。4 S$ X7 R$ }) P# U5 x
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2011-4-23 22:41:26 | 只看该作者
回复 happqiwei 的帖子
! y' \$ i5 w$ c# x* f. R$ W1 `
, ]2 }# }, n' U$ l! B" E: n# n西门子PLC可以用FB2\FB3进行DB的读写。可以用step7软件讲数据放入数控系统变量R参数中,再通过VB或C,使用DDE,将数据读取出来。7 ^" R+ ^5 ?) i6 e3 |" U+ j
当然你说读取的是位数据,用R参数可能不便。我现在准备用VB直接读,应该不难的。
' R( C% G: {# T) s. W: q! [7 _
回复 支持 反对

使用道具 举报

10#
发表于 2011-4-25 12:51:47 | 只看该作者
有机会试试看,串口通讯现在仍然有活力呀。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械必威体育网址 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-9-22 12:43 , Processed in 0.051338 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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