Для встановлення з’єднання і обміну даними пакет 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 с.: Іл.