Отбразить hex значения всех поступающих ASCII символов

Ответить
tolik777
Сообщения: 37
Зарегистрирован: 06 июл 2012, 14:25

Отбразить hex значения всех поступающих ASCII символов

Сообщение tolik777 » 25 ноя 2012, 14:37

Делаю коммуникацию для связи по Bluetooth/UART между Android и микроконтроллером.
С МК приходит какой-то непонятный символ, в логах он отображается как $, я не могу понять что это за символ, и откуда берется. Подскажите, как отобразить hex или dec значения всех поступающих данных по Bluetooh. Вот кусок кода:

Код: Выделить всё

private class ConnectedThread extends Thread {

		  	private final InputStream mmInStream;
		 
		    public ConnectedThread() {
		        InputStream tmpIn = null;
		 
		        // Get the input and output streams, using temp objects because
		        // member streams are final
		        try {
		            tmpIn = btSocket.getInputStream();
		        } catch (IOException e) { }
		 
		        mmInStream = tmpIn;
		    }
		 
		    public void run() {
		        byte[] buffer = new byte[256];  // buffer store for the stream
		        int bytes; // bytes returned from read()

		        // Keep listening to the InputStream until an exception occurs
		        while (true) {
		        	try {
		                // Read from the InputStream
		                bytes = mmInStream.read(buffer);
		                mHandler.obtainMessage(RECIEVE_MESSAGE, bytes, -1, buffer).sendToTarget();
		            } catch (IOException e) {
		                break;
		            }
		        }
		    }
		}
Посмотрел что приходит на ББ на компьютер при помощи терминала ttermpro, там все нормально. А в Android'е какой-то лишний символ в буфере. Причем при первой передаче он есть, а при последующих нет.

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

Re: Отбразить hex значения всех поступающих ASCII символов

Сообщение AndreyI » 25 ноя 2012, 15:08

Пишу с телефона, код не могу скопипастить. Я уже решал эту задачу преобразования байтового массива в hex строку. Я так mac адрес выводил.
Но там ничего сложного в цикле перебираешь массив байт и с помощью форматтера формируем строку. Шаблон для вывода используется %02X это означает выводить по два шестнадцатеричных символа на байт. Можно еще дополнять разделителями (пробел тире и т.п.) для удобства чтения.

tolik777
Сообщения: 37
Зарегистрирован: 06 июл 2012, 14:25

Re: Отбразить hex значения всех поступающих ASCII символов

Сообщение tolik777 » 26 ноя 2012, 10:20

Спасибо, ошибку нашел все же в программе МК. Компилятор C++ оказывается немного по другому обрабатывает sizeof("test") из-за чего вместо 4-байт передавалось 5 и получался лишний символ \0

Ответить