来自设备usb的奇怪字符使用inputstream bytes [] java

时间:2014-12-10 16:37:40

标签: java serial-port byte inputstream

我必须得到一些通过设备USB接收的数据。 我可以连接到串口(使用javacomm库)并每两分钟接收一次发送设备的数据。这些数据将它们存储在byte []中并将其显示给InputStream,如下所示:

  

try { int count = inputStream.available(); byte[] bs = new byte[count]; System.out.print(inputStream.read(bs));//also with (bs,0,count)..
} catch (IOException e) { }

但这显示总是0(零)。我尝试过其他方法,例如直接打印de byte [],输出是“[B @ e35bb7”我不知道这是什么......

  

try { System.out.println(bs); } catch (IOException e) { }

我尝试将其转换为String:

  

try { String me=bs.toString(); String txtohex=String.format("%04x", new BigInteger(1, me.getBytes("UTF-8"))); System.out.println(txtohex);//returns 5b424031633765326461
} catch (IOException e) { }

或:

try {
StringBuilder sb = new StringBuilder();
for (byte b : bs){ sb.append(String.format("%02X ", b));
} System.out.println(sb.toString());//returns C4 3C 00 A0 00 00 00 00 00 } catch (IOException e) { }

但这是错误的,因为我正在转换字符串[B @ e35bb7。从设备我必须得到一个非常长的二进制或十六进制字符串,这我不是。我还能做些什么来准确接收设备发送给我的内容?

1 个答案:

答案 0 :(得分:0)

使用new String(btye[])代替toString()从字节数组中获取字符串。