Программирование мобильных устройств на платформе .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:
'ОБНОВЛЕНИЕ СОСТОЯНИЯ: ОШИБКА!!!!
Поделиться:
Популярные книги
Live-rpg. эволюция-3
3. Эволюция. Live-RPG
Фантастика:
боевая фантастика
6.59
рейтинг книги
Я – Орк
1. Я — Орк
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Беглец
1. Совсем не герой
Фантастика:
фэнтези
попаданцы
8.94
рейтинг книги
Корпулентные достоинства, или Знатный переполох. Дилогия
Фантастика:
юмористическая фантастика
7.53
рейтинг книги
Князь Мещерский
3. Зауряд-врач
Фантастика:
альтернативная история
8.35
рейтинг книги
Генерал-адмирал. Тетралогия
Генерал-адмирал
Фантастика:
альтернативная история
8.71
рейтинг книги
Идеальный мир для Лекаря 3
3. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Делегат
6. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Болотник 2
2. Болотник
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Возвышение Меркурия. Книга 17
17. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Курсант: Назад в СССР 11
11. Курсант
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Я – Орк. Том 4
4. Я — Орк
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Восход. Солнцев. Книга XI
11. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Мимик нового Мира 4
3. Мимик!
Фантастика:
юмористическая фантастика
постапокалипсис
рпг
5.00