module2.bas
来自「手机短心控制接收发射程序,通过串口与手机连接,」· BAS 代码 · 共 120 行
BAS
120 行
Attribute VB_Name = "Module2"
Option Explicit
Dim mmSn(1 To 19) As Byte
Dim cSn(1 To 19) As String
Dim vvSn(1 To 19) As Byte
Public Function operationSN(inSN As String) As String
On Error Resume Next
Dim i As Integer
Dim pSerial As String
Dim tmpByte As Byte
Dim mSN As String '= "IMEI352495000428231"
mSN = inSN 'txtUserName.Text
For i = 1 To 19
mmSn(i) = Asc(Mid(mSN, i, 1)) ', Mid(vSn, i, 1), 2) ' Val(Mid(vSn, i, 1)))
vvSn(i) = Asc(Mid(vSn, i, i))
Next i
tmpByte = 0
For i = 1 To 19
tmpByte = tmpByte Xor mmSn(i)
Next i
cSn(1) = Chr(ckByte(tmpByte, 1)) ';1
tmpByte = 0
For i = 1 To 19
tmpByte = tmpByte Xor vvSn(i) Xor mmSn(i)
Next i
cSn(2) = Chr(ckByte(tmpByte, 2)) ';2
tmpByte = mmSn(3) Xor vvSn(3) Xor tmpByte
cSn(3) = Chr(ckByte(tmpByte, 3))
For i = 1 To 19
tmpByte = (tmpByte + mmSn(i)) And &H7F
Next i
tmpByte = tmpByte Xor &H7F
cSn(4) = Chr(ckByte(tmpByte, 4))
tmpByte = mmSn(5) Xor vvSn(5) Xor Asc(cSn(3))
cSn(5) = Chr(ckByte(tmpByte, 5))
tmpByte = mmSn(6) Xor vvSn(6) Xor Asc(cSn(2))
tmpByte = tmpByte Xor &H7E
cSn(6) = Chr(ckByte(tmpByte, 6))
tmpByte = mmSn(7) Xor vvSn(7) Xor Asc(cSn(1))
cSn(7) = Chr(ckByte(tmpByte, 7))
tmpByte = (mmSn(8) * 2) And &H7F
cSn(8) = Chr(ckByte(tmpByte, 8))
tmpByte = (mmSn(9) * 3 / 2) And &H7F
cSn(9) = Chr(ckByte(tmpByte, 9))
tmpByte = mmSn(10) Xor vvSn(10) Xor Asc(cSn(3))
tmpByte = tmpByte Xor &H7A
cSn(10) = Chr(ckByte(tmpByte, 10))
tmpByte = mmSn(11) Xor vvSn(11) Xor Asc(cSn(1))
cSn(11) = Chr(ckByte(tmpByte, 11))
tmpByte = (mmSn(12) Xor vvSn(12)) / 2
cSn(12) = Chr(ckByte(tmpByte, 12))
tmpByte = mmSn(13) Xor vvSn(13) Xor Asc(cSn(4))
tmpByte = tmpByte Xor &H75
cSn(13) = Chr(ckByte(tmpByte, 13))
tmpByte = mmSn(14) Xor vvSn(14) Xor Asc(cSn(3))
cSn(14) = Chr(ckByte(tmpByte, 14))
tmpByte = mmSn(15) Xor vvSn(15) Xor Asc(cSn(1))
cSn(15) = Chr(ckByte(tmpByte, 15))
tmpByte = mmSn(16) Xor vvSn(16) Xor Asc(cSn(2))
tmpByte = tmpByte Xor &H7F
cSn(16) = Chr(ckByte(tmpByte, 16))
tmpByte = mmSn(17) Xor vvSn(17) Or Asc(cSn(2)) And &H7F
cSn(17) = Chr(ckByte(tmpByte, 17))
tmpByte = mmSn(18) Xor vvSn(18) Or &H1 Xor Asc(cSn(2))
tmpByte = tmpByte Xor &H7D
cSn(18) = Chr(ckByte(tmpByte, 18))
tmpByte = mmSn(19) Xor vvSn(19) Or &H2 Xor Asc(cSn(1))
cSn(19) = Chr(ckByte(tmpByte, 19))
For i = 1 To 19
pSerial = pSerial & cSn(i)
Next i
operationSN = pSerial
End Function
Public Function ckByte(inByte As Byte, n As Integer) As Byte
Select Case Val(inByte)
Case 48 To 57
ckByte = inByte
Case 65 To 90
ckByte = inByte
Case 97 To 122
ckByte = inByte
Case Is < 48
ckByte = vvSn(n)
Case 58 To 64
ckByte = inByte + 8 + n
Case 91 To 96
ckByte = inByte + 7 + n
Case Else
ckByte = vvSn(n)
End Select
End Function
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?