Модераторы: javastic
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прием сообщения по Bluetooth 
:(
    Опции темы
red30
Дата 4.9.2015, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 4.9.2015

Репутация: нет
Всего: нет



Помогите пожалуйста новичку разобраться с приемом сообщения по Bluetooth. Есть кнопка, после её нажатия по Bluetooth отправляется посылка 3 байта в формате (0x01 0x02 0x03), после чего программа ждет ответа (ответ будет 8 или 16 байт), нужно эти байты разделить по одному и обработать, после обработки, отправляем новый запрос 8 байт в формате (0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08) и так же ждем ответа -> обрабатывает и отправляем новый запрос и т.д.
Вот так я отправляю посылку:
Код

        btnOn.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                byte[] buffer = new byte[3];// буферный массив

                buffer[0] = 0x00;
                buffer[1] = 0x05;
                buffer[2] = 0x3F;

                mConnectedThread.writeArray(buffer);    // Send "1" via Bluetooth
                Toast.makeText(getBaseContext(), "Turn on LED", Toast.LENGTH_SHORT).show();
            }
        });

Вот так принимаю:
Код

        public void run() {
            byte[] buffer = new byte[16];
            int bytes;
            while (true) {
                try {
                    bytes = mmInStream.read(buffer);
                    bluetoothIn.obtainMessage(handlerState, bytes, -1, buffer).sendToTarget();
                } catch (IOException e) {
                    break;
                }
            }
        }

И обрабатываю:
Код

   bluetoothIn = new Handler() {
            public void handleMessage(android.os.Message msg) {
                switch (msg.what) {
                    case handlerState:
                        byte[] readBuf = (byte[]) msg.obj;
                        String strIncom = new String(readBuf, 0, msg.arg1);
                        sensorView0.setText("Данные1: " + strIncom);
                        break;
                }
            }
        };

На выходе в  msg.obj у меня получается строка.
Я побывал сделать так:
Код

        public void run() {
            byte[] buffer = new byte[8];
            int bytes;
            while (true) {
                try {
                    bytes = mmInStream.read(buffer);            //read bytes from input buffer
                    StringBuilder sb = new StringBuilder();
                    for (byte b : buffer) {
                        sb.append(String.format("%02X", b));
                    }
                    bluetoothIn.obtainMessage(handlerState, bytes, -1, sb).sendToTarget();
                } catch (IOException e) {
                    break;
                }
            }
        }

На выходе в sb у меня получается hex строка длинной 8 байт в формате (46000CFFFF008600). Можно ли как то на выходе получать массив integer или byte в формате:
sb[0] = 0x46;
sb[1] = 0x00;
sb[2] = 0x0C;
sb[3] = 0xFF;
sb[4] = 0xFF;
sb[5] = 0x00;
sb[6] = 0x86;
sb[7] = 0x00;
Причем если первые байты равны 0x00 они просто не отображаются, то есть на самом деле должно быть:
sb[0] = 0x00;
sb[1] = 0x46;
sb[2] = 0x00;
sb[3] = 0x0C;
sb[4] = 0xFF;
sb[5] = 0xFF;
sb[6] = 0x00;
sb[7] = 0x86;
Помоги пожалуйста!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Android | Следующая тема »


 




[ Время генерации скрипта: 0.0956 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.