Hello!
I have problem to read from the comport with my ipaq hx4700. I think it works to open the comport but when I try to read from it then it does not work.
I have tried with following code to open the comport:
Dim intResult As Integer
Dim lpCommTimeouts As COMMTIMEOUTS
Dim lpDCB As New DCB
Try
intHandle = -1
If port > 0 Then
intHandle = CreateFile("COM" & port.ToString & ":", &HC0000000, 0, 0, 3, 0, 0)
If intHandle <> -1 Then
'intResult=PurgeComm(intHandle,
intResult = GetCommState(intHandle, lpDCB)
lpDCB.fBinary = 1
lpDCB.fParity = 1
lpDCB.fOutxCtsFlow = 0
lpDCB.fOutxDsrFlow = 0
lpDCB.fDtrControl = 1
lpDCB.fDsrSensitivity = 0
lpDCB.fTXContinueOnXoff = 1
lpDCB.fOutX = 0
lpDCB.fInX = 0
lpDCB.fErrorChar = 0
lpDCB.fNull = 0
lpDCB.fRtsControl = 1
lpDCB.fAbortOnError = 0
lpDCB.StopBits = stopbits
lpDCB.BytesSize = databits
lpDCB.Parity = parity
lpDCB.BaudRate = baudrate
lpDCB.XonChar = "1"
intResult = SetCommState(intHandle, lpDCB)
intResult = SetupComm(intHandle, rxbufsize, txbufsize)
lpCommTimeouts.ReadIntervalTimeout = 0
lpCommTimeouts.ReadTotalTimeoutMultiplier = 0
lpCommTimeouts.ReadTotalTimeoutConstant = timeout
lpCommTimeouts.WriteTotalTimeoutMultiplier = 10
lpCommTimeouts.WriteTotalTimeoutConstant = 100
intResult = SetCommTimeouts(intHandle, lpCommTimeouts)
Else
intHandle = -1
End If
Return intHandle
End If
Catch ex As Exception
MsgBox(ex.ToString)
End Try
I use following code to read from the comport:
Private Sub connect()
Dim inPortNumber As Short = 8
Dim outPort As Short = 8
Dim lpDCB As New DCB
'infileHandler = CreateFile("COM" & inPortNumber & ":", &HC0000000, 0, 0, 3, 0, 0)
Application.DoEvents()
stopThread = False
t1 = New Threading.Thread(AddressOf receiveLoop)
t1.Start()
End Sub
Private Sub receiveLoop()
Dim inbuff(100) As Byte
Dim retCode As Integer = ReadFile(intHandle, inbuff, 100, numReadWrite, 0)
Try
Application.DoEvents()
While True
If retCode = 0 Or stopThread = True Then
'Error or thread stopped
Exit While
Else
Dim updateDelegate As New myDelegate(AddressOf updateMessageLog)
updateDelegate.Invoke(byteArrayToString(inbuff))
ReDim inbuff(100)
retCode = ReadFile(infileHandler, inbuff, 90, numReadWrite, 0)
Application.DoEvents()
End If
End While
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
The value of variable "retCode" is always 0 so I wonder what shall I do. Does anybody know how to write code for reading from comport using vb and smart device?
I am very grateful for any help.
Thanks Ked
I have problem to read from the comport with my ipaq hx4700. I think it works to open the comport but when I try to read from it then it does not work.
I have tried with following code to open the comport:
Dim intResult As Integer
Dim lpCommTimeouts As COMMTIMEOUTS
Dim lpDCB As New DCB
Try
intHandle = -1
If port > 0 Then
intHandle = CreateFile("COM" & port.ToString & ":", &HC0000000, 0, 0, 3, 0, 0)
If intHandle <> -1 Then
'intResult=PurgeComm(intHandle,
intResult = GetCommState(intHandle, lpDCB)
lpDCB.fBinary = 1
lpDCB.fParity = 1
lpDCB.fOutxCtsFlow = 0
lpDCB.fOutxDsrFlow = 0
lpDCB.fDtrControl = 1
lpDCB.fDsrSensitivity = 0
lpDCB.fTXContinueOnXoff = 1
lpDCB.fOutX = 0
lpDCB.fInX = 0
lpDCB.fErrorChar = 0
lpDCB.fNull = 0
lpDCB.fRtsControl = 1
lpDCB.fAbortOnError = 0
lpDCB.StopBits = stopbits
lpDCB.BytesSize = databits
lpDCB.Parity = parity
lpDCB.BaudRate = baudrate
lpDCB.XonChar = "1"
intResult = SetCommState(intHandle, lpDCB)
intResult = SetupComm(intHandle, rxbufsize, txbufsize)
lpCommTimeouts.ReadIntervalTimeout = 0
lpCommTimeouts.ReadTotalTimeoutMultiplier = 0
lpCommTimeouts.ReadTotalTimeoutConstant = timeout
lpCommTimeouts.WriteTotalTimeoutMultiplier = 10
lpCommTimeouts.WriteTotalTimeoutConstant = 100
intResult = SetCommTimeouts(intHandle, lpCommTimeouts)
Else
intHandle = -1
End If
Return intHandle
End If
Catch ex As Exception
MsgBox(ex.ToString)
End Try
I use following code to read from the comport:
Private Sub connect()
Dim inPortNumber As Short = 8
Dim outPort As Short = 8
Dim lpDCB As New DCB
'infileHandler = CreateFile("COM" & inPortNumber & ":", &HC0000000, 0, 0, 3, 0, 0)
Application.DoEvents()
stopThread = False
t1 = New Threading.Thread(AddressOf receiveLoop)
t1.Start()
End Sub
Private Sub receiveLoop()
Dim inbuff(100) As Byte
Dim retCode As Integer = ReadFile(intHandle, inbuff, 100, numReadWrite, 0)
Try
Application.DoEvents()
While True
If retCode = 0 Or stopThread = True Then
'Error or thread stopped
Exit While
Else
Dim updateDelegate As New myDelegate(AddressOf updateMessageLog)
updateDelegate.Invoke(byteArrayToString(inbuff))
ReDim inbuff(100)
retCode = ReadFile(infileHandler, inbuff, 90, numReadWrite, 0)
Application.DoEvents()
End If
End While
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
The value of variable "retCode" is always 0 so I wonder what shall I do. Does anybody know how to write code for reading from comport using vb and smart device?
I am very grateful for any help.
Thanks Ked