Java从comport读取

时间:2011-04-09 00:25:48

标签: java serial-port

问题:尝试通过Java使用comport从某些电子秤读取

我正在尝试使用Java从com端口读取。到目前为止,我已经成功地创建了一个使用Java SerialPort和InputStream类从comport读取的小应用程序。

应用程序使用SerialPortEventListener来侦听通过比例计算器发送到计算机的事件。到目前为止,我已经取得了一些成功,通过在事件监听器中使用InputStream从comport读取一些字节,但是输出没有任何意义,我继续以下列形式获取消息:

[B@8813f2

[B@1d58aae

澄清当我与音阶键盘交互时,我在屏幕上收到这些消息。我只需要一些正确解释输出的帮助。我是否使用正确的类来读取和写入comport?

3 个答案:

答案 0 :(得分:1)

这些看起来像是将字节数组对象打印为原始对象引用的结果。因此,您的调用很可能会对System.out.something或System.err.something进行某种混淆调用。

答案 1 :(得分:1)

您已将数据读入byte[],然后尝试使用System.out.println(data)转储data,其中byte[] data已声明System.out.println(Arrays.toString(data)) 。不幸的是,这只会打印数组的内部表示,这是无用的,'[后跟十六进制哈希码。

相反,您要转储数组的内容。使用

String

是最适合您的方式。

否则,您需要迭代数组,并打印每个字节,或使用例如new String(data)(将使用平台默认编码)将字节数组转换为{{1}}。 / p>

答案 2 :(得分:0)

你在那里的对象显然是一个字节数组。我认为你拿着物体并将它打印到控制台。 见:http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Class.html#getName() 并且:http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html#toString()