Справка по разработке Bluetooth для Blackberry - PullRequest
1 голос
/ 06 сентября 2010

Я застрял несколько дней на моем приложении Bluetooth. Его роль заключается в получении данных с устройств Bluetooth, используя протокол последовательного порта ... Приложение работает в фоновом режиме телефона и устройств, когда им нужно отправить информацию, включает Bluetooth и пытается отправить фрейм данных.

Проблема в том, что с помощью этого приложения можно подключить несколько устройств. И мне не удается поставить телефон в качестве сервера, чтобы он мог получать непрерывные данные. Это означает, что я могу создать Connector.open ("btspp: localhost: ....") с AcceptAndOpen (), но эта функция запускается только один раз, и я не могу перезапускаться бесконечно.


Решение было бы запустить AcceptAndOpen () Когда вызов Bluetooth закончен ... перезапустить функцию, но я не могу (я просто воссоздаю объект, который сделал открытие порта)


Я пытаюсь использовать без успеха: - PushRegistry ("btspp" не совместим) - Connector.open () с MAC-адресом клиентов (но это не самоблокировка)

Если кто-нибудь может мне помочь, как решить эту проблему. Потому что я тщательно искал на форумах ежевики ...

Спасибо, Фабрис

PS: Если вам нужен исходный код, я могу дать вам ... Но я не уверен, что это поможет вам ответить мне.

Ответы [ 3 ]

0 голосов
/ 06 сентября 2010

Убедитесь, что после получения соединения от acceptAndOpen вы передаете это соединение в новый поток. Это позволяет текущему «серверному» потоку вернуться назад и принять другое соединение (при условии, что оно находится в цикле).

0 голосов
/ 27 сентября 2010

Извините за поздний ответ.

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

public void start() {
    try {
    _connector = (StreamConnectionNotifier) Connector.open("btspp://localhost:" + MY_UUID, Connector.READ);
    Runnable r = new Runnable() {
        public void run() {
            while(true) {
                try {
                    StreamConnection connection = _connector.acceptAndOpen();
                    onConnectionOpen(connection);
                }
                catch (IOException e) {
                    // Connection failed
                    break;
                }
            }
        }
    };
    Thread t = new Thread(r);
    t.start();
}
catch (IOException e) {
    // e.getMessage()
}

private void onConnectionOpen(StreamConnection connection) {
    RemoteDevice device = null;
    try {
        device = RemoteDevice.getRemoteDevice(connection);
    } catch (IOException e) {
        // e.getMessage()
    }
    if(device != null) {
        // Make your own process: read, write, pair, ...
    }
}

С уважением, Fabrice

0 голосов
/ 06 сентября 2010

Я только что положил вокруг acceptAndOpen():

while(true) {
    ...
}

Теперь все в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...