用MidB函数(取字节),不要用Mid函数
另外,要保证收发都是二进制方式

解决方案 »

  1.   

    接收时使用这段函数,应该可以,以上错误主要是应是延时问题?
    Function sComm(sCommand As String, comReceive As MSComm) As StringDim nReceiveCount As IntegerIf comReceive.PortOpen = False Then
        comReceive.PortOpen = True
    End If
        comReceive.Output = sCommand
    Do
        nReceiveCount = comReceive.InBufferCount
        Sleep (10)  'API 函数,挂起当前进程一段时间
    Loop Until comReceive.InBufferCount = nReceiveCount
    If comReceive.PortOpen = True Then
        sComm = comReceive.Input
    End If
    End Function
      

  2.   

    可能和UNICODE有关。既然要输入输出二进制流,建议最好把输入输出缓冲都连到一个Byte数组上,然后自己对收到的Byte进行转换。也可以用VB里的函数,VB里有函数可以实现UNICODE与8位ASCII的转换的。
      

  3.   

    如果要输入输出的都是ASCII码(小于127),直接用TEXT方式发就行。如果有大于128的码要发,就必须用Byte类型来发,否则肯定出错。楼上的那段代码我觉得也有问题....