1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
   | <ComClass(ComRS232.ClassId, ComRS232.InterfaceId, ComRS232.EventsId)> _
Public Class ComRS232
 
#Region "GUID COM"
    ' Ces GUID fournissent l'identité COM pour cette classe 
    ' et ses interfaces COM. Si vous les modifiez, les clients 
    ' existants ne pourront plus accéder à la classe.
    Public Const ClassId As String = "cdd3fd3e-c6a6-4987-9949-25106879e429"
    Public Const InterfaceId As String = "60ee0c79-14a4-479e-b140-8c09d42c4bf6"
    Public Const EventsId As String = "f21a9e4f-2dc9-4b63-8a43-2e1e0efe5106"
#End Region
 
    ' Une classe COM pouvant être créée doit avoir Public Sub New() 
    ' sans paramètre, sinon, la classe ne sera pas 
    ' inscrite dans le Registre COM et ne pourra pas être créée 
    ' via CreateObject.
    Public Sub New()
        MyBase.New()
    End Sub
 
 
    Shared _continue As Boolean
    Shared _serialPort As SerialPort
    Shared _readThread As Thread
 
 
 
 
    Public Function GetPortName() As Object
        Dim ListPort() As String
        Dim i As Integer
 
        i = SerialPort.GetPortNames().GetUpperBound(0)
        ReDim ListPort(i)
 
        i = 0
        For Each s As String In SerialPort.GetPortNames()
            ListPort(i) = s
            i = i + 1
        Next
 
        Return ListPort
    End Function
 
 
    Public Sub InitPort()
        _serialPort = New SerialPort()
        _readThread = New Thread(AddressOf Read)
    End Sub
    Public Sub QuitPort()
        _serialPort.Close()
        _readThread = Nothing
        _serialPort = Nothing
    End Sub
 
    Public Sub OpenPort()
        If Not _serialPort.IsOpen Then _serialPort.Open()
    End Sub
 
    Public Sub ClosePort()
        If _serialPort.IsOpen Then _serialPort.Close()
    End Sub
 
 
    Public Function Read() As String
        Dim Message1 As String
        Message1 = ""
        Try
            Message1 = _serialPort.ReadExisting()
        Catch generatedExceptionName As TimeoutException
 
        End Try
        Return Message1
    End Function
 
 
    Public Sub Send(Inject As String)
 
        Try
            _serialPort.Write(Inject)
 
        Catch generatedExceptionName As TimeoutException
        End Try
 
 
    End Sub
 
    Public Function SetPortName(portName As String) As String
 
        Dim defaultPortName As String
 
        defaultPortName = _serialPort.PortName
 
        If portName = "" OrElse Not (portName.ToLower()).StartsWith("com") Then
            portName = defaultPortName
        Else
            _serialPort.PortName = portName
        End If
 
        Return portName
 
    End Function
 
    Public Function SetPortBaudRate(BaudRate As Integer) As Integer
        Dim defaultPortBaudRate As Integer
 
        defaultPortBaudRate = _serialPort.BaudRate
 
        If (BaudRate >= 150) And (BaudRate <= 256000) Then
            _serialPort.BaudRate = BaudRate
        End If
 
        Return _serialPort.BaudRate
 
    End Function
 
    Public Function SetPortParity(PortParity As String) As String
        Dim T_Parity As Parity
        If PortParity <> "" Then
            T_Parity = CType([Enum].Parse(GetType(Parity), PortParity, True), Parity)
            _serialPort.Parity = T_Parity
        Else
            T_Parity = _serialPort.Parity
        End If
 
        Return T_Parity.ToString
    End Function
 
    Public Function SetPortDataBits(PortDataBits As Integer) As Integer
        If (PortDataBits >= 5) And (PortDataBits <= 9) Then
            _serialPort.DataBits = PortDataBits
        End If
        Return _serialPort.DataBits
    End Function
 
    Public Function SetPortStopBits(PortStopBits As Integer) As Integer
        If (PortStopBits >= 0) And (PortStopBits <= 2) Then
            _serialPort.StopBits = PortStopBits
        End If
        Return _serialPort.StopBits
    End Function
 
    Public Function SetPortHandshake(PortHandshake As String) As String
        Dim T_Handshake As Handshake
        If PortHandshake <> "" Then
            T_Handshake = CType([Enum].Parse(GetType(Handshake), PortHandshake, True), Handshake)
            _serialPort.Handshake = T_Handshake
        End If
 
        Return _serialPort.Handshake.ToString()
    End Function
 
    Public Function SetPortWriteTimeout(WRT As Integer) As Integer
        If WRT <> 0 Then
            _serialPort.WriteTimeout = WRT
        End If
        Return _serialPort.WriteTimeout
    End Function
 
    Public Function SetPortReadTimeout(RET As Integer) As Integer
        If RET <> 0 Then
            _serialPort.ReadTimeout = RET
        End If
        Return _serialPort.ReadTimeout
    End Function
 
    Public Function SetPortBufferWriteSize(WR_BufferSize As Integer) As Integer
        If WR_BufferSize > 128 Then
            _serialPort.WriteBufferSize = WR_BufferSize
        End If
        Return _serialPort.WriteBufferSize
    End Function
 
    Public Function SetPortBufferReadSize(RD_BufferSize As Integer) As Integer
        If RD_BufferSize > 128 Then
            _serialPort.ReadBufferSize = RD_BufferSize
        End If
        Return _serialPort.ReadBufferSize
    End Function
 
End Class | 
Partager