Imports DBComm
Public Enum ParityOptions
EvenParity
MarkParity
NoParity
OddParity
SpaceParity
End Enum
Public Enum stopBitOptions
oneptfiveStopBit
oneStopBit
twoStopBit
End Enum
Public Interface ISerial
Sub Open(ByVal portName As String, _
ByVal baudRate As Integer, _
ByVal dataBits As Byte, _
ByVal parity As parityOptions, _
ByVal stopBits As stopBitOptions)
Sub Open(ByVal port As Integer, _
ByVal baudRate As Integer, _
ByVal dataBits As Byte, _
ByVal parity As parityOptions, _
ByVal stopBits As stopBitOptions)
Sub SendMessage(ByVal message As Byte())
Event DataAvailable(ByVal sender As Object, ByVal e As EventArgs)
Sub Close()
Function ReadMessage( _
ByVal byteCount As Integer) As Byte()
End Interface
Public Class Form2
Implements ISerial
Private WithEvents DBCOMM As New RS232
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Open(1, "19200", 1, ParityOptions.EvenParity, stopBitOptions.oneStopBit)
End Sub
Public Overloads Sub Open(ByVal port As Integer, ByVal baudRate As Integer, _
ByVal dataBits As Byte, ByVal parity As ParityOptions, ByVal stopBits As stopBitOptions) Implements ISerial.Open
DBCOMM.CommPort = port
Dim settings As String
Dim parityChar As Char
Select Case parity
Case ParityOptions.EvenParity
parityChar = "E"c
Case ParityOptions.MarkParity
parityChar = "M"c
Case ParityOptions.NoParity
parityChar = "N"c
Case ParityOptions.OddParity
parityChar = "O"c
Case ParityOptions.SpaceParity
parityChar = "S"c
End Select
Dim stopBitsNumber As String
Select Case stopBits
Case stopBitOptions.oneptfiveStopBit
stopBitsNumber = "1.5"
Case stopBitOptions.oneStopBit
stopBitsNumber = "1"
Case stopBitOptions.twoStopBit
stopBitsNumber = "2"
End Select
'the MSCOMM Library expects its settings as
'a string such as "9600,N,8,1"
settings = String.Format("{0},{1},{2},{3}", _
baudRate, parityChar, _
dataBits, stopBitsNumber)
DBCOMM.Settings = settings
DBCOMM.InputLength = 5
DBCOMM.InBufferSize = 5
DBCOMM.InputMode = RS232.InputModes.Binary
'DBCOMM.SendThreshold = 5
DBCOMM.ReceiveThreshold = 5
'DBCOMM.RThreshold = 5
DBCOMM.PortOpen = True
End Sub
Public Sub SendMessage(ByVal message() As Byte) Implements ISerial.SendMessage
DBCOMM.Output(message) ' = message
End Sub
Public Sub Close1() Implements ISerial.Close
End Sub
Public Event DataAvailable(ByVal sender As Object, ByVal e As System.EventArgs) Implements ISerial.DataAvailable
Public Sub Open1(ByVal portName As String, ByVal baudRate As Integer, ByVal dataBits As Byte, ByVal parity As ParityOptions, ByVal stopBits As stopBitOptions) Implements ISerial.Open
End Sub
Public Function ReadMessage(ByVal byteCount As Integer) As Byte() Implements ISerial.ReadMessage
Return Nothing
End Function
End Class