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