当前位置:编程学习 > VB >>

VB6 做上位机 显示下位机接收的20多万个数据。要快速准确

我用oncomm事件做的串口。。少量数据 我
MSComm1.InputLen = 0            '一次读取所有数据
MSComm1.RThreshold = A       ’A是下位机发送的字节数
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
。。。。。。。。
end sub 
 但是oncomm的RThreshold 的 A是有限的 大约32768左右。。
我最大下位机一次会发送20多万个数据的情况下这样做处理
就不行了,有什么好办法 20多万个?别的方式行不行我不知道,至少串口不行。 sscom42这个上位机接收的就很好啊 貌似只能改协议了,,让下位机发送的数据减少 分包发送,要自己约定一个协议。 20几万别一次读啊,分几次读不就行了。

自己定义个缓冲池,设置Mscomm为每收到一个字节触发Oncomm事件,OnComm事件触发的时候就把数据从Mscomm的缓冲区读出来写到自己定义的缓冲池里面,当然从MScomm里面读出来的肯定不是一个字节,这样MScomm缓冲区不就不会溢出了 20多万的数据,下位也不会一次给你发完的,下位机他也分批发的,有几个下位机的串口缓存会大过PC机啊!而且PC的缓存是可以动态的。

从你说的大数据接收就不行的情况来看,你的串口很有可能不是标准9线的,没有反馈信号,可能是上下位机一方没有这个功能,造成一方接收满了,想要告诉对方,别发了等等我,但对方还是没完没了的发,最后也不管数据全不全,发完就完,你在一读串口缓存,读完了系统就又把串口缓存给清了,你就收不全了。

看看串口线是不是9线都用上了。别是4线或两线的。
补充:VB ,  基础类
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,