comminit.vb
来自「项目是为日本瑞萨工作所做的BAKE炉温控系统 整个文件夹包括设计文档」· VB 代码 · 共 63 行
VB
63 行
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 + =
减小字号Ctrl + -
显示快捷键?