Imports System.IO.Ports
Public Class Form1
Public WithEvents SerialPort As New SerialPort Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim ports As String() = SerialPort.GetPortNames() Dim port As String
For Each port In ports ComboBox1.Items.Add(port)
'If Then‘測驗程序回傳bolean ' '這里就是最后的埠 ' '把可用串口的名字添加到串列中 'End If
Next port ' ComboBox1.SelectedIndex = 0 End Sub '串口配置
Private Sub Serial_Port1() '設定串口引數 SerialPort1.BaudRate = 57600 '波特率 SerialPort1.DataBits = 8 '資料位 SerialPort1.StopBits = IO.Ports.StopBits.One '停止位 SerialPort1.Parity = IO.Ports.Parity.None '校驗位
End Sub '關閉串口連接
Private Sub SerialPort_Close()
Try
SerialPort1.Close() '關閉串口
Label3.Text = SerialPort1.IsOpen
If SerialPort1.IsOpen = False Then Label2.Text = "串口未連接" Label2.ForeColor = Color.Red
End If
Catch ex As Exception MessageBox.Show(ex.Message)
End Try
End Sub '打開串口連接
Private Sub SerialPort1_Open()
Try
SerialPort1.Open() '打開串口
If SerialPort1.IsOpen = True Then Label2.Text = "串口已打開" Label2.ForeColor = Color.Green
End If
Catch ex As Exception MessageBox.Show(ex.Message)
End Try End Sub
'接收資料
Private Sub Sp_DataReceived()
Me.Invoke(New EventHandler(AddressOf Sp_Receiving)) '呼叫接收資料函式
End Sub Private Sub Sp_Receiving(ByVal sender As Object, ByVal e As EventArgs)
Dim strIncoming As String
Try
TextBox2.Text = Str(Val(TextBox2.Text) + SerialPort1.BytesToRead) If SerialPort1.BytesToRead > 0 Then Threading.Thread.Sleep(100) '添加的延時 strIncoming = SerialPort1.ReadExisting.ToString '讀取緩沖區中的資料 SerialPort1.DiscardInBuffer()
TextBox2.Text = strIncoming
End If
Catch ex As Exception MessageBox.Show(ex.Message)
End Try End Sub '串口查找
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Serial_Port1()
SerialPort1_Open()
End Sub
Private Sub BtnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSend.Click SerialPort1.Write(TextBox1.Text) Sp_DataReceived()
End Sub
End Class
uj5u.com熱心網友回復:
樓主,程式運行后ComboBox1里有內容嗎?SerialPort1是不是在界面添加的控制元件?uj5u.com熱心網友回復:
沒有com可以選擇,serialport確實是在界面中添加的uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
試了一下沒發現蝦米問題uj5u.com熱心網友回復:
沒有com可以選擇說明樓主所用的系統中就沒有串口;樓主找一臺有串口的電腦或者安裝一個虛擬串口。
serialport1默認串口號是串口1,所以執行Serial_Port1()以后就會報錯com1埠不存在。
uj5u.com熱心網友回復:
打開的話確實可以顯示出com1,因為初始化了,添加到combobox中了,但是發送資料的時候提示串口com1不可用,那這個程式又有什么意義呢uj5u.com熱心網友回復:
串口com1不可用說明串口資源被其他應用占用了,樓主打開設備管理器查一下埠狀態。
uj5u.com熱心網友回復:
沒有串口,手動添加的那說明你機器就沒有串口,請使用,“我的電腦”--右鍵--“管理”--“設備管理”查看有無串口
如果沒有串口想除錯,請用vspd虛擬串口模擬
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/77827.html
標籤:VB.NET
