Input 属性
      返回并删除接收缓冲区中的数据流。该属性在设计时无效,在运行时为只读。语法object.InputInput 属性语法包括下列部分:部分 描述 
object 对象表达式,其值是“应用于”列表中的对象。 
说明InputLen 属性确定被 Input 属性读取的字符数。设置 InputLen 为 0,则 Input 属性读取缓冲区中全部的内容。InputMode 属性确定用 Input 属性读取的数据类型。如果设置 InputMode 为 comInputModeText,Input 属性通过一个 Variant 返回文本数据。如果设置 InputMode 为 comInputModeBinary,Input 属性通过一个 Variant .返回一二进制数据的数组。数据类型Variant

解决方案 »

  1.   

    不能直接把Mscomm缓冲区里的内容直接存储到String型变量里面,应该用Byte数组,除非通讯协议中明确规定是以Text方式进行数据交换的,原因就是以Text方式通讯单个字节的取值范围在0-7F之间,而已Binary方式的话单字节取值范围在0-FF,很显然你出错的两个字节都是大于7F的MSComm.InputLen = 0
    MSComm.InputMode =comInputModeBinarydim tmpArr() as ByteIf MSComm.InBufferCount Then
       tmpArr = MSComm.Input
    End Ifdim i as long
    for i=0 to ubound(tmpArr)-1
       debug.print hex(tmparr(i))
    next差不多应该是这样,随手写的,未作测试