Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
} саtch{};//Поглотить любую ошибку
streamOutToIrDA = null;
}
if (streamInFromFile != null) {
try {
streamInFromFile.Close;
} catch{};//Поглотить любую ошибку
streamInFromFile = null;
}
if (irDASender != null) {
try {
irDASender.Close;
} catch{}; //Поглотить
любую ошибку
irDASender = null;
}
return; //Выход
}
//Проверить успешность выполнения
if (bSuccess == true) {
m_descriptionOfLastSendAttempt = "Success!";
setStatus(SendStatus.Finished_Successfully);
return;
}
//Проверить, не была ли операция отменена пользователем
if (m_wasSenderStopped == true) {
m_descriptionOfLastSendAttempt = "User Aborted.";
setStatus(SendStatus.Finished_Aborted);
return;
}
//B противном случае... Нам пока не удалось обнаружить сервер IrDA,
//имя которого совпадает с именем службы. Мы продолжим выполнение
//цикла и попытаемся найти сервер.
}
//Мы никогда не попадем в это место программы при выполнении
}
//Попытаться передать поток ввода-вывода (например, файл) посредством IR
//[возвращаемое значение]:
// true: успешная передача файла
// false: файл не был успешно передан
private bool sendStream(
out string errorDescription, ref System.IO.Stream streamOutToIrDA,
ref System.Net.Sockets.IrDAClient irDASender, ref System.IO.Stream streamInFromFile) {
errorDescription = "";
//----------------------------
//Создание нового клиента IRDA
//----------------------------
try {
//-------------------------------------------------------
//Возврат произойдет довольно быстро. Клиент будет выбран
//и возвращен, если прослушивающие
клиенты отсутствуют.
//-------------------------------------------------------
irDASender = new System.Net.Sockets.IrDAClient(m_IrDAServiceName);
} catch (System.Exception eCreateClient) {
//B данном случае могло возникнуть несколько ситуаций:
//#1: отсутствуют прослушивающие устройства
//#2: прослушивающее устройство существует, но не реагирует
// (может отказаться от разговора)
errorDescription = eCreateClient.Message;
return false;
}
//B данном случае могло возникнуть несколько ситуаций:
//#1: Мы получили соединение от приемного устройства IR
//#2: IR-запрос был отменен (кто-то вызвал функцию STOP).
if (m_wasSenderStopped == true) {
irDASender.Close;
irDASender = null;
return false;
}
//==========================================
//ПЕРЕДАТЬ ДАННЫЕ!
//==========================================
//Открыть файл, который мы хотим передать
streamInFromFile = System.IO.File.OpenRead(m_fileToSend);
//Открыть сокет IrDA, которому мы хотим передать данные
streamOutToIrDA = irDASender.GetStream;
const int BUFFER_SIZE = 1024;
byte[] inBuffer = new byte[BUFFER_SIZE];
int bytesRead;
int iTestAll = 0;
int iTestWrite = 0;
do {
//Считать байты из файла
bytesRead = streamInFromFile.Read(inBuffer, 0, BUFFER_SIZE);
iTestAll = iTestAll + 1;
//Записать байты в наш выходной поток
if (bytesRead > 0) {
streamOutToIrDA.Write(inBuffer, 0, bytesRead);
iTestWrite = iTestWrite + 1;
}
} while (bytesRead > 0);
//Сбросить выходной поток
streamOutToIrDA.Flush; //Закончить запись любых данных
Поделиться:
Популярные книги
Совок 5
5. Совок
Фантастика:
детективная фантастика
попаданцы
альтернативная история
6.20
рейтинг книги
Тринадцатый II
2. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Крестоносец
7. Помещик
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Идеальный мир для Лекаря 14
14. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга V
5. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Ты предал нашу семью
2. Предатели
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Авиатор: назад в СССР 11
11. Покоряя небо
Фантастика:
альтернативная история
5.00
рейтинг книги
Менталист. Революция
3. Выиграть у времени
Фантастика:
боевая фантастика
5.48
рейтинг книги
Лорд Системы
1. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
4.00
рейтинг книги
Без шансов
2. Пробуждение Системы
Фантастика:
боевая фантастика
рпг
постапокалипсис
5.00
рейтинг книги
Болотник 2
2. Болотник
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Стеллар. Трибут
2. Стеллар
Фантастика:
боевая фантастика
рпг
8.75
рейтинг книги
Краш-тест для майора
3. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
эро литература
6.25
рейтинг книги
Подаренная чёрному дракону
Любовные романы:
любовно-фантастические романы
7.07