上个帖子问了半天,原来是发送端的问题
这里有了新的问题
现在在单片机和pc上的串口调试工具之间可以正确的发送和接收.
但是我自己写的vb程序,mscomm,接收的时候只能接受1/8的数据.正确的接收应该是
11 80 01 11 80 02 11 80 03...(每三个数是一组,而每组的最后两个字节数代表一个字 ,起始为8001,每组递增1),调试工具接收正确.而我自己的程序接收的是11 80 03 11 80 0b 11 80 13 11 80 1b....(起始为8003,每组递增8)
降低波特率也没有用.增加单片机发送之间的延时才能解决.是不是因为pc处理串口缓冲的数据速度跟不上接受的速度?如果是那样,为什么别人的调试工具就可以呢?程序对速度有一定要求,不便简单的加延时.
rthshold=1 inputlen=1.程序清单如下:Dim BufferByte() As Byte
Dim CommandFlag As IntegerPrivate Sub Command1_Click()
 CommandFlag = 1
 MSComm1.Output = "1"
 
End SubPrivate Sub Command2_Click()
CommandFlag = 0
MSComm1.Output = "0"End SubPrivate Sub Command3_Click()
Text1.Text = ""End SubPrivate Sub Form_Load()
 i = 0
 CommandFlag = 2
 MSComm1.PortOpen = True
End SubPublic Sub MSComm1_OnComm() '接收数据触发OnComm()事件
Dim ErroArray(30000) As Byte
ReDim BufferByte(3)
Dim buffer As Variant
Static i As Integer    Select Case MSComm1.CommEvent  '在CommEvent中接收数据
    Case comEvReceive
        buffer = MSComm1.Input
        BufferByte = buffer
        ErroArray(i) = BufferByte(0)
      
        MSComm1.InBufferCount = 0
        Text1.Text = Text1.Text + "  " + CStr(Hex(ErroArray(i)))
        i = i + 1
       
  
    
  End Select
  
  
End Sub