streamOutToIrDA.Write(inBuffer, 0, bytesRead)
iTestWrite = iTestWrite + 1
End If
Loop While (bytesRead > 0)
'Сбросить выходной поток
streamOutToIrDA.Flush 'Закончить запись любых данных
streamOutToIrDA.Close 'Закрыть поток
streamOutToIrDA = Nothing
'Освободить локальный файл
streamInFromFile.Close
streamOutToIrDA = Nothing
'Освободить порт IrDA
irDASender.Close
irDASender = Nothing
'Успешное завершение!!!
Return True
End Function
End Class
'-------------------------------------------------------------------
'Обеспечивает прием файла через IrDA (инфракрасный порт)
'Этот класс НЕ является реентерабельным и не должен вызываться более
'чем одной функцией за один раз. Если необходимо иметь несколько
'сеансов связи через IR, это необходимо делать путем создания
'нескольких различных экземпляров данного класса.
'--------------------------------------------------------------------
Public Class IrDAFileReceive
Private m_wasListenerStopped As Boolean
Private m_IrDAServiceName As String
Private m_fileNameForDownload As String
Private m_errorDurmgTransfer As String
Private m_irListener As System.Net.Sockets.IrDAListener
Private m ReceiveStatus As ReceiveStatus
Public ReadOnly Property ErrorText As String
Get
Return m_errorDuringTransfer
End Get
End Property
'--------------------------
'Различные состояния приема
'--------------------------
Public Enum ReceiveStatus
NotDone_SettingUp
NotDone_WaitingForSender
NotDone_Receiving
Done_Success
Done_Aborted
Done_ErrorOccured
End Enum
'------------------------------
' Возвращает состояние передачи
'------------------------------
Public ReadOnly Property Status As ReceiveStatus
Get
SyncLock (Me)
Return m_ReceiveStatus
End SyncLock
End Get
End Property
Private Sub setStatus(ByVal newStatus As ReceiveStatus)
'Обеспечить многопоточную безопасность для предотвращения
'параллельного выполнения операций чтения/записи
SyncLock (Me)
m_ReceiveStatus = newStatus
End SyncLock 'end lock
End Sub
'--------------------------------------------------
' (in) filename: желаемое имя для входного файла IR
'--------------------------------------------------
Public Sub New(ByVal filename As String, ByVal irdaServiceName As String)
'Имя сокета IrDA, который мы хотим открыть
m_IrDAServiceName = irdaServiceName
'Имя файла, в котором мы хотим сохранить полученные данные
m_fileNameForDownload = filename
End Sub
'----------------------------------------------------------
'Обеспечивает асинхронный прием файла через IR
' (in) filename: имя файла, в который осуществляется запись