Вход/Регистрация
Программирование мобильных устройств на платформе .NET Compact Framework
вернуться

Салмре Иво

Шрифт:

'Принять соединение

'------------------

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
  • ...
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: