初始值
This commit is contained in:
200
SharedFunction/SharedFunction.vb
Normal file
200
SharedFunction/SharedFunction.vb
Normal file
@@ -0,0 +1,200 @@
|
||||
Imports System.IO.Ports
|
||||
|
||||
Public Class SharedFunction
|
||||
#Region "串口操作"
|
||||
'打开串口
|
||||
''' <summary>
|
||||
''' 打开串口
|
||||
''' </summary>
|
||||
''' <param name="m_Serial">串口</param>
|
||||
''' <param name="portName">串口号</param>
|
||||
''' <param name="baudRate">波特率</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function OpenSerial(m_Serial As SerialPort, portName As String, baudRate As Integer) As Boolean
|
||||
If IsNothing(m_Serial) OrElse m_Serial.IsOpen Then Return False
|
||||
Try
|
||||
m_Serial.PortName = portName
|
||||
m_Serial.BaudRate = baudRate
|
||||
m_Serial.Parity = Parity.Even
|
||||
m_Serial.Open()
|
||||
Return True
|
||||
Catch ex As Exception
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
'设置串口波特率
|
||||
''' <summary>
|
||||
''' 设置串口波特率
|
||||
''' </summary>
|
||||
''' <param name="m_Serial"> 串口 </param>
|
||||
''' <param name="baudRate">波特率</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function SetSerialBaudRate(m_Serial As SerialPort, baudRate As Integer) As Boolean
|
||||
If IsNothing(m_Serial) OrElse Not m_Serial.IsOpen Then Return False
|
||||
m_Serial.BaudRate = baudRate
|
||||
Return True
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 关闭串口
|
||||
''' </summary>
|
||||
''' <param name="m_Serial">串口</param>
|
||||
''' <param name="isread">串口关闭标志</param>
|
||||
''' <param name="isListen">串口等待关闭标志</param>
|
||||
Public Shared Sub CloseSerial(m_Serial As SerialPort, ByRef isread As Boolean, ByRef isListen As Boolean)
|
||||
If IsNothing(m_Serial) OrElse Not m_Serial.IsOpen Then Return
|
||||
isread = True
|
||||
While isListen
|
||||
Application.DoEvents()
|
||||
Threading.Thread.Sleep(10)
|
||||
End While
|
||||
|
||||
Threading.Thread.Sleep(10)
|
||||
m_Serial.Close()
|
||||
isread = False
|
||||
End Sub
|
||||
|
||||
|
||||
#End Region
|
||||
|
||||
|
||||
#Region "数据转换"
|
||||
Public Shared Function ByteToHexString(databuff() As Byte) As String
|
||||
Dim strData As String = String.Empty
|
||||
For i = 0 To databuff.Length - 1
|
||||
strData &= $" {Hex(databuff(i)).PadLeft(2, "0"c)}"
|
||||
Next
|
||||
Return strData
|
||||
End Function
|
||||
Public Shared Function StringToHexString(hexstr As String) As String
|
||||
'判断字符串是否为空或 者为空字符串
|
||||
If String.IsNullOrEmpty(hexstr) Then Return Nothing
|
||||
'替换字符中的分隔符号
|
||||
hexstr = hexstr.Trim().Replace(" ", "").Replace("-", "").Replace(",", "").Replace(":", "").Replace(";", "").Replace(".", "")
|
||||
'判断字符串的长度是否为偶数
|
||||
If hexstr.Length Mod 2 <> 0 Then
|
||||
'不为偶数往最后一个字节前面补0
|
||||
hexstr = hexstr.Insert(hexstr.Length - 1, "0")
|
||||
End If
|
||||
'以2为步长,将字符串转换为字节数组 不足2位前面补0
|
||||
Dim databuff() As Byte = Enumerable.Range(0, hexstr.Length).Where(Function(x) x Mod 2 = 0).Select(Function(x) Convert.ToByte(hexstr.Substring(x, 2), 16)).ToArray()
|
||||
Return ByteToHexString(databuff)
|
||||
End Function
|
||||
Public Shared Function HexStringToByte(hexstr As String) As Byte()
|
||||
'判断字符串是否为空或 者为空字符串
|
||||
If String.IsNullOrEmpty(hexstr) Then Return Nothing
|
||||
'替换字符中的分隔符号
|
||||
hexstr = hexstr.Trim().Replace(" ", "").Replace("-", "").Replace(",", "").Replace(":", "").Replace(";", "").Replace(".", "")
|
||||
'判断字符串的长度是否为偶数
|
||||
If hexstr.Length Mod 2 <> 0 Then
|
||||
'不为偶数往最后一个字节前面补0
|
||||
hexstr = hexstr.Insert(hexstr.Length - 1, "0")
|
||||
End If
|
||||
'以2为步长,将字符串转换为字节数组 不足2位前面补0
|
||||
Return Enumerable.Range(0, hexstr.Length).Where(Function(x) x Mod 2 = 0).Select(Function(x) Convert.ToByte(hexstr.Substring(x, 2), 16)).ToArray()
|
||||
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Int转2个字节Byte
|
||||
''' 高字节在前,低字节在后
|
||||
''' </summary>
|
||||
''' <param name="i"></param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function IntToByteHB(ByVal i As Integer) As Byte()
|
||||
Dim btemp() As Byte = {0, 0}
|
||||
Dim b() As Byte = BitConverter.GetBytes(i)
|
||||
btemp(0) = b(0)
|
||||
btemp(1) = b(1)
|
||||
Return btemp
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Int转2个字节Byte
|
||||
''' 高字节在前,低字节在后
|
||||
''' </summary>
|
||||
''' <param name="i"></param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function IntToByteLB(ByVal i As Integer) As Byte()
|
||||
Dim btemp() As Byte = {0, 0}
|
||||
Dim b() As Byte = BitConverter.GetBytes(i)
|
||||
btemp(0) = b(1)
|
||||
btemp(1) = b(0)
|
||||
Return btemp
|
||||
End Function
|
||||
|
||||
#End Region
|
||||
#Region "数据校验"
|
||||
'计算数据和 校验
|
||||
Public Shared Function GetCheckSum(ByVal data As Byte()) As Byte
|
||||
|
||||
Dim sum As Integer = 0
|
||||
For i As Integer = 0 To data.Length - 1
|
||||
sum += data(i)
|
||||
Next
|
||||
Return sum
|
||||
|
||||
End Function
|
||||
Public Shared Function GetCheckSumMod(ByVal data As Byte()) As Byte
|
||||
|
||||
Dim sum As Integer = 0
|
||||
For i As Integer = 0 To data.Length - 2
|
||||
sum += data(i)
|
||||
Next
|
||||
sum = sum And &HFF
|
||||
Return sum
|
||||
|
||||
End Function
|
||||
|
||||
Public Shared Function GetCheckSumMod2(ByVal data As Byte()) As Byte
|
||||
|
||||
Dim sum As Integer = 0
|
||||
For i As Integer = 0 To data.Length - 1
|
||||
sum += data(i)
|
||||
Next
|
||||
sum = sum And &HFF
|
||||
Return sum
|
||||
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 和校验取余数
|
||||
''' 求Byte数组的和校验取余数
|
||||
''' </summary>
|
||||
''' <param name="dataPacket">Byte数组</param>
|
||||
''' <returns></returns>
|
||||
Public Function GetSumCheckMod(dataPacket As Byte()) As Byte
|
||||
Dim sum As Integer
|
||||
For idx = 0 To dataPacket.Length - 1
|
||||
sum += dataPacket(idx)
|
||||
sum = sum And &HFF
|
||||
Next
|
||||
Dim sumMod As Byte = &HFF - sum
|
||||
Return sumMod
|
||||
End Function
|
||||
#End Region
|
||||
|
||||
#Region "跨线程调用UI"
|
||||
Delegate Sub delSetFromUI(control As Control, mText As String, textcolor As Color, cbolor As Color)
|
||||
Public Shared Sub SetFromUI(ByVal control As Control, mText As String, textcolor As Color, cbolor As Color)
|
||||
If IsNothing(control) Then Return
|
||||
If control.InvokeRequired Then
|
||||
control.Invoke(New delSetFromUI(AddressOf SetFromUI), control, mText, textcolor, cbolor)
|
||||
Else
|
||||
control.Text = mText
|
||||
control.ForeColor = textcolor
|
||||
control.BackColor = cbolor
|
||||
End If
|
||||
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
|
||||
|
||||
End Class
|
||||
Reference in New Issue
Block a user