java 串口通信接收到乱码,怀疑是数据格式的问题,所以想了解一下。是用C++语言对单片机编程,使单片机传输 unsighed char型(占1个字节)数据。java使用InputStream 类接收数据。  
据我了解,inputstream处理的是字节流,那么是否不能接受单片机传来的char型数据,而要用字符流来处理?如果要用字符流处理的话,java中的字符使用Unicode码,占4个字节,而C++中的字符是ASCII码,占1个字节,这样该怎么处理?

解决方案 »

  1.   

    你好,单片机串口发送的数据是8位的,在JAVA接受端直接用字节流就可以,定义一个byte数组接收。另外最需要注意的是,你的乱码可能就是有效数据,因为单片机发送的数据是无符号的的,而JAVA不支持无符号数,把你发的有符号数显示成了无符号数据,所以可能表观上是乱码
      

  2.   


    单片机发送的数据类型和对它编程的语言有关吗?是不是不管什么编程语言,单片机发送的都是无符号数据还是可以更改成其他类型?比如可不可以用C++把单片机的数据格式改为char型?
      

  3.   

    由于JAVA的最高位是符号位,当你单片机传输的数据大于128时,JAVA端用byte接收到的话会变成负数,这时你需要把byte转成int来处理.转时注意符号的处理.如果不存在大于128的数据的话,应该不会有问题的.