Чтение онлайн

на главную - закладки

Жанры

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

Климов Александр Петрович

Шрифт:

Рис. 11.10. Сайт CodeProject, посвященный играм для .NET Compact Framework

Глава 12

Связь

Инфракрасное соединение

Несмотря на растущую популярность Wi-Fi, Bluetooth и других беспроводных технологий, по-прежнему не сдает своих позиций и передача данных через инфракрасный порт. Например, все мы каждый день применяем

инфракрасный порт при использовании дистанционного пульта телевизора! Вы можете использовать этот способ работы в своих приложениях для передачи разных типов данных.

Так как в этой технологии для передачи данных используется свет, то необходимо прямое соединение устройств, чтобы между ними не было препятствий. Несмотря на подобное ограничение, соединение через инфракрасный порт по-прежнему широко используется в цифровых камерах, КПК и ноутбуках. В этой главе будет показано, как использовать инфракрасный порт при помощи класса

IrDAClient
, входящего в библиотеку классов .NET Compact Framework.

История и теория

Основанная в 1993 году как некоммерческая организация, Ассоциация инфракрасной передачи данных (Infrared Data Association, или сокращенно IrDA) является международной ассоциацией (www.irda.org), создающей и продвигающей стандарты инфракрасной связи, позволяющие пользователям соединять устройства для передачи данных. Стандарты Infrared Data Association поддерживают огромное число устройств. На данный момент существует несколько версий технологии IrDA, которые различаются скоростью передачи данных.

Протокол IrDA позволяет соединяться с другим устройством без проводов при помощи ИК-излучения. Порт IrDA позволяет устанавливать связь на расстоянии до 1-2 метров. Интерфейс IrDA предполагает малую мощность потребления, что позволяет создавать недорогую продукцию.

Класс IrDAClient

Практически все устройства под управлением Windows Mobile имеют встроенные инфракрасные порты. Библиотека .NET Compact Framework имеет в своем составе классы, позволяющие работать с инфракрасной связью.

Инфракрасная связь осуществляется между двумя устройствами по принципу «сервер-клиент». Устройство, работающее как сервер, предлагает другому компьютеру установить связь для передачи данных через инфракрасный порт. Для осуществления передачи необходимо передать идентификатор устройства и имя устройства. Клиент ждет вызова необходимой службы и откликается на ее запрос. В результате между двумя компьютерами устанавливается связь

За инфракрасное соединение отвечает специальный класс

IrDAClient
, который может выступать и в роли сервера, и в роли клиента. Данный класс входит в библиотеку
System.Net.IrDA.dll
. Таким образом, при использовании класса
IrDAClient
необходимо добавить в проект ссылку на указанную библиотеку.

Для чтения и передачи данных используется метод

GetStream
, работающий с основным потоком данных. Компьютер-клиент должен знать имя устройства, с которым нужно установить связь. Программа может поочередно опросить все доступные устройства и выбрать нужное устройство для связи. Алгоритм подключения устройства к инфракрасному порту другого устройства
приведен далее.

1. Создать новый экземпляр класса

IrDAClient
.

2. Получить список доступных устройств с помощью метода

IrDAClient.DiscoverDevices
. Можно ограничить количество опрашиваемых устройств при помощи параметра
maxDevices
. Метод
DiscoverDevices
возвращает массив объектов
IrDADeviceInfo
.

3. Нужно исследовать каждый объект

IrDADeviceInfo
из полученного массива, чтобы найти необходимое устройство для связи.

4. Если подобное устройство найдено, то при помощи метода

IrDAClient.Connect
производится соединение. При этом необходимо указать имя службы

Создание программы для работы с ИК-связью

В этом разделе будет создано приложение, которое будет соединяться с другим устройством и пересылать ему текстовый файл. Прежде всего нужно создать новый проект

IrDA_CS
. На форме надо разместить три кнопки, список и строку состояния.

Кнопка

butFindDevs
предназначена для поиска устройств, кнопка
butSend
— для отправки текстового сообщения, а кнопка
butReceive
служит для приема сообщения. В списке
listBox1
будет отображаться информация об обнаруженных устройствах, а в строке состояния будут отображаться сообщения о производимых операциях. Для передачи данных и работы с файлами нам необходимо импортировать несколько пространств имен, как это показано в листинге 12.1.

Листинг 12.1

Imports System.Net

Imports System.IO

Imports System.Net.Sockets

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

IrDAClient
. Для этого выполним команду меню
Project►Add Reference
и в диалоговом окне выберем пункт
System.Net.IrDa
.

Теперь нужно объявить переменные на уровне класса, как показано в листинге 12.2

Листинг 12.2

private IrDAListener irListen;

private IrDAClient irClient;

private IrDAEndPoint irEndP;

private IrDADeviceInfo[] irDevices;

string fileSend;

string fileReceive;

string irServiceName;

int buffersize;

В конструкторе формы надо создать экземпляр класса

IrDAClient
, задать имена файлов для приема и отправки сообщения, указать имя службы, установить размер буфера для передаваемого файла и также временно сделать недоступными кнопки для отправки и посылки сообщения. Соответствующий код приведен в листинге 12.3.

Поделиться:
Популярные книги

Эпоха Опустошителя. Том I

Павлов Вел
1. Вечное Ристалище
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эпоха Опустошителя. Том I

Проблема майора Багирова

Майер Кристина
1. Спецназ
Любовные романы:
современные любовные романы
6.60
рейтинг книги
Проблема майора Багирова

Законы Рода. Том 13

Андрей Мельник
13. Граф Берестьев
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 13

Газлайтер. Том 15

Володин Григорий Григорьевич
15. История Телепата
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Газлайтер. Том 15

О, Путник!

Арбеков Александр Анатольевич
1. Квинтет. Миры
Фантастика:
социально-философская фантастика
5.00
рейтинг книги
О, Путник!

Прометей: каменный век

Рави Ивар
1. Прометей
Фантастика:
альтернативная история
6.82
рейтинг книги
Прометей: каменный век

Её (мой) ребенок

Рам Янка
Любовные романы:
современные любовные романы
6.91
рейтинг книги
Её (мой) ребенок

Идеальный мир для Лекаря 8

Сапфир Олег
8. Лекарь
Фантастика:
юмористическое фэнтези
аниме
7.00
рейтинг книги
Идеальный мир для Лекаря 8

Прометей: каменный век II

Рави Ивар
2. Прометей
Фантастика:
альтернативная история
7.40
рейтинг книги
Прометей: каменный век II

Цвет сверхдержавы - красный. Трилогия

Симонов Сергей
Цвет сверхдержавы - красный
Фантастика:
попаданцы
альтернативная история
8.06
рейтинг книги
Цвет сверхдержавы - красный. Трилогия

Болтливый мертвец

Фрай Макс
7. Лабиринты Ехо
Фантастика:
фэнтези
9.41
рейтинг книги
Болтливый мертвец

На границе империй. Том 9. Часть 2

INDIGO
15. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 2

Истребители. Трилогия

Поселягин Владимир Геннадьевич
Фантастика:
альтернативная история
7.30
рейтинг книги
Истребители. Трилогия

Лишняя дочь

Nata Zzika
Любовные романы:
любовно-фантастические романы
8.22
рейтинг книги
Лишняя дочь