找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 4896|回复: 4

用VB做个小串口程序的问题

[复制链接]

4

主题

7

回帖

0

精华

铜牌会员

积分
304
发表于 2009-4-22 20:00:55 | 显示全部楼层 |阅读模式
<p>请教下老马</p>
<p>有个朋友拖我做一个VB串口小程序&nbsp; <br/>由于有关串口与下位机通讯方面的,从来没接触过下位机,所以有点摸不着头脑 <br/>程序要求很简单 <br/>能够加载下位机时间,并进行修改 <br/>请教下各位老鸟该怎么编这个程序 <br/>如何用MSComm进行下位机连接? <br/>怎么加载它的时间 <br/>是否需要什么协议之类的?</p>

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2009-4-23 00:38:45 | 显示全部楼层
<p>想起来可能很复杂,但做起来也许很简单.</p>
<p>&nbsp;</p>
<p>首先打开串口.</p>
<p>&nbsp;</p>
<p>然后用OUTPUT属性来发送数据.</p>
<p>&nbsp;</p>
<p>当设备有数据过来时,会触发<font face="Verdana">OnComm</font>事件,在这个事件里处理收到的数据即可.</p>
<p>&nbsp;</p>
<p>以上即是整个流程.</p>
<p>&nbsp;</p>
<p>这里面的关键在于下位机能接收什么样的指令,以及会发送什么数据回来.</p>
<p>&nbsp;</p>
<p>就是你说的协议,这是必须要有的,可以向下位机开发者取得,他是一定会给你的,不然开发这个下位机就没有意义了.</p>
<p>&nbsp;</p>
<p>最后祝你好运.</p>
我就是嗷嗷叫的老马了......

4

主题

7

回帖

0

精华

铜牌会员

积分
304
 楼主| 发表于 2009-4-23 09:16:24 | 显示全部楼层

1

<p>老马真牛</p>
<p>跟百科全书一样</p>
<p>啥都知道~</p>
<p>谢谢啦···</p>

4

主题

7

回帖

0

精华

铜牌会员

积分
304
 楼主| 发表于 2009-4-23 09:59:42 | 显示全部楼层
<p>对了···老马有这种通讯的例子么</p>
<p>我来模仿一下</p>

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2009-4-23 10:58:47 | 显示全部楼层
<p>这个没什么好看的......</p>
<p>&nbsp;</p>
<p>发送即:</p>
<p>&nbsp;</p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; Dim Buff1(1) As Byte</font></p>
<p>&nbsp;</p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; Buff1(0) = &amp;H1B&nbsp;&nbsp;&nbsp;&nbsp; '1B 6D<br/>&nbsp;&nbsp;&nbsp; Buff1(1) = &amp;H6D<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp; MSComm1.Output = Buff1()</font></p>
<p>&nbsp;</p>
<p>这样就向串口发送了一个&amp;H1B6D.</p>
<p>&nbsp;</p>
<p>接收部分是MSDN里的示例:</p>
<p>&nbsp;</p>
<p><font face="Verdana">Private Sub MSComm1_OnComm()<br/>&nbsp;&nbsp; Select Case MSComm1.CommEvent<br/>&nbsp;&nbsp; ' Handle each event or error by placing<br/>&nbsp;&nbsp; ' code below each case statement</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; ' 错误<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Case comEventBreak&nbsp;&nbsp; ' 收到 Break。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Case comEventCDTO&nbsp;&nbsp; ' CD (RLSD) 超时。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Case comEventCTSTO&nbsp;&nbsp; ' CTS Timeout。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Case comEventDSRTO&nbsp;&nbsp; ' DSR Timeout。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Case comEventFrame&nbsp;&nbsp; ' Framing Error<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Case comEventOverrun&nbsp;&nbsp; '数据丢失。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Case comEventRxOver '接收缓冲区溢出。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Case comEventRxParity ' Parity 错误。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Case comEventTxFull&nbsp;&nbsp; '传输缓冲区已满。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Case comEventDCB&nbsp;&nbsp; '获取 DCB] 时意外错误</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; ' 事件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Case comEvCD&nbsp;&nbsp; ' CD 线状态变化。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Case comEvCTS&nbsp;&nbsp; ' CTS 线状态变化。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Case comEvDSR&nbsp;&nbsp; ' DSR 线状态变化。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Case comEvRing&nbsp;&nbsp; ' Ring Indicator 变化。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Case comEvReceive&nbsp;&nbsp; ' 收到 RThreshold # of chars.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Case comEvSend&nbsp;&nbsp; ' 传输缓冲区有 Sthreshold 个字符<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Case comEvEOF&nbsp;&nbsp; ' 输入数据流中发现 EOF 字符&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '<br/>&nbsp;&nbsp; End Select<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp; Debug.Print MSComm1.InputLen&nbsp;&nbsp;&nbsp;&nbsp; '打印收到的数据的长度<br/>End Sub</font></p>
我就是嗷嗷叫的老马了......

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

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