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

java 串口通信 使接收的数据显示为数字
串口通信,使用串口调试助手显示为十六进制数字,使用java却显示为一些标点符号,而且是根据十六进制数有规律地变化,比

如低于21显示“空格”,高于21显示“!”,请问这是什么原因?是因为没有转码吗?该怎样解决?

附接收部分代码如下:

InputStream inputStream; 
byte[] readBuffer = new byte[20]; 
inputStream = serialPort.getInputStream(); 
/* 从线路上读取数据流 */ 
while (inputStream.available() > 0) { 
int numBytes = inputStream.read(readBuffer); 

str=new String(readBuffer,"US-ASCII"); 
/*接收到的数据存放到文本区中*/ 
in_message.append(str+"/n");

------解决方案--------------------
首先要看楼主从串口接收的是什么数据了。
一般从底层硬件接收过来的数据,是需要一个解码过程的。
这个过程,和网络编程的解码过程,应该差不太多。

你要先明白,接收过来的数据,它的数据结构是什么。
比如,每次接收以什么条件作为开始,以什么条件进行结束。
有的协议里面会指出,先传输一个包头,包头里面含有本次传输的数据量大小,
你安照这个值判断本次接收是否结束。
有的协议,像传输文本的,就是遇到连续两个回车换行符,结束本次数据的接收。

判断了每次接收数据的起止,之后就是要判断数据的意义了。
比如,传输的数据,从第几个字节到第几个字节,是什么样类型的数据,表示什么样的意义。
如果,传输的是字符数据,还要弄清楚,这个数据是按什么样的字符编码进行转换的。

------解决方案--------------------
有没有通讯协议?通过那个就能解析出来了
------解决方案--------------------
是rs232,这个网上也有很多实例了