关于VB接收串口来的数据

使用VB编了一个接收串口数据的程序,用来接收下位机每次发来的4byte数据,大约每两秒发来一次,但VB运行后仅显示一个字节,且显示的和用“串口助手”显示的不一致Priva... 使用VB编了一个接收串口数据的程序,用来接收下位机每次发来的4byte数据,大约每两秒发来一次,但VB运行后仅显示一个字节,且显示的和用“串口助手”显示的不一致
Private Sub InitialPort(SerialPort As String, BaudRate As String, ParityBit As String, Databit As String, StopBit As String)
On Error GoTo Errline
MSComm.CommPort = Val(Mid(SerialPort, 4, Len(SerialPort) - 3))
MSComm.Settings = BaudRate & "," & Left(ParityBit, 1) & "," & Databit & "," & StopBit
MSComm.InBufferSize = 1024
MSComm.OutBufferSize = 4096
MSComm.InBufferCount = 0
MSComm.OutBufferCount = 0
MSComm.SThreshold = 1
MSComm.RThreshold = 1

MSComm.InputLen = 4
MSComm.InputMode = comInputModeBinary

Exit Sub

Errline:
If Err.Number <> 0 Then
MsgBox CStr(Err.Number) + "" + Err.Description, vbOKOnly + vbInformation, ""
End If

Err.Clear

Private Sub MScomm_oncomm()
Dim ByteReceiveData() As Byte
Select Case MSComm.CommEvent

Case comEvReceive
ByteReceiveData() = MSComm.Input
End Select

Text1.Text = ByteReceiveData(0)
Text2.Text = MSComm.InBufferCount
End Sub
如果显示 ByteReceiveData(1),则提示“下标越界”,且MSComm.InBufferCount为0
求助!
展开
 我来答
网海1书生
科技发烧友

2015-03-14 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26230

向TA提问 私信TA
展开全部
Private Sub MScomm_oncomm()
Dim ByteReceiveData() As Byte
Select Case MSComm.CommEvent
Case comEvReceive
ByteReceiveData() = MSComm.Input
Text1.Text = ByteReceiveData(0) '这两行要放到这里,也就是说要在接收到数据后再显示
Text2.Text = MSComm.InBufferCount '而不是不管有没有数据都显示
End Select
End Sub
zlzfc
2015-03-14 · 超过16用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:29.3万
展开全部
改这里 .RThreshold=4
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
查晓筠0i5
2015-03-14 · TA获得超过2752个赞
知道大有可为答主
回答量:2.1万
采纳率:1%
帮助的人:4978万
展开全部
需要给你完成一份吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式