mscomm控件串口通信(在线等)

youyaodong03 2011-04-13 10:20:36
大家好,有个问题想请教大家,我用mscomm控件,传输方式选择2进制,现在不知道下位机何时发送消息进来,想要实现:只要串口读进一个字节就自动往动态数组里面写值。如何实现?

我之前是这样写的,但是不接收数据时,也响应oncomm事件,到底哪错了呢?如何实现啊?急Help

Dim InByte(0 To 20) As Byte
Dim rxn As Integer '接收多少个字节
Dim rxStart As Integer '开始接收标志位
Dim rxEnd As Integer '停止接收标志位

Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,2"
MSComm1.InBufferSize = 1024
MSComm1.OutBufferSize = 1024
MSComm1.InputMode = comInputModeBinary
MSComm1.RThreshold = 1 '每接收到一个字符都会使 MSComm 控件产生 OnComm 事件
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0

If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
End Sub

Private Sub MSComm1_OnComm() ’我是这样理解的,只要缓存区接收一个字节,就会自动响应下面的事件???
Select Case MSComm1.CommEvent
Case comEvReceive
'电脑开始接收DSP的“就绪”应答
MSComm1.InputLen = 1 ’1个字符为8位就是一个字节??
InByte(rxn) = MSComm1.Input '这里定义inbyte为字节类型,老是显示类型不匹配,读进来的是二进制??
If InByte(rxn) = &HF0 Then '判断起始接收的的字节内容(起始位判断)
rxn = 1
InByte(0) = &HF0
rxStart = 1 '开始的标志位
ElseIf InByte(rxn) = &HFF Then '判断是否到结束位(结束位判断)
rxStart = 0
rxEnd = 1
rxn = 0
ElseIf rxStart = 1 Then
rxn = rxn + 1
End If
End Select
End Sub
...全文
84 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
贝隆 2011-04-15
  • 打赏
  • 举报
回复
你采用中断方式处理数据,当串口接受到数据就触发MScomm的OnComm事件

你所需要的就是往OnComm事件中添加数据处理代码即可。
我在6楼给你提供了代码。
咸清 2011-04-14
  • 打赏
  • 举报
回复
有请朱工~~
三楼の郎 2011-04-13
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20091029/09/189c2b7c-53ab-47eb-a051-2d8d3a6be588.html
youyaodong03 2011-04-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 spt_petrolor 的回复:]
Input 属性


返回并删除接收缓冲区中的数据流。该属性在设计时无效,在运行时为只读。

语法

object.Input

Input 属性语法包括下列部分:

部分 描述
object 对象表达式,其值是“应用于”列表中的对象。


说明

InputLen 属性确定被 Input 属性读取的字符数。设置 InputLen 为 0,则 Input……
[/Quote]

没解决问题。。。谢谢
王二.麻子 2011-04-13
  • 打赏
  • 举报
回复
Input 属性


返回并删除接收缓冲区中的数据流。该属性在设计时无效,在运行时为只读。

语法

object.Input

Input 属性语法包括下列部分:

部分 描述
object 对象表达式,其值是“应用于”列表中的对象。


说明

InputLen 属性确定被 Input 属性读取的字符数。设置 InputLen 为 0,则 Input 属性读取缓冲区中全部的内容。

InputMode 属性确定用 Input 属性读取的数据类型。如果设置 InputMode 为 comInputModeText,Input 属性通过一个 Variant 返回文本数据。如果设置 InputMode 为 comInputModeBinary,Input 属性通过一个 Variant .返回一二进制数据的数组。

数据类型

Variant
youyaodong03 2011-04-13
  • 打赏
  • 举报
回复
有木有人啊。。。
贝隆 2011-04-13
  • 打赏
  • 举报
回复

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧