Соединение и обмен данными

April 29, 2012 by admin Комментировать »

Для установления соединения и обмена данными пакет Java Bluetooth  API предлагает три способа,  но  мы  воспользуемся только одним  из  них, в  котором  используется протокол RFCOMM. Напомню,  что RFCOMM представляет собой  протокол  «виртуального» последова тельного порта, который применяется в профиле Serial Port Profile для организации соедине ния и обмена данными. Далее показан фрагмент программного кода, в котором демонстриру ется, как открыть соединение с Bluetooth устройством, работающим в режиме сервера:

// óñòàíîâèì íàøè   ïåðåìåííûå

StreamConnectionNotifier  notifier = null; StreamConnection   con  = null;

LocalDevice  localdevice  = null; ServiceRecord   servicerecord  = null; InputStream   input;

OutputStream  output;

// èíèöèàëèçèðóåì íàø  URL, êîòîðûé ñîäåðæèò  óíèêàëüíûé èäåíòèôèêàòîð (UUID),

// ÷òî  ïðàêòè÷åñêè   èñêëþ÷àåò  âîçìîæíîñòü  êîíôëèêòà ñ  äðóãèìè  óñòðîéñòâàìè

String url = "btspp://localhost:00112233445566778899AABBCCDDEEFF;name=serialconn";

// óñòàíàâëèâàåì ñîåäèíåíèå  ñ  óêàçàííûì URL  è

// ïåðåäàåì ðåçóëüòàò  â  StreamConnectionNotifier

149

ИНТЕРФЕЙСЫ USB И BLUETOOTH

notifier =  (StreamConnectionNotifier)Connector.open(url);

// áëîêèðóåì òåêóùèé  ïîòîê, ïîêà êëèåíò íå îòâåòèò con  = notifier.acceptAndOpen();

// îòâåò  ïîëó÷åí,  îòêðûâàåì ïîòîêè  ââîäà è  âûâîäà äàííûõ

input = con.openInputStream();

output  = con.openOutputStream();

// îòïðàâëÿåì äàííûå  ÷åðåç  ïîòîêè ââîäà–âûâîäà

. . .

Большей частью этот код напоминает тот, что был рассмотрен при выполнении регист рации сервиса. Переменная String url начинается с btspp://localhost: – это нужно при ис пользовании   профиля  Serial  Port  Profile.  Далее  следует  идентификатор  UUID, равный

00112233445566778899AABBCCDDEEFF.   Это обычный  идентификатор (можно  выбрать другой), наконец,  последняя часть URL – имя сервиса (можно его не задавать). Если имя сер виса задано, то в базе данных SDDB запись  о сервисе будет содержать строку:

ServiceName = serialconn

В данной реализации сервису назначается идентификатор канала, который клиент дол

жен предоставить серверу для установления соединения.

Установка  соединения  для профиля Serial  Port  Profile  для клиента  J2ME выполняется очень просто:

Connector.open().

StreamConnection   con  =(StreamConnection)Connector.open(url);

Программа  получает строку с URL, который нужен для установки соединения устройства Bluetooth  с сервисом, полученным в объекте ServiceRecord при поиске сервиса. Вот фрагмент кода, показывающий  установку соединения клиента с профилем Serial Port Profile и сервера с тем же профилем:

String connectionURL = serviceRecord.getConnectionURL(0,  false); StreamConnection   con  =(StreamConnection)Connector.open(connectionURL);

Как выглядит URL для клиента с профилем Serial Port Profile? Если, например, адрес сер

вера равен 0001234567AB, то строка с URL будет выглядеть, возможно, так:

btspp://0001234567AB:3

Цифра 3 в конце записи указывает  номер канала, присвоенный  сервером сервису, когда сервис был прописан в базе SDDB.

В примерах программного кода мы использовали очень мощный пакет JSR–82 Develop ment Kit фирмы Atinav, хотя можно использовать и очень популярный пакет J2ME Wireless Toolkit фирмы Sun Microsystems. Несмотря на  кажущуюся сложность программирования Bluetooth устройств,  эти программные  пакеты значительно упрощают этот процесс, что по зволяет научиться программировать  эти устройства даже новичкам.

Источник:  Магда Ю. С. Компьютер  в домашней лаборатории.  – М.: ДМК Пресс, 2008. – 200 с.: ил.

Оставить комментарий

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