当前位置:编程学习 > C#/ASP.NET >>

VB串口发送大数据量问题

最近需要用VB的串口需要传送800x480的数据,数据发送格式为AA 06 00 00 00 11 11 11 55,其中三个00为地址位,三个11为数据,采用for循环来发送,波特率为115200,8位。在发送的过程中会出现数据丢失的情况,如:
AA 07 12 00 12 45 34 63 AD 55
AA 07 12 0012 46 87 08 AB 55
AA 07 12 00 13 48 90 89 12 55
正常应该是:
AA 07 12 00 12 45 34 63 AD 55
AA 07 12 0012 46 87 08 AB 55
AA 07 12 00 12 47 90 89 12 55
缓冲器设置为20K,延迟时间也很长,具体的代码如下:
For j = 1 To bmpSendCnt Step 1
            
                If Bmplen(2) < 255 Then
                    Bmplen(2) = Bmplen(2) + 1
                Else
                    Bmplen(2) = 0
                    If Bmplen(1) < 255 Then
                            Bmplen(1) = Bmplen(1) + 1
                    Else
                        Bmplen(1) = 0
                        If Bmplen(0) < 255 Then
                            Bmplen(0) = Bmplen(0) + 1
                        Else
                            Bmplen(0) = 0
                        End If
                    End If
                End If
        
                bmpSendadr(0) = Bmplen(0)
                bmpSendadr(1) = Bmplen(1)
                bmpSendadr(2) = Bmplen(2)
                
                
                bmpSendData(0) = BmpData(BmpDataOffset + k) 'R
                k = k + 1
                bmpSendData(1) = BmpData(BmpDataOffset + k) 'G
                k = k + 1
                bmpSendData(2) = BmpData(BmpDataOffset + k) 'B
                k = k + 1
                
                
                specByte(0) = &HAA
                specByte(1) = &H7
                
                specByte(2) = &H12
                
                specByte(3) = bmpSendadr(0)
                specByte(4) = bmpSendadr(1)
                specByte(5) = bmpSendadr(2)
                
                specByte(6) = bmpSendData(2)
                specByte(7) = bmpSendData(1)
                specByte(8) = bmpSendData(0)
    
                specByte(9) = &H55
                sendRtn = WriteFile(hComm, specByte(0), 10, byteSendNum, ov_Write)

               For TimeOutCnt1 = 0 To 150000
                Next TimeOutCnt1
           Next j

请各位大侠帮帮鉴定一下,提一下意见,谢谢哈~~ --------------------编程问答-------------------- 用该是等待的时间太短
用   Thread.Sleep()
你这是VB6吧 --------------------编程问答-------------------- 怎么一个一个发?组成一个串一起发送试试.
补充:.NET技术 ,  VB.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,