如上位机发送ASCII控制符.0A,下位机返回同样的控制符,请问该如何处理.看资料好像是ASCII值是0到31不能显示.

解决方案 »

  1.   

    判断,当返回控制符的ASCII码为31(单元分隔符 
    )时,输出一自定义字符代替控制符
      

  2.   

    用2进制接收,发送可按ASCII字符或BYTE字节.
    Option Explicit
        Dim strHex As String
    Private Sub Form_Load() 'MSComm1初始化
        MSComm1.CommPort = 1
        MSComm1.RThreshold = 1
        MSComm1.Settings = "9600,n,8,2"
        MSComm1.InputMode = comInputModeBinary '2进制接收
        MSComm1.PortOpen = True
    End SubPrivate Sub MSComm1_OnComm()
        Dim inbuff() As Byte
        Dim i As Integer
        Select Case MSComm1.CommEvent
            Case comEvReceive
                inbuff = MSComm1.Input
                For i = 0 To UBound(inbuff)
                    strHex = strHex & Right("0" & Hex(inbuff(i)), 2)
                Next i
                Text1 = strHex
                '处理接收的数据
        End Select
    End SubPrivate Sub Command1_Click() '发送Byte命令
        Dim sendSj(0) As Byte
        sendSj(1) = &HA
        MSComm1.Output = sendSj()
    End Sub
      

  3.   


    接收到下位机的应答,用 Hex() 函数转换成十六进制字符串来显示即可。
      

  4.   


    Private Sub Command2_Click() '发送ASCII字符命令
        Dim strSj As String
        strSj = Chr(&HA) '或strSj = Chr(10)
        MSComm1.Output = strSj
    End Sub