Files
Desktop_BLVStudio/BLV_Studio/Control/FrmSerialportSetting.vb

171 lines
5.2 KiB
VB.net
Raw Normal View History

2025-12-11 10:06:44 +08:00
Imports System.ComponentModel
Imports System.IO
Public Class FrmSerialportSetting
Public FCsConfig As FrmCSeriesConfig
Sub New(pathme As FrmCSeriesConfig)
' 此调用是设计器所必需的。
InitializeComponent()
FCsConfig = pathme
' 在 InitializeComponent() 调用之后添加任何初始化。
End Sub
#Region "多语种信息"
''' <summary>
''' 初始化界面控件文本
''' </summary>
Private Sub MultiLanguageInfo()
''LblIP.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.LocalIP)
Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SerialportSettings)
LblSerialPortName.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SerialPortName)
LblSerialPortBaud.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Baud)
Button19.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.OpenTheSerialPort)
End Sub
#End Region
#Region "初始化"
''' <summary>
''' 串口波特率
''' </summary>
Private _baudItme() As String = {"4800", "9600", "14400", "19200", "38400", "56000", "57600", "115200", "256000", "512000", "600000", "750000"}
''' <summary>
''' 窗体加载事件
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub FrmSerialportSetting_Load(sender As Object, e As EventArgs) Handles Me.Load
MultiLanguageInfo()
GetSerialPort()
InitSerialPortBaud()
End Sub
''' <summary>
''' 获取可用串口
''' </summary>
Private Sub GetSerialPort()
Dim portNames As String() = Ports.SerialPort.GetPortNames '获得可用串口
Array.Sort(portNames)
ComboBox8.Items.Clear()
ComboBox8.Items.AddRange(portNames)
End Sub
''' <summary> port次数 </summary>
Private _portCount As Integer = 0
''' <summary>
''' 初始化串口波特率
''' </summary>
Private Sub InitSerialPortBaud()
_portCount += 1
ComboBox9.Items.Clear()
ComboBox9.Items.AddRange(_baudItme)
If _portCount > 1 Then Return
If ComboBox9.Items.Count > 1 Then ComboBox9.SelectedIndex = 1
End Sub
''' <summary>
''' 串口点击按键
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Button19_Click(sender As Object, e As EventArgs) Handles Button19.Click
If String.IsNullOrWhiteSpace(ComboBox8.Text) Then
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectAValidSerialPortFirst)}!")
Exit Sub
End If
If String.IsNullOrWhiteSpace(ComboBox9.Text) Then
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectTheValidBaudRateFirst)}!")
Exit Sub
End If
SerialPortCommSwitch(ComboBox8.Text, ComboBox9.Text)
End Sub
''' <summary>
''' 串口通讯开关
''' </summary>
''' <param name="portName"></param>
''' <param name="portBaud"></param>
Private Sub SerialPortCommSwitch(portName As String, portBaud As String)
If FCsConfig.SerialPort.IsOpen Then
FCsConfig.SerialPort.Close()
CloseSerialPort()
Else
ConfigSerialPort(portName, portBaud)
Try
FCsConfig.SerialPort.Open()
_isSerialPort = True
OpenSerialPort()
Catch ex As Exception
Console.WriteLine($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SerialPortOpenTheFailedReason)}:{ex.Message}" & vbCrLf, Color.Red)
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SerialPortOpenTheFailedReason)}:{ex.Message}")
FCsConfig.SerialPort.Close()
_isSerialPort = False
CloseSerialPort()
End Try
End If
End Sub
''' <summary>
''' 关闭串口
''' </summary>
Private Sub CloseSerialPort()
ComboBox8.Enabled = True
ComboBox9.Enabled = True
Button19.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.OpenTheSerialPort)}"
Button19.ForeColor = Color.Green
End Sub
''' <summary>
''' 打开串口
''' </summary>
Private Sub OpenSerialPort()
ComboBox8.Enabled = False
ComboBox9.Enabled = False
Button19.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.CloseTheSerialPort)}"
Button19.ForeColor = Color.Red
End Sub
''' <summary>
''' 配置串口
''' </summary>
''' <param name="portName">串口名</param>
''' <param name="portBaud">串口波特率</param>
Public Sub ConfigSerialPort(portName As String, portBaud As String)
With FCsConfig.SerialPort
.PortName = portName '串口名
.BaudRate = CInt(portBaud) '波特率
.DataBits = 8 '数据位
.StopBits = Ports.StopBits.One '停止位
.Parity = Ports.Parity.None '偶校验
.RtsEnable = True
.ReceivedBytesThreshold = 1
End With
End Sub
#End Region
End Class