Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
В настоящее время код, использующий сокеты IrDA .NET Compact Framework, будет выполняться на таких физических устройствах, оборудованных аппаратурой IrDA, как Pocket PC и смартфоны, но не будет правильно выполняться на эмуляторах
Если вы попытаетесь создать сокет IrDA или соединиться с ним при помощи кода, выполняющегося на эмуляторах Pocket PC, смартфона или Windows СЕ, то, вероятнее всего, в процессе выполнения вашего приложения сгенерируется исключение. Это означает, что, в отличие от большинства других средств .NET Compact Framework, проектировать и тестировать код для 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, и после того, как
//он найден, направляет ему поток данных файла.
//====================================================================
Поделиться:
Популярные книги
Паладин из прошлого тысячелетия
1. Соприкосновение миров
Фантастика:
боевая фантастика
попаданцы
6.25
рейтинг книги
Дорога к счастью
Любовные романы:
любовно-фантастические романы
6.11
рейтинг книги
Мастер 2
2. Мастер
Фантастика:
фэнтези
городское фэнтези
попаданцы
технофэнтези
4.50
рейтинг книги
Законы Рода. Том 3
3. Граф Берестьев
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Столичный доктор. Том III
3. Столичный доктор
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Адепт. Том 1. Обучение
6. Совсем не герой
Фантастика:
фэнтези
9.27
рейтинг книги
Огни Аль-Тура. Желанная
3. Эйнар
Любовные романы:
любовно-фантастические романы
эро литература
5.25
рейтинг книги
Отмороженный 4.0
4. Отмороженный
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Держать удар
11. Девяностые
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Соль этого лета
1. Самбисты
Любовные романы:
современные любовные романы
6.00
рейтинг книги
Бестужев. Служба Государевой Безопасности
1. Граф Бестужев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Шипучка для Сухого
Любовные романы:
современные любовные романы
8.29
рейтинг книги
Идеальный мир для Лекаря 7
7. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Не грози Дубровскому! Том II
2. РОС: Не грози Дубровскому!
Фантастика:
фэнтези
попаданцы
аниме
5.00