日期:2014-05-20  浏览次数:20815 次

java 串口通信 数据格式问题
java 串口通信接收到乱码,怀疑是数据格式的问题,所以想了解一下。

是用C++语言对单片机编程,使单片机传输 unsighed char型(占1个字节)数据。java使用InputStream 类接收数据。  


据我了解,inputstream处理的是字节流,那么是否不能接受单片机传来的char型数据,而要用字符流来处理?如果要用字符

流处理的话,java中的字符使用Unicode码,占4个字节,而C++中的字符是ASCII码,占1个字节,这样该怎么处理?

------解决方案--------------------
你好,单片机串口发送的数据是8位的,在JAVA接受端直接用字节流就可以,定义一个byte数组接收。另外最需要注意的是,你的乱码可能就是有效数据,因为单片机发送的数据是无符号的的,而JAVA不支持无符号数,把你发的有符号数显示成了无符号数据,所以可能表观上是乱码
------解决方案--------------------
它传出来应该就是字节码,本身不该有数据类型的概念。
------解决方案--------------------
由于JAVA的最高位是符号位,当你单片机传输的数据大于128时,JAVA端用byte接收到的话会变成负数,这时你需要把byte转成int来处理.转时注意符号的处理.如果不存在大于128的数据的话,应该不会有问题的.