Public Class my_class
Dim WithEvents COMPort As New System.IO.Ports.SerialPort
Public Sub FindReader()
Dim ports As String() = IO.Ports.SerialPort.GetPortNames()
Dim port As String
For Each port In ports
MsgBox(port, MsgBoxStyle.OkOnly Or MsgBoxStyle.Exclamation, "Serial port detecetd")
Next port
If COMPort.IsOpen Then
COMPort.RtsEnable = False
COMPort.DtrEnable = False
COMPort.Close()
System.Threading.Thread.Sleep(200)
End If
COMPort.PortName = "COM1"
COMPort.BaudRate = 9600
COMPort.DataBits = 8
COMPort.Parity = IO.Ports.Parity.None
COMPort.StopBits = IO.Ports.StopBits.One
COMPort.Handshake = IO.Ports.Handshake.RequestToSend
COMPort.ReadTimeout = 2000
COMPort.WriteTimeout = -1
COMPort.NewLine = Chr(13)
COMPort.ReadBufferSize = 12
COMPort.ReceivedBytesThreshold = COMPort.ReadBufferSize
Try
COMPort.Open()
Catch ex As Exception
MsgBox(ex.Message)
End Try
If COMPort.IsOpen Then
COMPort.RtsEnable = True
COMPort.DtrEnable = True
'Kick start the serial port so it starts reading data.
COMPort.BreakState = True
System.Threading.Thread.Sleep(CInt(11000 / COMPort.BaudRate) + 2) ' Min. 11 bit delay (startbit, 8 data bits, parity bit, stopbit
COMPort.BreakState = False
MsgBox(COMPort.PortName & " opened at " & COMPort.BaudRate.ToString & " baud", MsgBoxStyle.OkOnly Or MsgBoxStyle.Exclamation, "FindReader()")
End If
End Sub
When it runs, it shows a single COM port "COM1". I am assured that the device attached to it is a standard 8,n,1 and uses 9,600 baud.
The exception is "Acess to the port 'COM1' is denied". Any ideas?