📄 publicclass.vb
字号:
Imports System.Math
'Imports System.String
Imports Microsoft.VisualBasic.Strings
Imports TransmitTV.LoadData
Public Class PublicClass
'''凯腾、吉兆发射机数据包分解
Public Shared Function decData(ByRef hostData() As Byte, ByVal iStart As Integer, ByVal iEnd As Integer) As Byte()
Dim databuf() As Byte
Dim i As Integer
ReDim databuf(iEnd - iStart)
For i = 0 To iEnd - iStart
databuf(i) = hostData(iStart + i)
Next
decData = databuf
End Function
Public Shared Function OnOffFlag(ByVal datatime As String) As Boolean
If CDate(datatime).Hour = DateTime.Now.Hour And CDate(datatime).Minute = DateTime.Now.Minute Then
OnOffFlag = True
Else
OnOffFlag = False
End If
End Function
'****************************************************************************
''''''''函数--十进制转换为二进制
Public Shared Function DecimalToBinary(ByVal DecimalValue As Long, ByVal MinimumDigits As Integer) As String
Dim result As String
Dim ExtraDigitsNeeded As Integer
Dim i As Integer
DecimalValue = Abs(DecimalValue)
Do
result = CStr(DecimalValue Mod 2) & result
DecimalValue = DecimalValue \ 2
Loop While DecimalValue > 0
ExtraDigitsNeeded = MinimumDigits - Len(result)
If ExtraDigitsNeeded > 0 Then
For i = 1 To ExtraDigitsNeeded
result = "0" & result
Next i
End If
DecimalToBinary = result
End Function
''''''''函数--二进制转换为十进制
Public Shared Function BinaryToDecimal(ByVal BinaryValue As String) As Long
Dim idx As Integer
Dim tmp As String
Dim result As Long
Dim digits As Integer
digits = Len(BinaryValue)
For idx = digits To 1 Step -1
tmp = Mid(BinaryValue, idx, 1)
If tmp = "1" Then result = result + 2 ^ (digits - idx)
Next
BinaryToDecimal = result
End Function
Public Shared Function Round45(ByVal n As Double, ByVal p As Integer) As Double
Dim S As String, a As String, b As String, X As String, v As Double
If p < 0 Then Round45 = "" : Exit Function 'n = 0 Or
S = Str(n)
If InStr(S, ".") <> 0 Then
a = Mid(S, 1, InStr(S, ".") - 1)
b = Mid(S, InStr(S, ".") + 1)
Else
a = S
b = ""
End If
If Len(b) <= p Then
Round45 = CDbl(Val(a + "." + b))
Exit Function
Else
If Val(Mid(b, p + 1, 1)) >= 5 Then
X = a + Mid(b, 1, p)
v = CDbl(Val(X))
v = v + 1.0#
v = v / (10 ^ p)
Round45 = v
Exit Function
Else
Round45 = CDbl(Val(a + "." + b))
'''''''''''''''''''''''''''''''''''''''''''''''''要想做到真正的四舍五入,再加以下的语句
Round45 = Round(Round45, p)
''''''''''''''''''''''''''''''''''''''''''''''''
Exit Function
End If
End If
End Function
' 1.计算法
'计算法就是依据CRC校验码的产生原理来设计程序。其优点是模块代码少,修改灵活,可移植性好。其缺点为计算量大。
Public Shared Function calCRC16(ByVal data() As Byte) As Byte()
Dim CRC16Lo As Byte, CRC16Hi As Byte 'CRC寄存器
Dim CL As Byte, CH As Byte '多项式码&HA001
Dim SaveHi As Byte, SaveLo As Byte
Dim I As Integer
Dim Flag As Integer
CRC16Lo = &HFF
CRC16Hi = &HFF
CL = &H1
CH = &HA0
For I = 0 To UBound(data)
CRC16Lo = CRC16Lo Xor data(I) '每一个数据与CRC寄存器进行异或
For Flag = 0 To 7
SaveHi = CRC16Hi
SaveLo = CRC16Lo
CRC16Hi = CRC16Hi \ 2 '高位右移一位
CRC16Lo = CRC16Lo \ 2 '低位右移一位
If ((SaveHi And &H1) = &H1) Then '如果高位字节最后一位为1
CRC16Lo = CRC16Lo Or &H80 '则低位字节右移后前面补1
End If '否则自动补0
If ((SaveLo And &H1) = &H1) Then '如果LSB为1,则与多项式码进行异或
CRC16Hi = CRC16Hi Xor CH
CRC16Lo = CRC16Lo Xor CL
End If
Next Flag
Next I
Dim ReturnData(1) As Byte
ReturnData(0) = CRC16Hi 'CRC高位
ReturnData(1) = CRC16Lo 'CRC低位
calCRC16 = ReturnData
End Function
'2.查表法
'查表法的优缺点与计算法的正好相反。
Public Shared Function tableCRC16(ByVal data() As Byte) As Byte()
Dim CRC16Hi As Byte
Dim CRC16Lo As Byte
CRC16Hi = &HFF
CRC16Lo = &HFF
Dim I As Integer
Dim iIndex As Long
For I = 0 To UBound(data)
iIndex = CRC16Lo Xor data(I)
CRC16Lo = CRC16Hi Xor GetCRCLo(iIndex) '低位处理
CRC16Hi = GetCRCHi(iIndex) '高位处理
Next I
Dim ReturnData(1) As Byte
ReturnData(0) = CRC16Hi 'CRC低位
ReturnData(1) = CRC16Lo 'CRC高位
tableCRC16 = ReturnData
End Function
'CRC低位字节值表
Public Shared Function GetCRCLo(ByVal Ind As Long) As Byte
GetCRCLo = Choose(Ind + 1, &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, &H1, &HC0, &H80, &H41, &H0, _
&HC1, &H81, &H40, &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, _
&H41, &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, &H0, &HC1, _
&H81, &H40, &H1, &HC0, &H80, &H41, &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, &H0, _
&HC1, &H81, &H40, &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, _
&H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, &H1, &HC0, &H80, _
&H41, &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, &H0, &HC1, &H81, &H40, &H1, &HC0, _
&H80, &H41, &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, &H0, _
&HC1, &H81, &H40, &H1, &HC0, &H80, &H41, &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, &H0, &HC1, &H81, &H40, _
&H1, &HC0, &H80, &H41, &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, _
&H40, &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, &H1, &HC0, _
&H80, &H41, &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, &H0, &HC1, &H81, &H40, &H1, _
&HC0, &H80, &H41, &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, _
&H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40)
End Function
'CRC高位字节值表
Public Shared Function GetCRCHi(ByVal Ind As Long) As Byte
GetCRCHi = Choose(Ind + 1, &H0, &HC0, &HC1, &H1, &HC3, &H3, &H2, &HC2, &HC6, &H6, &H7, &HC7, &H5, &HC5, _
&HC4, &H4, &HCC, &HC, &HD, &HCD, &HF, &HCF, &HCE, &HE, &HA, &HCA, &HCB, &HB, &HC9, &H9, &H8, &HC8, &HD8, _
&H18, &H19, &HD9, &H1B, &HDB, &HAD, &H1A, &H1E, &HDE, &HDF, &H1F, &HDD, &H1D, &H1C, &HDC, &H14, &HD4, &HD5, _
&H15, &HD7, &H17, &H16, &HD6, &HD2, &H12, &H13, &HD3, &H11, &HD1, &HD0, &H10, &HF0, &H30, &H31, &HF1, &H33, _
&HF3, &HF2, &H32, &H36, &HF6, &HF7, &H37, &HF5, &H35, &H34, &HF4, &H3C, &HFC, &HFD, &H3D, &HFF, &H3F, &H3E, _
&HFE, &HFA, &H3A, &H3B, &HFB, &H39, &HF9, &HF8, &H38, &H28, &HE8, &HE9, &H29, &HEB, &H2B, &H2A, &HEA, &HEE, _
&H2E, &H2F, &HEF, &H2D, &HED, &HEC, &H2C, &HE4, &H24, &H25, &HE5, &H27, &HE7, &HE6, &H26, &H22, &HE2, &HE3, _
&H23, &HE1, &H21, &H20, &HE0, &HA0, &H60, &H61, &HA1, &H63, &HA3, &HA2, &H62, &H66, &HA6, &HA7, _
&H67, &HA5, &H65, &H64, &HA4, &H6C, &HAC, &HAD, &H6D, &HAF, &H6F, &H6E, &HAE, &HAA, &H6A, &H6B, &HAB, &H69, _
&HA9, &HA8, &H68, &H78, &HB8, &HB9, &H79, &HBB, &H7B, &H7A, &HBA, &HBE, &H7E, &H7F, &HBF, &H7D, &HBD, &HBC, _
&H7C, &HB4, &H74, &H75, &HB5, &H77, &HB7, &HB6, &H76, &H72, &HB2, &HB3, &H73, &HB1, &H71, &H70, &HB0, &H50, _
&H90, &H91, &H51, &H93, &H53, &H52, &H92, &H96, &H56, &H57, &H97, &H55, &H95, &H94, &H54, &H9C, &H5C, &H5D, _
&H9D, &H5F, &H9F, &H9E, &H5E, &H5A, &H9A, &H9B, &H5B, &H99, &H59, &H58, &H98, &H88, &H48, &H49, &H89, &H4B, _
&H8B, &H8A, &H4A, &H4E, &H8E, &H8F, &H4F, &H8D, &H4D, &H4C, &H8C, &H44, &H84, &H85, &H45, &H87, &H47, &H46, _
&H86, &H82, &H42, &H43, &H83, &H41, &H81, &H80, &H40)
End Function
Public Shared Sub TramDatabase(ByVal equNum As Integer, ByVal equName As String, ByVal cmdType As Integer, ByVal state As Integer, ByVal saveFlag As Boolean, ByVal id As Int64)
'Dim ds As DataSet
Dim QueryString As String
Dim QueryString1 As String
Dim strTemp As String
If saveFlag = True Then
Select Case cmdType
Case 6 '"update Transmitter set "
QueryString = "update equipments set state = " + Trim(state) + " where equNum=" & Trim(equNum) '+ " and id=" & Trim(id)
Case 12
Select Case state
Case 0
QueryString = "update controlCmd set response =1 where equNum=" & Trim(equNum) + " and id=" & Trim(id)
strTemp = Trim(equName) + "---N+1切换成功!"
Case Else
QueryString = "update controlCmd set response =2 where equNum=" & Trim(equNum) + " and id=" & Trim(id)
strTemp = Trim(equName) + "---N+1切换失败!"
End Select
QueryString1 = "insert into systemLog values('0',2,'" & strTemp & "','" & Now & "',0)"
If search.con.State = ConnectionState.Open Then
search.con.Close()
End If
search.insert(QueryString1)
Case Else
Select Case state
Case 0
QueryString = "update controlCmd set response =1 where equNum=" & Trim(equNum) + " and id=" & Trim(id)
Case Else
QueryString = "update controlCmd set response =2 where equNum=" & Trim(equNum) + " and id=" & Trim(id)
End Select
End Select
If search.con.State = ConnectionState.Open Then
search.con.Close()
End If
search.update(QueryString)
Else
Select Case cmdType
Case 3
If state = 0 Then
strTemp = Trim(equName) + "---自动开机成功!"
Else
strTemp = Trim(equName) + "---自动开机失败!"
End If
Case 4
If state = 0 Then
strTemp = Trim(equName) + "---自动关机成功!"
Else
strTemp = Trim(equName) + "---自动关机失败!"
End If
End Select
QueryString = "insert into systemLog values('0',2,'" & strTemp & "','" & Now & "',0)"
If search.con.State = ConnectionState.Open Then
search.con.Close()
End If
search.insert(QueryString)
End If
' search.con.Close()
End Sub
Public Shared Sub saveA1Para(ByVal iTempflag As Integer)
Dim strsql As String
Dim ds As DataSet
Dim ds1 As DataSet
Dim ds2 As DataSet
Dim ds3 As DataSet
Dim aCom As Integer
Dim i As Integer
Dim tableName As String
Dim no As Integer
Dim id As Integer
Dim devID As Integer
Dim gatID As Integer
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -