Программирование КПК и смартфонов на .NET Compact Framework.

Технология Bluetooth.

Несмотря на свою дешевизну и простоту, инфракрасное соединение имеет несколько существенных недостатков. К ним относятся маленький радиус действия и возможность связи в пределах прямой видимости. Этих недостатков лишено Bluetooth-соединение.

Но и тут не обошлось без ложки дегтя в бочке меда. Во-первых, существует два различных подхода к реализации Bluetooth-соединений, которые не совместимы друг с другом. Во-вторых, пока не существует поддержки этой технологии в управляемом коде .NET Compact Framework. Примеры с Bluetooth-связью мы будем приводить для устройств под управлением Windows Mobile 5.0, так как они гарантированно используют одну и ту же реализацию Bluetooth-технологии. Так как библиотека .NET Compact Framework не имеет в своем составе классов, работающих с Bluetooth, то придется воспользоваться вызовами функций Windows API, как показано в листинге 12.6.

Листинг 12.6.

Public enum RadioMode {

 Off = 0,

 Connectable = 1,

 Discoverable = 2.

}

/// <summary>

/// Получает текущий статус bluetooth.

/// </summary>

/// <param name="dwМоdе">флаги</раrаm>

/// <returns></returns>

[DllImport("BthUtil.dll")].

Public static extern int BthGetMode(out RadioMode dwMode);

/// <summary>

/// Устанавливает новый режим bluetooth.

/// </summary>

/// <param name="dwМоdе">флаги для установки режима</раrаm>

/// <returns></returns>

[DllImport("BthUtil.dll")].

Public static extern int BthSetMode(RadioMode dwMode);

Private void mnuOn_Click(object sender, EventArgs e) {

 BthSetMode(RadioMode.Connectable);

 lblStatus.Text = RadioMode.Connectable.ToString();

}

Private void Form1_Load(object sender, EventArgs e) {

 RadioMode mode;

 int ret = BthGetMode(out mode);

 lblStatus.Text = mode.ToString();

}

Private void mnuOff_Click(object sender, EventArgs e) {

 ВthSеtМоdе(RadioMode.Off);

 lblStatus.Text = RadioMode.Off.ToString();

}

В этом примере после запуска приложения текущий режим Bluetooth определяется при помощи функции BthGetMode, а с помощью команд меню пользователь может включать или выключать Bluetooth-соединение, используя функцию BthSetMode.