كود :
Option Explicit On
Option Strict On
Imports System.IO.Ports
'-----------------------------------------------------------
Dim myComPort As New SerialPort
''' <summary>
''' </summary>
Private Sub btnOff_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
SendCommand("L10")
End Sub
''' <summary>
''' </summary>
Private Sub btnOn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SendCommand("L11")
End Sub
''' <summary>
''' </summary>
Sub CloseComPort()
Try
Using myComPort
If (Not (myComPort Is Nothing)) Then
If myComPort.IsOpen Then
Do While (myComPort.BytesToWrite > 0)
Loop
End If
End If
End Using
Catch ex As UnauthorizedAccessException
End Try
End Sub
''' <summary>
''' </summary>
Private Sub cmbBitRate_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbBitRate.SelectedIndexChanged
myComPort.BaudRate = CInt(cmbBitRate.SelectedItem)
End Sub
''' <summary>
''' </summary>
Private Sub cmbPorts_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbPorts.SelectedIndexChanged
End Sub
''' <summary>
''' </summary>
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
CloseComPort()
End Sub
''' <summary>
''' </summary>
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
InitializeForm()
OpenComPort()
End Sub
''' <summary>
''' </summary>
Sub InitializeForm()
On Error Resume Next
Dim bitRates(9) As Integer
Dim nameArray() As String
nameArray = SerialPort.GetPortNames
Array.Sort(nameArray)
cmbPorts.DataSource = nameArray
cmbPorts.DropDownStyle = ComboBoxStyle.DropDownList
cmbPorts.SelectedIndex = 1
bitRates(0) = 300
bitRates(1) = 600
bitRates(2) = 1200
bitRates(3) = 2400
bitRates(4) = 9600
bitRates(5) = 14400
bitRates(6) = 19200
bitRates(7) = 38400
bitRates(8) = 57600
bitRates(9) = 115200
cmbBitRate.DataSource = bitRates
cmbBitRate.DropDownStyle = ComboBoxStyle.DropDownList
cmbBitRate.SelectedItem = 1200
End Sub
''' <summary>
''' </summary>
Sub OpenComPort()
On Error Resume Next
If Not myComPort.IsOpen Then
myComPort.PortName = cmbPorts.SelectedItem.ToString
If cmbBitRate.SelectedIndex > 0 Then
myComPort.BaudRate = CInt(cmbBitRate.SelectedItem)
End If
myComPort.Parity = Parity.None
myComPort.DataBits = 8
myComPort.StopBits = StopBits.One
myComPort.Handshake = Handshake.None
myComPort.ReadTimeout = 3000
myComPort.WriteTimeout = 5000
myComPort.Open()
End If
End Sub
Private Sub SendCommand(ByVal command As String)
Dim response As String
Try
myComPort.WriteLine(command)
response = myComPort.ReadLine
Select Case response
Case "0"
lblStatus.Text = "الحالة : " + "مشغل"
Case "1"
lblStatus.Text = "الحالة : " + "مغلق"
Case Else
End Select
Catch ex As TimeoutException
MsgBox(ex.Message, CType(MsgBoxStyle.Critical + MsgBoxStyle.MsgBoxRight + MsgBoxStyle.MsgBoxRtlReading, MsgBoxStyle), "")
Catch ex As InvalidOperationException
MsgBox(ex.Message, CType(MsgBoxStyle.Critical + MsgBoxStyle.MsgBoxRight + MsgBoxStyle.MsgBoxRtlReading, MsgBoxStyle), "")
Catch ex As UnauthorizedAccessException
MsgBox(ex.Message, CType(MsgBoxStyle.Critical + MsgBoxStyle.MsgBoxRight + MsgBoxStyle.MsgBoxRtlReading, MsgBoxStyle), "")
End Try
End Sub
Private Sub BtnClose_Click(sender As Object, e As EventArgs) Handles BtnClose.Click
Close()
End Sub
جرب هذا الكود