⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clscomrcvmeterdata.cls

📁 Can通讯数据类模块,我经常用在自己的工程当中
💻 CLS
字号:
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "ClsComRcvMeterData"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Attribute VB_Ext_KEY = "SavedWithClassBuilder6" ,"Yes"
Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
Option Explicit
'保持属性值的局部变量
Private mvarblnRcvDataOkOrNo As Boolean '局部复制
Private mbytCanData(0 To 10) As Byte

Public Function SetCanDataSum(bytCanData() As Byte) As Byte
    Dim intSum, intI As Integer
    If UBound(bytCanData()) >= 11 Then
        intSum = 0
        For intI = 0 To 10
            intSum = intSum + bytCanData(intI)
            intSum = intSum Mod &H100
        Next intI
    Else
        intSum = 0
    End If
    SetCanDataSum = CByte(intSum)
End Function

Public Property Get int810RankingCode() As Integer
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.intRankingCode
    Dim varintRankingCode As Integer
    If mvarblnRcvDataOkOrNo = True Then
        varintRankingCode = CInt(mbytCanData(5))
    Else
        varintRankingCode = -1
    End If
    int810RankingCode = varintRankingCode
End Property

Public Property Get int800RankingCode() As Integer
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.intRankingCode
    Dim varintRankingCode As Integer
    If mvarblnRcvDataOkOrNo = True Then
        varintRankingCode = CInt(mbytCanData(6))
    Else
        varintRankingCode = -1
    End If
    int800RankingCode = varintRankingCode
End Property

Public Property Get sngRcvDataLow() As Single
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.sngRcvDataLow
    Dim varsngRcvDataLow As Single
    If mvarblnRcvDataOkOrNo = True Then
        varsngRcvDataLow = CSng(mbytCanData(8)) * &H100 + CSng(mbytCanData(9))
    Else
        varsngRcvDataLow = -1
    End If
    sngRcvDataLow = varsngRcvDataLow
End Property

Public Property Get sngRcvDataHigh() As Single
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.sngRcvDataHigh
    Dim varsngRcvDataHigh As Single
    If mvarblnRcvDataOkOrNo = True Then
        varsngRcvDataHigh = CSng(mbytCanData(6)) * &H100 + CSng(mbytCanData(7))
    Else
        varsngRcvDataHigh = -1
    End If
    sngRcvDataHigh = varsngRcvDataHigh
End Property

Public Property Get intPeiCode() As Integer
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.intPeiCode
    Dim varintPeiCode As Integer
    If mvarblnRcvDataOkOrNo = True Then
        varintPeiCode = CInt(mbytCanData(4))
    Else
        varintPeiCode = -1
    End If
    intPeiCode = varintPeiCode
End Property

Public Property Get sngRcvData() As Single
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.lngRcvData
    Dim varsngRcvData As Single
    If mvarblnRcvDataOkOrNo = True Then
        varsngRcvData = CSng(mbytCanData(6)) * &H1000000 + _
            CSng(mbytCanData(7)) * &H10000 + _
            CSng(mbytCanData(8)) * &H100 + _
            CSng(mbytCanData(9))
    Else
        varsngRcvData = -1
    End If
    If varsngRcvData > &H7FFFFFFF Then
        Dim sngNum As Single
        sngNum = &HFFFFFFFF
        sngNum = sngNum + 1
        varsngRcvData = -(sngNum - varsngRcvData)
    End If
    varsngRcvData = varsngRcvData / (10 ^ mbytCanData(10))
    sngRcvData = varsngRcvData
End Property

Public Property Get intDataPoint() As Integer
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.bytDataPoint
    Dim varintDataPoint As Integer
    If mvarblnRcvDataOkOrNo = True Then
        varintDataPoint = mbytCanData(10)
    Else
        varintDataPoint = -1
    End If
    intDataPoint = varintDataPoint
End Property

Public Property Get intDataCode() As Integer
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.intDataCode
    Dim varintDataCode As Integer
    If mvarblnRcvDataOkOrNo = True Then
        varintDataCode = CInt(mbytCanData(4)) * &H100 + CInt(mbytCanData(5))
    Else
        varintDataCode = -1
    End If
    intDataCode = varintDataCode
End Property

Public Property Get intOrder() As Integer
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.bytOrder
    Dim varintOrder As Integer
    If mvarblnRcvDataOkOrNo = True Then
        varintOrder = CInt(mbytCanData(3))
    Else
        varintOrder = -1
    End If
    intOrder = varintOrder
End Property

Public Property Get intMeterCode() As Integer
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.bytMeterCode
    Dim varintMeterCode As Integer
    If mvarblnRcvDataOkOrNo = True Then
        varintMeterCode = CInt(mbytCanData(2))
    Else
        varintMeterCode = -1
    End If
    intMeterCode = varintMeterCode
End Property

Public Property Get blnRcvDataOkOrNo() As Boolean
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.blnRcvDataOkOrNo
    blnRcvDataOkOrNo = mvarblnRcvDataOkOrNo
End Property

Public Sub WriteRcvData(bytRcvData() As Byte)
    Dim intI, intSum As Integer
    If UBound(bytRcvData()) = 12 Then
        intSum = 0
        For intI = 0 To 10
            mbytCanData(intI) = bytRcvData(intI)
            intSum = intSum + bytRcvData(intI)
            intSum = intSum Mod 256
        Next intI
        If intSum = bytRcvData(11) Then
            mvarblnRcvDataOkOrNo = True
        Else
            mvarblnRcvDataOkOrNo = False
        End If
    Else
        mvarblnRcvDataOkOrNo = False
    End If
End Sub

Private Sub Class_Initialize()
    mvarblnRcvDataOkOrNo = False
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -