Программирование мобильных устройств на платформе .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:
'ОБНОВЛЕНИЕ СОСТОЯНИЯ: ОШИБКА!!!!
Поделиться:
Популярные книги
Локки 6. Потомок бога
6. Локки
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Эволюционер из трущоб
1. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Содержанка. Книга 2
6. Порочная власть
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Потомок бога 3
3. Локки
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Дважды одаренный
1. Дважды одаренный
Фантастика:
альтернативная история
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Черный Маг Императора 15
15. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
сказочная фантастика
фэнтези
фантастика: прочее
5.00
рейтинг книги
Феодал. Том 2
2. Диктатура Параметров
Фантастика:
рпг
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Газлайтер. Том 6
6. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Барон диктует правила
4. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Прапорщик. Назад в СССР. Книга 7
7. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Геном хищника. Книга третья
3. Я - Легенда!
Фантастика:
боевая фантастика
рпг
попаданцы
5.00
рейтинг книги
Бояръ-Аниме. Газлайтер. Том 30
30. История Телепата
Фантастика:
альтернативная история
аниме
фэнтези
5.00
рейтинг книги
Законы рода
1. Граф Берестьев
Фантастика:
фэнтези
боевая фантастика
аниме
5.00
рейтинг книги
Моров. Том 5
4. Моров
Фантастика:
фэнтези
попаданцы
аниме
5.00