📄 form1.vb
字号:
Me.GroupBox1.Controls.Add(Me.Label4)
Me.GroupBox1.Controls.Add(Me.txtBaudrate)
Me.GroupBox1.Controls.Add(Me.Label1)
Me.GroupBox1.Controls.Add(Me.optCom2)
Me.GroupBox1.Controls.Add(Me.optCom1)
Me.GroupBox1.Location = New System.Drawing.Point(7, 11)
Me.GroupBox1.Name = "GroupBox1"
Me.GroupBox1.Size = New System.Drawing.Size(198, 99)
Me.GroupBox1.TabIndex = 0
Me.GroupBox1.TabStop = False
Me.GroupBox1.Text = "COM Setup"
'
'btnExit
'
Me.btnExit.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.btnExit.Location = New System.Drawing.Point(247, 434)
Me.btnExit.Name = "btnExit"
Me.btnExit.Size = New System.Drawing.Size(63, 23)
Me.btnExit.TabIndex = 14
Me.btnExit.Text = "&Close"
'
'linkAuthor
'
Me.linkAuthor.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.linkAuthor.Location = New System.Drawing.Point(7, 442)
Me.linkAuthor.Name = "linkAuthor"
Me.linkAuthor.Size = New System.Drawing.Size(83, 12)
Me.linkAuthor.TabIndex = 15
Me.linkAuthor.TabStop = True
Me.linkAuthor.Text = "Contact Author"
'
'lbHex
'
Me.lbHex.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.lbHex.Location = New System.Drawing.Point(8, 242)
Me.lbHex.Name = "lbHex"
Me.lbHex.Size = New System.Drawing.Size(305, 41)
Me.lbHex.TabIndex = 16
'
'Label6
'
Me.Label6.Location = New System.Drawing.Point(8, 226)
Me.Label6.Name = "Label6"
Me.Label6.Size = New System.Drawing.Size(114, 14)
Me.Label6.TabIndex = 17
Me.Label6.Text = "Received Data (Hex)"
'
'cboStatusLine
'
Me.cboStatusLine.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.cboStatusLine.Location = New System.Drawing.Point(83, 304)
Me.cboStatusLine.Name = "cboStatusLine"
Me.cboStatusLine.Size = New System.Drawing.Size(97, 21)
Me.cboStatusLine.Sorted = True
Me.cboStatusLine.TabIndex = 18
'
'btnCheck
'
Me.btnCheck.Enabled = False
Me.btnCheck.Location = New System.Drawing.Point(185, 306)
Me.btnCheck.Name = "btnCheck"
Me.btnCheck.Size = New System.Drawing.Size(43, 19)
Me.btnCheck.TabIndex = 19
Me.btnCheck.Text = "Check"
'
'Label7
'
Me.Label7.Location = New System.Drawing.Point(84, 288)
Me.Label7.Name = "Label7"
Me.Label7.Size = New System.Drawing.Size(82, 14)
Me.Label7.TabIndex = 20
Me.Label7.Text = "Status line"
'
'lblAsync
'
Me.lblAsync.Location = New System.Drawing.Point(7, 361)
Me.lblAsync.Name = "lblAsync"
Me.lblAsync.Size = New System.Drawing.Size(82, 14)
Me.lblAsync.TabIndex = 26
Me.lblAsync.Text = "Async flow"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 14)
Me.ClientSize = New System.Drawing.Size(321, 460)
Me.Controls.Add(Me.lblAsync)
Me.Controls.Add(Me.lbAsync)
Me.Controls.Add(Me.btnAsync)
Me.Controls.Add(Me.btnAsyncTx)
Me.Controls.Add(Me.chkOl)
Me.Controls.Add(Me.txtBytes2Read)
Me.Controls.Add(Me.Label7)
Me.Controls.Add(Me.btnCheck)
Me.Controls.Add(Me.cboStatusLine)
Me.Controls.Add(Me.Label6)
Me.Controls.Add(Me.lbHex)
Me.Controls.Add(Me.linkAuthor)
Me.Controls.Add(Me.btnExit)
Me.Controls.Add(Me.chkDTR)
Me.Controls.Add(Me.chkRTS)
Me.Controls.Add(Me.chkAutorx)
Me.Controls.Add(Me.GroupBox1)
Me.Controls.Add(Me.Label5)
Me.Controls.Add(Me.Label3)
Me.Controls.Add(Me.btnRx)
Me.Controls.Add(Me.txtRx)
Me.Controls.Add(Me.txtTx)
Me.Controls.Add(Me.Label2)
Me.Controls.Add(Me.btnTx)
Me.Controls.Add(Me.btnCloseCom)
Me.Controls.Add(Me.btnOpenCom)
Me.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
Me.MaximizeBox = False
Me.Name = "Form1"
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
Me.Text = "VB.Net Serial comunication example"
Me.GroupBox1.ResumeLayout(False)
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub btnOpenCom_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpenCom.Click
moRS232 = New Rs232()
Try
'// Setup parameters
With moRS232
.Port = miComPort
.BaudRate = CInt(txtBaudrate.Text)
.DataBit = 8
.StopBit = Rs232.DataStopBit.StopBit_1
.Parity = Rs232.DataParity.Parity_None
.Timeout = CInt(txtTimeout.Text)
.WorkingMode = CType(IIf(chkOl.Checked, Rs232.Mode.Overlapped, Rs232.Mode.NonOverlapped), Rs232.Mode)
btnAsyncTx.Enabled = (.WorkingMode = Rs232.Mode.Overlapped)
btnAsync.Enabled = (.WorkingMode = Rs232.Mode.Overlapped)
chkOl.Enabled = False
End With
'// Initializes port
moRS232.Open()
'// Set state of RTS / DTS
moRS232.Dtr = (chkDTR.CheckState = CheckState.Checked)
moRS232.Rts = (chkRTS.CheckState = CheckState.Checked)
Catch Ex As Exception
MessageBox.Show(Ex.Message, "Connection Error", MessageBoxButtons.OK)
Finally
btnCloseCom.Enabled = moRS232.IsOpen
btnOpenCom.Enabled = Not moRS232.IsOpen
btnTx.Enabled = moRS232.IsOpen
btnRx.Enabled = moRS232.IsOpen
btnCheck.Enabled = moRS232.IsOpen
End Try
End Sub
Private Sub btnCloseCom_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCloseCom.Click
moRS232.Close()
btnCloseCom.Enabled = moRS232.IsOpen
btnOpenCom.Enabled = Not moRS232.IsOpen
btnTx.Enabled = moRS232.IsOpen
btnRx.Enabled = moRS232.IsOpen
btnCheck.Enabled = moRS232.IsOpen
chkOl.Enabled = True
End Sub
Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTx.Click
moRS232.Write(txtTx.Text & vbCr)
'moRS232.Write(Chr(4) & Chr(3) & Chr(0) & Chr(0) & Chr(0) & Chr(16) & Chr(68) & Chr(83))
'// Clears Rx textbox
txtRx.Text = String.Empty
txtRx.Refresh()
lbHex.Items.Clear()
If chkAutorx.Checked Then Button1_Click(Nothing, Nothing)
End Sub
Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
If Not moRS232 Is Nothing Then
If moRS232.IsOpen Then moRS232.Close()
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRx.Click
Try
moRS232.Read(CInt(txtBytes2Read.Text))
txtRx.Text = moRS232.InputStreamString
txtRx.ForeColor = Color.Black
txtRx.BackColor = Color.White
'// Fills listbox with hex values
Dim aBytes As Byte() = moRS232.InputStream
Dim iPnt As Int32
For iPnt = 0 To aBytes.Length - 1
lbHex.Items.Add(iPnt.ToString & ControlChars.Tab & String.Format("0x{0}", aBytes(iPnt).ToString("X")))
Next
Catch Ex As Exception
txtRx.BackColor = Color.Red
txtRx.ForeColor = Color.White
txtRx.Text = "Error occurred " & Ex.Message & " data fetched: " & moRS232.InputStreamString
End Try
End Sub
Private Sub chkDTR_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles chkDTR.Click
If Not (moRS232 Is Nothing) Then
moRS232.Dtr = chkDTR.CheckState = CheckState.Checked
End If
End Sub
Private Sub chkRTS_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles chkRTS.Click
If Not (moRS232 Is Nothing) Then
moRS232.Rts = chkRTS.CheckState = CheckState.Checked
End If
End Sub
Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
Me.Close()
End Sub
Private Sub optCom1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles optCom1.CheckedChanged, optCom2.CheckedChanged
If (sender Is optCom1) Then
miComPort = 4
Else
miComPort = 2
End If
End Sub
Private Sub linkAuthor_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles linkAuthor.LinkClicked
System.Diagnostics.Process.Start("mailto:1366@gmx.it")
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
'===================================================
' ?002 Corrado Cavalli All rights reserved
'
' Description : Fills form items
' Created : 28/02/2002 - 10:33:20
' Author : Corrado Cavalli
'
' *Parameters Info*
'
' Notes :
'===================================================
cboStatusLine.Items.Add("CTS")
cboStatusLine.Items.Add("DSR")
cboStatusLine.Items.Add("RI")
cboStatusLine.Items.Add("CD")
End Sub
Private Sub btnCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCheck.Click
'===================================================
' ?002 Corrado Cavalli All rights reserved
'
' Description : Check passed status line
' Created : 28/02/2002 - 10:35:54
' Author : Corrado Cavalli
'
' *Parameters Info*
'
' Notes :
'===================================================
If Not moRS232 Is Nothing Then
Dim bState As Boolean
Select Case cboStatusLine.Text
Case "CTS"
bState = moRS232.CheckLineStatus(Rs232.ModemStatusBits.ClearToSendOn)
Case "DSR"
bState = moRS232.CheckLineStatus(Rs232.ModemStatusBits.DataSetReadyOn)
Case "RI"
bState = moRS232.CheckLineStatus(Rs232.ModemStatusBits.RingIndicatorOn)
Case "CD"
bState = moRS232.CheckLineStatus(Rs232.ModemStatusBits.CarrierDetect)
End Select
MessageBox.Show("Selected line is " & IIf(bState, "On", "Off").ToString, "Check line status")
End If
End Sub
Private Sub moRS232_TxCompleted(ByVal Source As Rs232) Handles moRS232.TxCompleted
Dim lTicks As Long = DateTime.Now.Ticks
lbAsync.Items.Add("Tx finished at ticks: " & lTicks.ToString & " (" & (lTicks - mlTicks).ToString & ")")
End Sub
Private Sub moRS232_DataReceived(ByVal Source As Rs232, ByVal DataBuffer() As Byte) Handles moRS232.DataReceived
Dim lTicks As Long = DateTime.Now.Ticks
lbAsync.Items.Add("Rx Started at ticks: " & lTicks.ToString & " (" & (lTicks - mlTicks).ToString & ")")
txtRx.Text = Source.InputStreamString
txtRx.ForeColor = Color.Black
txtRx.BackColor = Color.White
'// Fills listbox with hex values
Dim aBytes As Byte() = Source.InputStream
Dim iPnt As Int32
For iPnt = 0 To aBytes.Length - 1
lbHex.Items.Add(iPnt.ToString & ControlChars.Tab & String.Format("0x{0}", aBytes(iPnt).ToString("X")))
Next
End Sub
Private Sub chkOl_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkOl.CheckedChanged
btnAsyncTx.Enabled = chkOl.Checked And btnTx.Enabled
End Sub
Private Sub btnAsyncTx_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAsyncTx.Click
'// Clears Rx textbox
lbAsync.Items.Clear()
txtRx.Text = String.Empty
txtRx.Refresh()
lbHex.Items.Clear()
mlTicks = DateTime.Now.Ticks
'moRS232.AsyncWrite(Chr(4) & Chr(3) & Chr(0) & Chr(0) & Chr(0) & Chr(16) & Chr(68) & Chr(83))
moRS232.AsyncWrite(txtTx.Text)
lbAsync.Items.Add("Tx Started at ticks: " & mlTicks.ToString)
If chkAutorx.Checked Then btnAsync_Click(Nothing, Nothing)
End Sub
Private Sub btnAsync_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAsync.Click
Try
moRS232.AsyncRead(CInt(txtBytes2Read.Text))
Dim lTicks As Long = DateTime.Now.Ticks
lbAsync.Items.Add("Rx Started at ticks: " & lTicks.ToString & " (" & (lTicks - mlTicks).ToString & ")")
Catch Ex As Exception
txtRx.BackColor = Color.Red
txtRx.ForeColor = Color.White
txtRx.Text = "Error occurred " & Ex.Message & " data fetched: " & moRS232.InputStreamString
End Try
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -