用Mscomm控件做一个串口调试软件,下位机总共发上来77个字节的信文,可是无论我把inputlen属性设多大,却只能最多收到前8个字节的数据,只是为什么呀?我的inbuffersize=1024,已经很大了,谢谢

解决方案 »

  1.   

    谢谢你的建议,这个方法我试过了,还是不行呀,下面是我的程序(主要部分),请帮我看一下:
    Private Sub MSComm2_OnComm() 
      Select Case MSComm2.CommEvent
        Case comEvReceive
                 Call Rec_disp
        End Select
     MSComm2.PortOpen = False
    End SubPublic Sub Rec_disp()
    Dim Buffer() As Byte   
    Dim Arr() As Byte
    Dim Recbuf() As Byte
    Dim Recbufsum() As Byte       
    Static Intcount As Integer
    Static Templen As Integer
    Dim P, P1, N As Integer
    Static Bufcount As Integer
    Dim Chksum() As Byte
    Dim Chkresult As Boolean
    Dim Recsum() As Byte
    Dim N_so_mode(7) As Byte
    Dim Status(15) As Boolean    Buffer = MSComm2.Input
        Arr = Buffer
     
     余下的省略了,到这步时,数组Arr里只有8个字节的内容,这是为什么呀??谢谢  
         
      

  2.   

    是不是时间问题,比如你选用的波特率比较慢 ,触发了ONCOMM事件后你关闭了ONCOMM,(可能不大对,仅供参考吧)
      

  3.   

    用串口调试助手之类的程序看一下,是否77个字节都发送过来了 ,如果发送无误
    你可以试试一个字节一个字节的接收
    dim buf(0 to 0) as byte
    dim i as integer
    i=0
    do until mscomm1.inbufcount>0
        buf=mscomm1.input
        delay(xx)    '实在不行你可以用个延时函数,延时个10毫秒看看
        arr(i)=buf(0)
        i=i+1
    loop