Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
'ОБНОВЛЕНИЕ СОСТОЯНИЯ
'==========================================
setStatus(ReceiveStatus.NotDone_WaitingForSender)
'---------------------------------
'Открыть прослушивающее устройство
'---------------------------------
Try
m_wasListenerStopped = False
m_irListener = _
New System.Net.Sockets.IrDAListener(m_IrDAServiceName)
m_irListener.Start
Catch eListener As System.Exception
m_errorDuringTransfer = "Error creating listener - " + _
eListener.Message
GoTo exit_sub_with_error
End Try
'Проверить,
не поступила ли команда отменить выполнение
If (m_wasListenerStopped = True) Then
GoTo exit_sub_with_abort
End If
'------------------
'Принять соединение
'------------------
Try
'--------------------------------------------------------------------
'Выполнение будет приостановлено здесь до тех пор, пока устройство не
'начнет передавать информацию, или не будет остановлен объект
'прослушивания, выполняющийся в другом потоке)
'--------------------------------------------------------------------
irdaClient = m_irListener.AcceptIrDAClient
Catch eClientAccept As System.Exception
'Если прослушивание остановлено другим потоком, инициировавшим отмену
'выполнения, будет сгенерировано исключение и управление будет
'передано сюда.
If (m_wasListenerStopped = True) Then
GoTo exit_sub_with_abort
End If
'Если прослушивание не было прекращено,
'то произошло иное исключение. Обработать его.
m_errorDuringTransfer = "Error accepting connection - " + _
eClientAccept.Message
GoTo exit_sub_with_error
End Try
'В этом месте возможны два состояния:
'#1: Мы получили соединение от передающего устройства IR
'#2: IR-запрос был отменен (кто-то вызвал функцию STOP)
' (в этом случае приведенный ниже код сгенерирует исключение)
'Проверить, не было ли отменено выполнение
If (m_wasListenerStopped = True) Then
GoTo exit_sub_with_abort
End If
'==========================================
'ОБНОВЛЕНИЕ
СОСТОЯНИЯ
'==========================================
setStatus(ReceiveStatus.NotDone_Receiving)
'-------------------------
'Открыть принимающий поток
'-------------------------
Try
irStreamIn = irdaClient.GetStream
Catch exGetInputStream As System.Exception
m_errorDuringTransfer = "Error getting input stream - " + _
exGetInputStream.Message
GoTo exit_sub_with_error
End Try
'Приготовиться к получению данных!
Const BUFFER_SIZE As Integer = 1024
Dim inBuffer As Byte
ReDim inBuffer(BUFFER_SIZE)
Dim bytesRead As Integer
Do
'Считать байты из порта IR
bytesRead = irStreamIn.Read(inBuffer, 0, BUFFER_SIZE)
'Записать байты в наш выходной поток
If (bytesRead > 0) Then
outputStream.Write(inBuffer, 0, bytesRead)
End If
Loop While (bytesRead > 0)
outputStream.Flush 'Закончить запись любых выходных данных
'==========================================
'ОБНОВЛЕНИЕ СОСТОЯНИЯ: УСПЕШНО ВЫПОЛНЕНО
'==========================================
setStatus(ReceiveStatus.Done_Success)
Return 'No errors
'==========================================
'ОШИБКА.
'==========================================
exit_sub_with_abort:
'ОБНОВЛЕНИЕ СОСТОЯНИЯ: Отменено (но не из-за ошибки)
setStatus(ReceiveStatus.Done_Aborted)
Return
exit_sub_with_error:
'ОБНОВЛЕНИЕ СОСТОЯНИЯ: ОШИБКА!!!!
Поделиться:
Популярные книги
Печать Пожирателя
1. Пожиратель
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Привет из Загса. Милый, ты не потерял кольцо?
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Мастер 2
2. Мастер
Фантастика:
фэнтези
городское фэнтези
попаданцы
технофэнтези
4.50
рейтинг книги
Нечто чудесное
2. Романтическая серия
Любовные романы:
исторические любовные романы
9.43
рейтинг книги
Клан
2. Долгий путь домой
Фантастика:
боевая фантастика
космическая фантастика
5.60
рейтинг книги
Имя нам Легион. Том 3
3. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Запасная дочь
Фантастика:
фэнтези
6.40
рейтинг книги
Убивать чтобы жить 7
7. УЧЖ
Фантастика:
героическая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
У врага за пазухой
5. Оголенные чувства
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
Кодекс Охотника. Книга XXI
21. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Генерал Скала и ученица
2. Генерал Скала и Лидия
Любовные романы:
любовно-фантастические романы
6.30
рейтинг книги
Оцифрованный. Том 1
1. Линкор Михаил
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Его маленькая большая женщина
Любовные романы:
современные любовные романы
эро литература
8.78
рейтинг книги
Хуррит
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00