⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.vb

📁 Corrado Cavalli为VB.NET写的串口通讯类。通过调用API的方法与串口通讯。我的有关串口通讯的程序都是用的这个类。
💻 VB
📖 第 1 页 / 共 2 页
字号:
        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 + -