我读取到串口的数据是乱码,使用串口助手 以十六进制显示 是正确的 如02 03 05 e5 dc 03,请问在代码中怎么实现了,我读取到串口数据是十六进制的 用字符串保存的,急急 请求帮助,纠结一个星期了

解决方案 »

  1.   


    int len = HardwareControler.read(fd, buf, 256);  //读取串口数据 String string = new String(buf, 0, len);//将数据组成一个字符串 //从单片机发回给我的数据是十六进制的。
    try {
    tv.append(string);   //显示在界面的是乱码
    } catch (Exception e) {
    // TODO: handle exception
    }
    new readThread().start();// 处理完消息后立即开启监听线程
      

  2.   

    接受到的数据全是这样的@€憪憭檸搾?
    枑悙拵憭?
    悡槑晵
    :悙悜棎巧
    :悙悜棎巧
    :悙悜棎巧
    :悙悜棎巧要得到的是40 80 02 91 90 91 92 99 8E 93 92 F0 03 0D 0A 02 96 90 90 90 92 8E 91 92 E9 03 0D 0A 02 A3 90 90 93 98 8E 95 92 03 03 0D 0A 02 3A 90 90 90 91 97 90 C7 C9 03 0D 0A 02 3A 90 90 90 91 97 90 C7   这是我用串口助手十六进制显示的结果。
      

  3.   


       private static char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 
                                            'a', 'b', 'c', 'd', 'e', 'f'};
        public static String digestToHex(byte[] bytes){
            StringBuilder sb = new StringBuilder();
            for (byte b : bytes){
                sb.append(hexDigits[b>>4&0x0F]);
                sb.append(hexDigits[b&0x0F]);
            }
            
            return sb.toString();
        }