用vb开发串口通讯
通讯协议
1.通讯格式:
通讯波特率为9600bps,数据格式为:9600波特率,1位起始位,8位数据位,无校验位,1位停止位,共10位。
起始位为低电平,逻辑值0,停止位和空闲位为高电平,逻辑值1。
数据字符格式:起始位+数据+停止位+空闲位 其中空闲位位数不定
发送格式:
每字节数据采用低位在前,高位在后的异步传输方式:
2.数据帧格式:
开始码 器件地址码 长度码 数据块 校验码 共6字节
开始码 -- 1字节,规定为“AAH”。
器件地址码 -- 1字节,表示目标器件的地址,规定“11H”表示PC,“22H”表示单片机。
长度码 -- 数据块的字节数(1字节16进制数)。
数据块 -- 2字节,对电磁阀的动作命令+动作次数。动作命令有启动和停止。
启动电磁阀:1字节,规定为“BBH”;停止电磁阀:1字节,规定为“CCH”;启动停止次数:1字节BCD码,范围为1~9。
校验码 -- 从开始码(包括开始码)到校验码前的所有字节的异或和(1字节16进制数)。
数据帧发送格式:
数据帧采用低字节在前,高字节在后的异步传输方式,字节之间可以随机插入任意长的空闲位:
后
---------
用MsComm控件该怎么发送数据及接收数据?
因本人没有做过类似的东西。望高手解答。
问题点数:100、回复次数:9Top
1 楼Modest(塞北雪貂)·(偶最欣赏楼主的分)回复于 2006-03-01 10:15:56 得分 5
我也知之甚少,帮你顶一下。Top
2 楼qkaibo(艾夏)回复于 2006-03-01 13:03:15 得分 10
mscomm.settings="9600,n,8,1"
mscomm.comport = 1
mscomm.open
dim a() as byte
redim a(5)
a(0)=&HAA
a(1)=&H22
a(2)=&HXX
a(3)=&HXX 动作命令
a(4)
a(5)=&H 校验
mscomm.output = a
有问题联系QQ 17310603Top
3 楼lc_mtt(柠檬把大飞猪裤子一脱...被大飞猪投诉了)回复于 2006-03-01 13:40:59 得分 5
找一本VB开发串口通信的书,基本有你需要的东西Top
4 楼Nowish(看我能忍耐多久)回复于 2006-03-06 22:28:27 得分 5
dim a as variantTop
5 楼ZOU_SEAFARER(颓废程序员^_^)回复于 2006-03-07 08:36:32 得分 5
MSDN上面有详细的介绍!Top
6 楼celevantis(三藏)回复于 2006-03-07 08:43:22 得分 5
这个有难度么?
首先在工程中加入一个MsComm控件
关闭串口
初始化setting(默认即可)
选择串口
打开串口
发送指令
在Oncomm事件中接收单片机返回的信息
用Input读取
校验是LRC校验,网上有现成的代码模块
Top
7 楼of123()回复于 2006-03-07 08:54:48 得分 50
dim a(5) as byte
dim i as integer
a(0) = &Haa
a(1) = &H11
a(2) = 2
a(3) = &Hbb '假定启动
a(4) = 1
a(5) = 0
for i = 0 to 4
a(5) = a(5) xor a(i)
next i
mscomm1.settings="9600,n,8,1"
mscomm1.comport = 1
mscomm1.open = true
mscomm1.output = a
......
Top
8 楼efengxu(易风)回复于 2006-03-07 09:31:15 得分 15
你把通讯协议都写出来难道要让我们给你把代买写好啊?这个主要是对mscomm控件的使用,我都用这个3年了,你要尝试自己写代码调试才能自己积累经验,用个一段时间你就会发现很简单的!
我们可以带你入门,但还是要自己去研究的!Top
9 楼xxyan_35(Ak47)回复于 2006-03-11 18:38:06 得分 0
多谢上面各位了。
问题已经解决了。
因前段时间太忙了。Top




