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 "多语种信息" ''' ''' 初始化界面控件文本 ''' 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 "初始化" ''' ''' 串口波特率 ''' Private _baudItme() As String = {"4800", "9600", "14400", "19200", "38400", "56000", "57600", "115200", "256000", "512000", "600000", "750000"} ''' ''' 窗体加载事件 ''' ''' ''' Private Sub FrmSerialportSetting_Load(sender As Object, e As EventArgs) Handles Me.Load MultiLanguageInfo() GetSerialPort() InitSerialPortBaud() End Sub ''' ''' 获取可用串口 ''' Private Sub GetSerialPort() Dim portNames As String() = Ports.SerialPort.GetPortNames '获得可用串口 Array.Sort(portNames) ComboBox8.Items.Clear() ComboBox8.Items.AddRange(portNames) End Sub ''' port次数 Private _portCount As Integer = 0 ''' ''' 初始化串口波特率 ''' 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 ''' ''' 串口点击按键 ''' ''' ''' 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 ''' ''' 串口通讯开关 ''' ''' ''' 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 ''' ''' 关闭串口 ''' Private Sub CloseSerialPort() ComboBox8.Enabled = True ComboBox9.Enabled = True Button19.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.OpenTheSerialPort)}" Button19.ForeColor = Color.Green End Sub ''' ''' 打开串口 ''' Private Sub OpenSerialPort() ComboBox8.Enabled = False ComboBox9.Enabled = False Button19.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.CloseTheSerialPort)}" Button19.ForeColor = Color.Red End Sub ''' ''' 配置串口 ''' ''' 串口名 ''' 串口波特率 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