表單佈局:
需要Timer1,menuStrip1,serialPort1及圖示中的TextBox(屬性:multiLine)
Button及Label
檔案下載:從Hinet下載
Public Class Form1
Dim baud, baud1, baud2, baud3 As Integer
Dim com, com1, com2 As String
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
com1 = "COM1" '各Port變數
com2 = "COM2"
baud1 = "19200" '各Baud變數
baud2 = "9600"
baud3 = "4800"
Call InitSerialPort() '初始化
lblSendMsg.Visible = False
lblReceMsg.Visible = False
Timer1.Enabled = True
End Sub
Private Sub InitSerialPort()
SerialPort1.PortName = com1 '內定COM1
SerialPort1.BaudRate = baud2 '鮑率9600 bps
SerialPort1.DataBits = 8 '資料長度8 Bits
SerialPort1.Parity = 0 '不檢查同位元
SerialPort1.StopBits = 1 '結束位元 1
SerialPort1.Open() '開啟
End Sub
Private Sub mnuEnd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuEnd.Click
End
End Sub
Private Sub mnuPORT_COM1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _
mnuPORT_COM1.Click, mnuPORT_COM2.Click
'桌上型電腦至少配有COM1,但不一定有COM2,若試圖開啟COM2,可能造成錯誤!"
On Error GoTo err
Dim portName As String
'-------------------------------------------
'功能表選項-串列埠選擇之顯示切換
portName = sender.ToString
Select Case portName
Case "COM1" '當按下com1
mnuPORT_COM1.Checked = True 'COM1打勾
mnuPORT_COM2.Checked = False
com = com1
Case "COM2"
mnuPORT_COM1.Checked = False
mnuPORT_COM2.Checked = True 'COM2打勾
com = com2
End Select
If SerialPort1.IsOpen Then
SerialPort1.Close() '關閉目前開啟的Port
End If
SerialPort1.PortName = com
SerialPort1.Open()
err:
MsgBox("無法開啟通訊埠COM2!,可能是沒有這個通訊埠或已開啟。", MsgBoxStyle.Critical, "開啟錯誤")
SerialPort1.PortName = "COM1"
SerialPort1.Open()
mnuPORT_COM1.Checked = True
mnuPORT_COM2.Checked = False
End Sub
Private Sub mnuBaud19200_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _
mnuBaud19200.Click, mnuBaud9600.Click, mnuBaud4800.Click
Dim item As String
item = sender.ToString
'功能表選項-鮑率選擇之顯示切換
Select Case item
Case baud1
mnuBaud19200.Checked = True
mnuBaud9600.Checked = False
mnuBaud4800.Checked = False
Case baud2
mnuBaud19200.Checked = False
mnuBaud9600.Checked = True
mnuBaud4800.Checked = False
Case baud3
mnuBaud19200.Checked = False
mnuBaud9600.Checked = False
mnuBaud4800.Checked = True
Case Else
item = baud2
End Select
SerialPort1.BaudRate = item
End Sub
Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
SerialPort1.WriteLine(txtSend.Text)
txtSend.Text = Nothing
End Sub
Private Sub btnRecieve_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRecieve.Click
On Error GoTo RECerr
txtRecieve.Text = SerialPort1.ReadLine
RECerr:
MsgBox("無法接收資料!請確定是否正確連線。", MsgBoxStyle.Critical, "接收錯誤")
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If SerialPort1.CDHolding Then
lblReceMsg.Text = "偵測到載波輸入,要求讀取!"
lblReceMsg.Visible = Not lblReceMsg.Visible
Else
lblReceMsg.Visible = False
End If
If Len(txtSend.Text) <> 0 Then
lblSendMsg.Text = "緩衝區有資料尚未傳送!"
lblSendMsg.Visible = Not lblSendMsg.Visible
Else
lblSendMsg.Visible = False
End If
End Sub
End Class