VB接受下位机的数据,第一次总是少一位
下位机给上位机串口发数据:发送多次每次15个字节
第一次发送,上位机只能收到14个,第二次发送,上位机就会收到第一次发送的最后一个数据,但是能收到15个,最后一个还是收不到
我用串口工具测试,能完整收到下位机发送的数据比如:我发送1-15的数据
第一次上位机只能收到1-14
第二次在发送,上位机能收到 15 1 2 。。。14
希望高手解答,万分感谢!!!!!!
VB串口初始化:
MSComm1.Settings = "9600,N,8,1" MSComm1.PortOpen = True MSComm1.RThreshold = 1Private Sub MSComm1_OnComm() Dim j As Integer Dim lennow As Integer Dim InByte() As Byte '存储数据的缓冲区'定义一个二进制指针放接收到的数据 Select Case MSComm1.CommEvent '选择事件 Case comEvReceive '接收到字符 'Timer4.Enabled = False InByte() = MSComm1.Input '数据转移到指针 lennow = UBound(InByte) + 1 If lennow > 0 Then For j = 0 To lennow - 1 'recdata(lencount + j) = InByte(j) recdata(j) = InByte(j) Text1.Text = Text1.Text & recdata(j) Next j 'lencount = lencount + lennow End If j = 0 If lennow = 15 Then If recdata(2) = &HE1 Then For j = 0 To 3 If PicCD(j).Visible = False Then TIRec(j) = recdata(0) Exit For End If Next If j > 3 Then MsgBox "最多同时操作4股道!" Call SendData(recdata(0), &H55) End If End If For j = 0 To 3 If TIRec(j) = recdata(0) Then Call DataAnalysis(recdata, j) Exit For End If Next 'lencount = 0 lennow = 0 'Timer4.Enabled = True End If Case comEventRxOver '接收缓冲区满的处理 MsgBox "接收缓冲区满了!" '发出警告 End SelectEnd Sub
void serial_scon_receive(){ TR1=0 ; TCON=0xC0 ; SCON=0x50 ; TMOD=0x20; TH1=0xfd ; TL1=0xfd ; //FD:9.6K; FA:4.8K; F4:2.4K PCON=0x00 ; ES=1 ; //串口中断使能 PS=1 ; EA=1 ; TR1=1 ;}下位机串口发送:for(i=0; i<15; i++) { TR1 = 1; uart_r = 0; SBUF = pBuf[i]; while(uart_r==0) { _nop_();; } }