我用串口发送一串字符,代码如下
temp=192
temp = Chr(temp)                       '求temp所对应的字符mStr = "#K" & Format(temp) + vbCrLf
     
MSComm1.Output = mStr接收到的显示为
文本显示为:
#K 十六进制显示为:
23 4B 00 0D 0A从接收到的数据看大于128的ACSII字符发送出来有问题,我程序中主要是把大于128的数转换成ACSII字符发送出来,不知道大家有什么好的建议,初学真是搞不太懂了

解决方案 »

  1.   

    发送ASCII大于128的字符须采用发送字节流方法:
    Private Sub Command1_Click() 
        Dim strSj As String
        strSj = "#K"
        MSComm1.Output = strSj
        Dim bytsj(0) As Byte
        bytsj(0) = &HC0 '192
        MSComm1.Output = bytsj
        strSj = vbCrLf
        MSComm1.Output = strSj
    End Sub
      

  2.   

    LZ:不会长,与发送6个字符一样.或者可以:
        
        Dim bytsj(4) As Byte
        bytsj(0) = Asc("#")
        bytsj(1) = Asc("K")
        bytsj(2) = &HC0 '192
        bytsj(3) = &HD  '=VbCr
        bytsj(4) = &HA  '=VbLf
        MSComm1.Output = bytsj
      

  3.   

    程序运行到下面第二句出错了
     bytsj(0) = &HC0 '192
     MSComm1.Output = bytsj   //这里报错
    显示:
    实时错误”380“
    无效的属性值
      

  4.   

       也是在做串口通信,看到别人的程序,奇怪为什么要一个字节一个字节的接收,是不是就是因为“发送ASCII大于128的字符须采用发送字节流方法”,这个是什么意思?能不能详细说一下子。
      

  5.   

    Dim bytsj(4) As Byte
        bytsj(0) = Asc("#")
        bytsj(1) = Asc("K")
        bytsj(2) = &HC0 '192
        bytsj(3) = &HD  '=VbCr
        bytsj(4) = &HA  '=VbLf
        MSComm1.Output = bytsj
    这个能够安全运行下去,非常感谢
      

  6.   

    发送ASCII大于128的字符须采用发送字节流方法,俺也不太懂,还请大侠详解
      

  7.   

    没用过大于128ASCII码值的字符.
    但查了下,似乎大于128值的ASCII码都不显示字符了
    是不是只能是16进制发送?学习