文档库 最新最全的文档下载
当前位置:文档库 › 串口通信源代码

串口通信源代码

Imports System.IO.Ports
Imports System.Threading
Imports System.Security.Permissions

'允许在程序内部各个线程对于窗体控件进行操作


Public Class Form1
Dim thread1, thread2 As Threading.Thread
Dim t1, t2 As Integer
Dim Freq1, Freq2 As Integer 'DTR ,RTS的频率
Dim Dutyfactor1, Dutyfactor2 As Integer 'DTR,RTS的占空比

Private Sub Button1_Click(sender As Object, e As EventArgs)

End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'允许线程对窗口控件进行操作
Control.CheckForIllegalCrossThreadCalls = False
ComboBox1.Items.Clear()
For Each port As String In https://www.wendangku.net/doc/c86792083.html,puter.Ports.SerialPortNames
ComboBox1.Items.Add(port)
Next
ComboBox1.SelectedIndex = 0
Button2.Enabled = False
Button3.Enabled = False
End Sub

Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
'打开串口
With SerialPort1
.BaudRate = 9600
.StopBits = 1
.DataBits = 8
.Parity = IO.Ports.Parity.None
.PortName = ComboBox1.SelectedItem.ToString

End With
SerialPort1.Open()
MsgBox("串口打开")
Button1.Enabled = False
Button2.Enabled = True
Button3.Enabled = True
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
SerialPort1.Close()
Button1.Enabled = True
Button2.Enabled = False
Button3.Enabled = False
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
'发送数据
If TextBox1.Text = "" Then
MsgBox("不能发送空信息")
End If
SerialPort1.Write(TextBox1.Text)
End Sub
Private Sub SerialPort1_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim str As String
str = SerialPort1.ReadExisting
TextBox2.Text += str
End Sub

Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
'DTR
If CheckBox1.Checked = True Then
SerialPort1.DtrEnable = True
Button5.BackColor = Color.Red
Else
SerialPort1.DtrEnable = False
Button5.BackColor = Color.White

End If
End Sub

Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox2.CheckedChanged
'RTS
If CheckBox2.Checked = True Then
SerialPort1.RtsEnable = True
Button4.BackColor = Color.Red
Else
SerialPort1.RtsEnable = False
Button4.BackC

olor = Color.White
End If
End Sub





Private Sub Label3_Click(sender As Object, e As EventArgs) Handles Label3.Click

End Sub

Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click
TextBox1.Text = ""
End Sub

Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click
TextBox2.Text = ""
End Sub

Private Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles TextBox3.TextChanged

End Sub

Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged

End Sub

Sub DTRWaveGenerate()
Do While True
Button6.BackColor = Color.Red
SerialPort1.DtrEnable = True
Thread.Sleep(Freq1 * Dutyfactor1 * 0.01)
Button6.BackColor = Color.Yellow
SerialPort1.DtrEnable = False
Thread.Sleep(Freq1 * (1 - Dutyfactor1 * 0.01))
Loop

End Sub
Sub RTSWaveGenerate()
Do While True
Button7.BackColor = Color.Red
SerialPort1.RtsEnable = True
Thread.Sleep(Freq2 * Dutyfactor2 * 0.01)
Button7.BackColor = Color.Yellow
SerialPort1.RtsEnable = False
Thread.Sleep(Freq2 * (1 - Dutyfactor2 * 0.01))
Loop

End Sub

Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click

End Sub

Private Sub GroupBox3_Enter(sender As Object, e As EventArgs) Handles GroupBox3.Enter

End Sub

Private Sub GroupBox4_Enter(sender As Object, e As EventArgs) Handles GroupBox4.Enter

End Sub

Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click

End Sub

Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click

End Sub

Private Sub CheckBox3_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox3.CheckedChanged
'DTR方波
If CheckBox3.Checked = True Then
'启动
If TextBox3.Text = "" Then
Freq1 = 1000
Else
Freq1 = CInt(TextBox3.Text)
End If
If TextBox4.Text = "" Then
Dutyfactor1 = 50
Else
Dutyfactor1 = CInt(TextBox4.Text)
End If

thread1 = New Threading.Thread(AddressOf DTRWaveGenerate)
thread1.Start()
Else
Try
thread1.Abort()
Catch ex As Exception

End Try
End If
End Sub

Private Sub CheckBox4_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox4.CheckedChanged
'RTS方波
If CheckBox4.Checked = True Then
'启动
If TextBox6.Text = "" Then
Freq2 = 1000
Else

Freq2 = CInt(TextBox6.Text)
End If
If TextBox5.Text = "" Then
Dutyfactor2 = 50
Else
Dutyfactor2 = CInt(TextBox5.Text)
End If

thread2 = New Threading.Thread(AddressOf RTSWaveGenerate)
thread2.Start()
Else
Try
thread2.Abort()
Catch ex As Exception

End Try
End If
End Sub

Private Sub TextBox4_TextChanged(sender As Object, e As EventArgs) Handles TextBox4.TextChanged

End Sub

Private Sub TextBox5_TextChanged(sender As Object, e As EventArgs) Handles TextBox5.TextChanged

End Sub

Private Sub TextBox6_TextChanged(sender As Object, e As EventArgs) Handles TextBox6.TextChanged

End Sub

Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
CheckBox3.Checked = False
CheckBox4.Checked = False
Try
thread1.Abort()
Catch ex As Exception

End Try
Try
thread2.Abort()
Catch ex As Exception

End Try
End Sub
End Class

相关文档