2014-03-12 4 views
0

Привет Я читаю данные из мультиметра, и я должен хранить эти значения в float. Я использую jar-файл javax.comm для него и Serial-порт. Но после чтения из него я получаю такие ценности, какЧтение из последовательного порта в Java

[B @ 1592174 [B @ a352a5 [B @ 86fe26 [B @ 97a560 ...

И когда я преобразование этих значений в строку и в два раза я получаю огромное количество, которое не такое же, как значение в мультиметре. И что же мне делать??

Я делаю чтение из последовательного порта через inputStream и преобразовываю их в массив байтов.

+0

Возможный дубликат [Самый простой способ печати массива в Java] (http://stackoverflow.com/questions/409784/simplest-way-to-print-an-array-in-java) – chrylis

ответ

0

Вы печать фактического byte[] объекта, чей toString показывает класс ([B для массива байт) и хэш-код (a352a5, например). Вместо этого используйте Arrays.toString(byteArray).

+0

Я использовал массивы .toString (byteArray), но он печатает массив, состоящий из целых чисел. И эти значения не совпадают с моими значениями мультиметра. – ajroxx27

+0

Значение для [B @ 86fe26: [-16, 120, -16, -128, -128, 112, -128, -16, -128, -8, 112, 120, -16, -128, -8, 120, -8, -16, 0, 112, -128, 0, -8, 0, -8, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ....] поскольку мой размер byteArray равен 1024 .... – ajroxx27

+0

@ user3335924 Теперь вам нужно интерпретировать эти байты в соответствии с протоколом вашего мультиметра, который вы вообще не описали. Использование 'ByteBuffer', обернутое вокруг вашего массива, и вызов' getFloat' может работать, если это IEEE 754. – chrylis

Смежные вопросы