MSCOMM串口通讯问题
我准备用MSCOMM做一个串口通讯
发送数据:8F 5A 05
接收数据:81 80 5A 05 0B 08 0D 2D 03 00 01 00 8F
我现在在OnComm事件中写了这么一段接收的程序
Private Sub elMSComm_OnComm()
Select Case elMSComm.CommEvent
Case comEvReceive
Buffer = elMSComm.Input
For i = LBound(Buffer) To UBound(Buffer)
elReceive(i) = Buffer(i)
Next i
End If
End If
End Select
但是这个elReceive只能收到8位数据,无法一次收到全部接收数据,请问有什么办法能够实现在上述接收中的elReceive能收到超过8位的数据
问题点数:100、回复次数:9Top
1 楼cuilei197979(风)回复于 2005-11-08 15:42:44 得分 1
帮你顶Top
2 楼zou19820704(天下英雄)回复于 2005-11-08 16:07:03 得分 2
你对elMSComm的input设置为多少,我觉得应该是
len(81 80 5A 05 0B 08 0D 2D 03 00 01 00 8F) 当接收到这么多的字符的时候就触发一次 Case comEvReceive 这样才可以全部接收!
Top
3 楼zhzhq800204(lazio)回复于 2005-11-08 16:55:02 得分 86
如果你的接收长度是固定的,那么可以通过设置缓冲区的大小来接收数据。设置缓冲区的大小可以通过MSComm的Rthreshold属性设置。例如,设置 Rthreshold 为 1,接收缓冲区收到每一个字符都会使 MSComm 控件产生 OnComm 事件。MSComm1.Rthreshold=len(81 80 5A 05 0B 08 0D 2D 03 00 01 00 8F)Top
4 楼TheRule(绝非偶然)回复于 2005-11-08 21:19:27 得分 3
缓冲区长度太小,用上面方法解决Top
5 楼closeing()回复于 2005-11-08 21:22:54 得分 0
哦,我接收的长度不是固定的,接收长度在6到15之间的,如果把Rthreshold设置为一个常量的话,会出问题的,会得不到想要的数据Top
6 楼jinhailv(阿非)回复于 2005-11-09 09:14:24 得分 5
我在做串口通讯程序时遇到了这样一个问题:在VB中我需要将一个浮点型数据(single)转换成一个四位字节的字符串后,送给下位才能实现通讯.
例如:需要将数据 1.11
转换成 (3F 8E 14 7B) 字符串的形式发给下位
另外,如何将下位传给我的字符串(3F 8E 14 7B)
转换成浮点数 1.11
请各位高手给看看,谢谢!
Top
7 楼zou19820704(天下英雄)回复于 2005-11-09 12:59:58 得分 1
楼上在你的帖里面已经给你解答了,呵呵Top
8 楼jinhailv(阿非)回复于 2005-11-11 08:31:35 得分 1
谢谢!Top
9 楼shelanbor(华晓)回复于 2005-11-11 08:43:16 得分 1
同意 zhzhq800204(lazio) 的说法,呵呵!!Top




