Одновременное подключение к двум устройствам Bluetooth с одинаковым UUID - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь создать приложение для Android, которое подключается к двум модулям Bluetooth HC-05 (которые подключены к Arduino).

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

На одном телефоне это приводит к сбою приложения, на другом телефоне ничего (без исключений или уведомлений о том, что соединение было прервано) не происходит.

Итак, я проверил Интернет, и в большинстве случаев он говорит, что вы можете подключиться к двум устройствам Bluetooth одновременно (например, здесь ).

Я не могу понять, чтоПричина этой ошибки есть.Но у меня есть несколько идей.Может быть, кто-то может тогда подтвердить, или знает реальную проблему или, что еще лучше, решение:)

Поскольку я использую два модуля Bluetooth HC-05, у них одинаковый UUID, что, как я полагаю, может быть проблематичным, поскольку этот UUID являетсяне уникален для одного устройства.Но я не уверен, что это проблема.Может быть, кто-то знает, как изменить UUID HC-05?

Обратите внимание, что я посылаю данные с произвольными интервалами на обе машины.Так что я думаю, что это может вызвать проблему.Это в какой-то момент приложение пытается отправить на два устройства одновременно, и это вызывает проблемы.Так что я подумываю о том, чтобы сделать несколько решений для этого.Но я не уверен, как.Может быть, какой-то стек, в который я помещаю Данные и устройство, на которое нужно отправить их, а затем я отправляю их Элемент за элементом с некоторой задержкой между ними.Таким образом, отправка данных несколько «синхронизирована».Однако я не знаю, является ли это хорошим решением, и я благодарен за любой совет, который я мог бы получить.

Так что сейчас я подключаюсь к таким устройствам:

 public void connect(String mac){
    Set<BluetoothDevice> bondedDevices = BluetoothAdapter.getDefaultAdapter().getBondedDevices();
    for (BluetoothDevice devices : bondedDevices)
        if (devices.getAddress().equals(mac)) {
            this.device = devices;
            break;
        }

    if (this.device == null) {
        //some error handling
    } else {
        UUID id= UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
        try {
            this.socket = this.device.createRfcommSocketToServiceRecord(id);
            this.socket.connect();
            this.outputStream = this.socket.getOutputStream();
            final InputStream  st = this.socket.getInputStream();
            //some more init stuff
        } catch (Exception e) {
            e.printStackTrace();
            this.disconnect();
        }
    }
}

И я отправляюданные вроде этого (без лишнего кода):

byte[] send = new byte[9];
//fill Data
try {
    this.outputStream.write(send);
    this.outputStream.flush();       
} catch (Exception e) {
    //Displaying Toast with Error message                  
    Toast.makeText(DirtyCode.appcont, e.getMessage(), Toast.LENGTH_LONG).show();
    Log.e("SEND EXCEPTION:" + device.getName(), e.getMessage());
    e.printStackTrace();
    return false;
}

Так что я тоже думал, что мне может понадобиться как-то использовать BluetoothServerSocket.Но я не уверен в этом.

Соединение прекрасно работает только с одним подключенным устройством или с двумя подключенными устройствами, но только с отправкой на одно устройство (отправка очень случайных данных на второе работает обычно очень долго, прежде чем возникают проблемы).

Я пытался решить эту проблему долгое время, но не могу заставить ее работать, поэтому любая помощь творчески оправдана.

1 Ответ

0 голосов
/ 25 октября 2018

Невозможно подключиться одновременно к нескольким устройствам BT, каждый из которых имеет одну и ту же услугу BTЭто звучит так, у вас есть два динамика BT, и вы подключили их обоих, и вы запустили музыку, а затем оба динамика.Невозможно.

Но вы можете подключить несколько устройств BT, каждое из которых отличается от службы BT: Например: одновременное использование мыши BT и динамика BT.Это возможно.

...