最近在调试仪器的过程中,总是不能完全接受下位机(单片机)发来全部数据(十六进制),总有那么几十个数据遗漏掉,请问各位是什么问题?头痛至极,期待赐教!!!
一切参数设置都正确。电脑与单片机波特率均采用115200,每次通讯数据量大约10万以下,vb mscoom控件的InBufferSize属性值最大为32767,我设置的是InBufferSize=30000,是不是数据溢出了?但有时数据量在30000以下时也会丢数据,到底怎么回事?下面是上位机(电脑测试软件)的部分代码:Private Sub Comm_OnComm()
   Dim IntR  as integer
   Static Resv As Variant '接收数据
   Static DataC As Long '串口数据字节数
   Static CTestData() As Byte'用于存放接受的字符
   Static FactCount As Long '累计实际接收的数据
   static TestFlag  Boolean'实验结束标志
   TestFlag = false
   Comm.RThreshold = 0 
   FactCount = 0
   DataC = Comm.InBufferCount: Resv = Comm.Input  
   ReDim CTestData(100000)
   For IntR = 0 To DataC - 1
          CTestData(IntR) = Resv(IntR)
          FactCount = FactCount + 1
   Next IntR
   
   Static CurrTime As Long '等待时间
   CurrTime = GetTickCount
   '一直接受数据,直到接受完成为止 
   do                        
           If Comm.InBufferCount >= 1000 Or Abs(GetTickCount - CurrTime) >= 100 Then
                CurrTime = GetTickCount 
                DataC = Comm.InBufferCount: Resv = Comm.Input
                For IntR = 0 To DataC - 1
                     CTestData(FactCount) = Resv(IntR)
                     FactCount = FactCount + 1                    
                     DoEvents
                     Next IntR
                End If
                DoEvents
            Endif
            Do While  Comm.InBufferCount = 0 '无数据则测试结束
              debug.print "实验结束"
              TestFlag = ture
              Exit Do
           Loop
           if TestFlag  then Exit do
        
Exit Sub