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

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

Жанры

Программирование мобильных устройств на платформе .NET Compact Framework

Салмре Иво

Шрифт:
В настоящее время код, использующий сокеты IrDA .NET Compact Framework, будет выполняться на таких физических устройствах, оборудованных аппаратурой IrDA, как Pocket PC и смартфоны, но не будет правильно выполняться на эмуляторах

Если вы попытаетесь создать сокет IrDA или соединиться с ним при помощи кода, выполняющегося на эмуляторах Pocket PC, смартфона или Windows СЕ, то, вероятнее всего, в процессе выполнения вашего приложения сгенерируется исключение. Это означает, что, в отличие от большинства других средств .NET Compact Framework, проектировать и тестировать код для IrDA следует с использованием реального физического устройства. Хотя эта трудность и не является непреодолимой, процесс проектирования и тестирования приложения из-за этого усложняется, поскольку для тестирования кода, обеспечивающего работу с IrDA, вам потребуется два физических устройства, одно из которых действует в качестве IrDA-сервера, а второе — IrDA-клиента. Вследствие этой дополнительной сложности код для обмена данными через IrDA рекомендуется писать и тестировать отдельно от остальной части приложения с использованием максимально упрощенной модели приложения, чтобы исключить любые возможные просчеты в организации процесса передачи данных. После устранения всех возможных неполадок из кода, обеспечивающего работу с IrDA, его можно будет перенести в полную версию приложения.

Листинг 15.3. Тестовый код, который необходимо поместить в класс формы для тестирования передачи и приема данных посредством механизма IrDA

//Имя, которое мы хотим присвоить сокету IrDA

const string myIrDASocketName = "IrDaTestFileTransmit";

private void buttonTestFileSend_Click(object sender, System.EventArgs e) {

 //Создать простой текстовый файл, который мы хотим передать

 const string fileName = "\\myTestSendFile.txt";

 System.IO.StreamWriter textFileStream;

 textFileStream = System.IO.File.CreateText(fileName);

 textFileStream.WriteLine("Today...");

 textFileStream.WriteLine("is а nice day");

 textFileStream.WriteLine("to go swim");

 textFileStream.WriteLine("in the lake");

 textFileStream.Close; IrDAFileSend irdaFileSend;

 irdaFileSend = new IrDAFileSend(fileName, myIrDASocketName);

 //Имеется 2 режима: 1 — Sync (синхронный), 2 — Async (асинхронный)

 //1. Вызвать функцию в синхронном режиме

 //и блокировать поток выполнения до тех пор,

 //пока файл не будет передан

 //1a. Вызвать функцию в синхронном режиме

 //и блокировать поток выполнения до тех пор,

 //пока файл не будет передан

 this.Text = "Trying to send...";

 //1b. Подождать, пока клиент не будет найден, а затем передать файл

 irdaFileSend.LoopAndAttemptIRSend;

 //1c. Информировать пользователя о том, что файл передан

 System.Windows.Forms.MessageBox.Show("File sent!");

 this.Text = "IrDA: Sent!";

 //2. Вызвать функцию в асинхронном режиме и поручить

 //передачу файла фоновому потоку

 //irdaFileSend.LoopAndAttemptIRSendAsync;

 //ПРИМЕЧАНИЕ: Если мы вызываем функцию в асинхронном режиме, то должны

 //периодически проверять, не завершила ли она выполнение, путем

 //вызова метода 'irdaFileSend.Status'

}

private void buttonTestFileReceive_Click(object sender, System.EventArgs e) {

 //Если файл назначения уже существует, уничтожить его

 const string fileName = "\\myTestReceiveFile.txt";

 if (System.IO.File.Exists(fileName)) {

System.IO.File.Delete(fileName);

 }

 IrDAFileReceive irdaFileReceive;

 irdaFileReceive = new IrDAFileReceive(fileName, myIrDASocketName);

 //Имеется 2 режима: 1 - Sync (синхронный), 2 — Async (асинхронный)

 //1. Вызвать функцию в синхронном режиме

 //и блокировать поток выполнения до тех пор,

 //пока файл не будет получен

 //1a. Информировать пользователя о том, что мы ожидаем получения файла

 this.Text = "Waiting to receive...";

 //1b. Ожидать, пока не будет сделана попытка установления с нами связи

 //и передачи файла

 irdaFileReceive.WaitForIRFileDownload;

 //1c. Информировать пользователя о том, что мы получили переданный файл

 this.Text = "IrDA: received!";

 System.Windows.Forms.MessageBox.Show("File received!");

 //2. Вызвать функцию в асинхронном режиме и поручить

 //получение файла фоновому потоку

 //irdaFileReceive.WaitForIRFileDownloadAsync;

 //ПРИМЕЧАНИЕ: Если мы вызываем функцию в асинхронном режиме, то должны

 //периодически проверять, не завершила ли она выполнение, путем

 //вызова метода 'irdaFileReceive.Status'

}

Листинг 15.4. Класс IrDAIrDAFileSend

//====================================================================

//Этот класс является клиентом IrDA. Он осуществляет поиск сервера

//IrDA, имя которого совпадает с именем службы IrDA, и после того, как

//он найден, направляет ему поток данных файла.

//====================================================================

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

Последний Паладин. Том 8

Саваровский Роман
8. Путь Паладина
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Последний Паладин. Том 8

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

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

Мы друг друга не выбирали

Кистяева Марина
1. Мы выбираем...
Любовные романы:
остросюжетные любовные романы
прочие любовные романы
современные любовные романы
5.00
рейтинг книги
Мы друг друга не выбирали

Неучтенный элемент. Том 4

NikL
4. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 4

Светлейший князь

Злотников Роман Валерьевич
4. Император и трубочист
Фантастика:
героическая фантастика
альтернативная история
5.00
рейтинг книги
Светлейший князь

Дочь моего друга

Тоцка Тала
2. Айдаровы
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Дочь моего друга

Родословная. Том 1

Ткачев Андрей Юрьевич
1. Линия крови
Фантастика:
городское фэнтези
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Родословная. Том 1

Неучтенный элемент. Том 2

NikL
2. Антимаг. Вне системы
Фантастика:
городское фэнтези
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 2

Черный Маг Императора 15

Герда Александр
15. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
сказочная фантастика
фэнтези
фантастика: прочее
5.00
рейтинг книги
Черный Маг Императора 15

Княжья Русь

Мазин Александр Владимирович
6. Варяг
Приключения:
исторические приключения
9.04
рейтинг книги
Княжья Русь

Мастер 3

Чащин Валерий
3. Мастер
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер 3

Черный Маг Императора 17

Герда Александр
17. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Черный Маг Императора 17

Часограмма

Щерба Наталья Васильевна
5. Часодеи
Детские:
детская фантастика
9.43
рейтинг книги
Часограмма

Неучтенный элемент. Том 8

NikL
8. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 8