Программирование КПК и смартфонов на .NET Compact Framework
Шрифт:
Листинг 12.3
public Form1 {
InitializeComponent;
irClient = new IrDAClient;
// Файлы, предназначенные для отправки и приема
fileSend = ".\\My Documents\\send.txt";
fileReceive = ".\\My Documents\\receive.txt";
// Задаем имя для службы IrDA
// Это может быть любое слово
//
Другие устройства для примера должны использовать это же
// слово
irServiceName = "IrDAFtp";
// Устанавливаем максимальный размер буфера для передаваемого
// файла
buffersize = 256;
// Делаем недоступными кнопки отправки и посылки сообщений
// до тех пор, пока не будут обнаружены устройства
butSend.Enabled = false;
butReceive.Enabled = false;
}
Обнаружение устройств
Теперь надо написать код для кнопки
butFindDevs
, предназначенной для обнаружения устройств. При тестировании примера необходимо направить инфракрасные порты устройств друг на друга. Код, ответственный за выполнение этой задачи, приведен в листинге 12.4. Листинг 12.4
private void butFindDevs_Click(object sender, EventArgs e) {
// Ищем доступные устройства с инфракрасной связью
// и помещаем их в список
// Поиск не более трех доступных устройств
irDevices = irClient.DiscoverDevices(2);
// Если устройства не найдены, то выводим сообщение
if (irDevices.Length == 0) {
MessageBox.Show("Устройства с ИК-портами не обнаружены!");
return;
}
// Перечисляем массив IrDADeviceInfo
// и выводим информацию о каждом устройстве в список
string device;
int ID;
listBox1.Items.Clear;
foreach (IrDADeviceInfo irDevice in irDevices) {
ID = BitConverter.ToInt32(irDevice.DeviceID, 0);
device =
ID.ToString + " " + irDevice.DeviceName + " " + irDevice.CharacterSet +
" " + irDevice.Hints;
listBox1.Items.Add(device);
}
listBox1.SelectedIndex = 0;
if (irDevices.Length > 0)
statusBar1.Text = irDevices.Length.ToString + "
устройств(а)";
// Делаем доступными кнопки для отправки и посылки сообщения
butSend.Enabled = true;
butReceive.Enabled = true;
}
Передача данных
Код для отправки и посылки файлов приведен в листинге 12.5.
Листинг 12.5
private void butSend_Click(object sender, EventArgs e) {
// Открываем файл для отправки и получаем его поток
Stream fileStream;
try {
fileStream = new FileStream(fileSend, FileMode.Open);
} catch (Exception exFile) {
MessageBox.Show("Не могу открыть " + exFile.ToString);
return;
}
// Создаем IrDA-клиент с установленным именем службы.
// которое должно совпадать с именем службы на другом
// IrDA-клиенте
try {
irClient = new IrDAClient(irServiceName);
} catch (SocketException exS) {
MessageBox.Show("Ошибка сокета: " + exS.Message +
" - Вы щелкнули на кнопке Получить на другом устройстве?");
return;
}
// Получим поток
Stream baseStream = irClient.GetStream;
// Получим размер отправляемого файла
// и запишем это значение в поток
byte[] length = BitConverter.GetBytes((int)fileStream.Length);
baseStream.Write(length, 0, length.Length);
// Создаем буфер для чтения файла
byte[] buffer = new byte[buffersize];
// Показываем число отправленных байт
int fileLength = (int)fileStream.Length;
statusBar1.Text = "Отправлено " + fileLength + " байт";
// Читаем файловый поток в базовом потоке
while (fileLength > 0) {
int numRead = fileStream.Read(buffer, 0, buffer.Length);
baseStream.Write(buffer, 0, numRead);
Поделиться:
Популярные книги
Эпоха Опустошителя. Том I
1. Вечное Ристалище
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Проблема майора Багирова
1. Спецназ
Любовные романы:
современные любовные романы
6.60
рейтинг книги
Законы Рода. Том 13
13. Граф Берестьев
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Газлайтер. Том 15
15. История Телепата
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
О, Путник!
1. Квинтет. Миры
Фантастика:
социально-философская фантастика
5.00
рейтинг книги
Прометей: каменный век
1. Прометей
Фантастика:
альтернативная история
6.82
рейтинг книги
Её (мой) ребенок
Любовные романы:
современные любовные романы
6.91
рейтинг книги
Идеальный мир для Лекаря 8
8. Лекарь
Фантастика:
юмористическое фэнтези
аниме
7.00
рейтинг книги
Прометей: каменный век II
2. Прометей
Фантастика:
альтернативная история
7.40
рейтинг книги
Цвет сверхдержавы - красный. Трилогия
Цвет сверхдержавы - красный
Фантастика:
попаданцы
альтернативная история
8.06
рейтинг книги
Болтливый мертвец
7. Лабиринты Ехо
Фантастика:
фэнтези
9.41
рейтинг книги
На границе империй. Том 9. Часть 2
15. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Истребители. Трилогия
Фантастика:
альтернативная история
7.30
рейтинг книги
Лишняя дочь
Любовные романы:
любовно-фантастические романы
8.22