急!!VB中MSCOMM控件中怎样设置接收大于8位数据位的数据?

来源:百度知道 编辑:UC知道 时间:2024/06/25 18:30:22
我在流量计数据采集中,用到VB中MSCOMM控件,不知道为什么接收的数据不能超过8位,8位之后的部分丢失了,这个问题怎么解决,希望高手能够指点迷津,多谢了!
我的代码:
Private Sub Command1_Click()
MSComm1.PortOpen = True
If Combo1.Text = "xx11" Then MSComm1.Output = "dqd" + vbCrLf
MSComm1.RThreshold = 1
End Sub
Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive Then Text1.Text = MSComm1.Input
MSComm1.PortOpen = False
End Sub
我已经把能减的代码全部减少了,其它全部采用默认设置.可是还是找不出原因,本来应该返回数据:+0.000000E+00m3/d,可是只能收到带小数点在内的8位数据:+0.00000,不知道应该怎样修改才能返回正常数据,请给出具体的解决方案,最好有代码,再次致谢!!
提示:上面的连接是没有问题的,在出错后,没有退出时(中断)状态继续运行,能够返回正确数据,再按就变成:+0.00000了.急切得到指导!!

MSCOMM控件只能接收8位数据,如果你要接收大于8位数据,只能采用分段接收的办法:
意思就是说;假如你要接收一个16位的数据(C),发送方先将16位数据拆成2个8位数据(A和B),即C=A+B,再将A、B依次发送出去。
接收方依次接收A和B,A+B=C。
代码很简单,原理也很简单,应该你行的。
我就是用这个办法接收很复杂的数据。

Private Sub Command1_Click()
If MSComm1.PortOpen = False Then MSComm1.PortOpen = True
If Combo1.Text = "xx11" Then MSComm1.Output = "dqd" + vbCrLf
MSComm1.RThreshold = 1
End Sub

Private Sub Form_Load()
Text1.Text = ""
End Sub

Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive Then Text1.Text = Text1.Text & MSComm1.Input
'MSComm1.PortOpen = False
End Sub

楼上说的很好,mscomm本身就是只能接受8位(你问我为什么我不是很清楚,大概是以前用的比较少接8位省一点吧ps:以前的硬件的贵。)如果要接受大于8位的数据,一个办法是采取分档接受,不过如果这样的话你的接收程序要复杂一点(意思就是说你要对上号,表弄叉了,俺就是这样)不过应该很简单吧,另外一个就是可以使用中转的办法,可以用你想到的任何东西(文件……内存……自制数据接口……)这个也很简单,不过影响到的速度……
不管怎么说,只要你啃研究,就没有什么难题了。
不知道你听懂了没,貌似我很罗嗦
飞走~

为什么是8位呢。。。因为标准的串口就是8针的接口。。。