解决方案 »

  1.   

    RTU模式发送的是16进制数的字节数组啊
    MODBUS TCP就是RTU前面加了6个字节,后面去掉了CRC校验,其他的没有区别
      

  2.   

    字符串转byte数组
    用System.Text.Encoding.GetEncoding("GB2312").GetBytes(string)
    和System.Text.Encoding.GetEncoding("GB2312").GetString(byte[ ])
    互相转,其中的GB2312可以替换成UTF-8等,发送端和接收端转码方式要一致
      

  3.   

    另,你给出的发送字符串,根本不是modbus ASCII
    modbus协议有自己的规则,你随便弄个字符串从串口发出去,根本用的不是任何协议
      

  4.   

       
    上面代码是将待发送的字符串,按每个字符转换成字节数组(默认是ASCII编码),这应该是modbus ASCII模式吧?  
    这段代码是先把整数123456存在字节数组中,RTU模式是每个字节表示0~255的整数大小吧?然后再将字符串编码在字节数组,最后再将这两个字节数组合并为一个字节数组,这样的模式是RTU模式吗?