📄 comminit.vb
字号:
Module CommInit
' 串行口初始化
Public Sub SCIinit(ByRef MSComm1 As AxMSCommLib.AxMSComm, ByVal COMx As Byte, ByVal SCIFormat As String)
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
MSComm1.CommPort = COMx '串行口号
MSComm1.Settings = SCIFormat '定义传输格式
MSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeBinary '二进制数据格式
MSComm1.RThreshold = 0 '关闭串行中断
MSComm1.InputLen = 0 '一次读取缓冲区全部数据
MSComm1.PortOpen = True '打开串行口
MSComm1.InBufferCount = 0
End Sub
'----------------------------
'函数名:SCISendN
'功能:发送N个数据
'参数:data-待发送的数据
'----------------------------
Public Sub SCISendN(ByRef MSComm1 As AxMSCommLib.AxMSComm, ByVal data() As Byte)
MSComm1.OutBufferCount = 0
MSComm1.Output = data
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
End Sub
'----------------------------
'函数名:SCIRecvN
'功能:发送N个数据
'----------------------------
Public Function SCIRecvN(ByRef MSComm1 As AxMSCommLib.AxMSComm, ByVal Count As Integer, ByVal DelayTime As Integer) As Boolean
Dim i As Integer
Dim d1 As Integer
d1 = Microsoft.VisualBasic.DateAndTime.Timer
Do
Application.DoEvents()
If Microsoft.VisualBasic.DateAndTime.Timer - d1 > DelayTime Then
's内未接收到1个数据,返回Flase
Form1.frmMain.StateTxt.Text = "False"
Return False
End If
Loop Until MSComm1.InBufferCount >= Count
G_RecvData = MSComm1.Input
MSComm1.InBufferCount = 0
Return True
End Function
'----------------------------------------
'函数名:GetCheckChar求数据流的异或校验码
'参数:DataNum数据流的长度,DataP()数据流
'返回:校验码
'---------------------------------------
Public Function GetCheckChar(ByVal DataNum As Integer, ByVal DataP() As Byte) As Byte
Dim i As Integer, CheckChar As Integer
CheckChar = 0
For i = 0 To DataNum - 1
CheckChar = CheckChar Xor DataP(i)
Next
Return (CheckChar)
End Function
End Module
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -