问题:尝试通过Java使用comport从某些电子秤读取
我正在尝试使用Java从com端口读取。到目前为止,我已经成功地创建了一个使用Java SerialPort和InputStream类从comport读取的小应用程序。
应用程序使用SerialPortEventListener来侦听通过比例计算器发送到计算机的事件。到目前为止,我已经取得了一些成功,通过在事件监听器中使用InputStream从comport读取一些字节,但是输出没有任何意义,我继续以下列形式获取消息:
[B@8813f2
或
[B@1d58aae
澄清当我与音阶键盘交互时,我在屏幕上收到这些消息。我只需要一些正确解释输出的帮助。我是否使用正确的类来读取和写入comport?
答案 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()