?? devobj.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 = "DevObj"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
Option Explicit
'Dim lpDEVCONFIG_AI As DEVCONFIG_AI
'Dim lpAIGetConfig As PT_AIGetConfig
'Dim gnNumOfSubdevices As Integer
Dim fVoltage(0 To 31) As Single
Dim ErrCount As Integer
Dim hplxflag As Boolean
Dim mDevChannel As Long '設(shè)備通道個(gè)數(shù)
Dim mDealFlag As Long '數(shù)據(jù)處理標(biāo)志
Dim mInputMode As Long '通道的輸入方式
Dim mInputRange As Long '輸入量程
Dim mChangeMode As Long '碼制轉(zhuǎn)換方式
Dim mChangeK As Single
Dim mChangeV As Long
Dim mHandle As Long 'NT下讀寫端口的句柄
Public Function InitDevRun(objMcgsSave As Object, objMcgsData As Object) As Long
'* 函數(shù)目的 : MCGS運(yùn)行環(huán)境啟動(dòng)時(shí)調(diào)用接口一次,對設(shè)備構(gòu)件進(jìn)行初始化工作
'* 參數(shù)意義 : objMcgsSave - MCGS存盤數(shù)據(jù)庫對象
'* objMcgsData - MCGS實(shí)時(shí)數(shù)據(jù)庫對象
'* 函數(shù)返回 : InitDevRun = 0 - 設(shè)備初始化成功
'* InitDevRun = 1 - 設(shè)備初始化失敗
ErrCde = DRV_DeviceOpen(0, DeviceHandle)
'If (ErrCde <> 0) Then
' DRV_GetErrorMessage ErrCde, szErrMsg
' Response = MsgBox(szErrMsg, vbOKOnly, "Error!!")
' Exit Sub
' End If
End Function
Public Function RunDevCommand(objMcgsData As Object, ByVal strCommandString As String) As Long
'* 函數(shù)目的 : MCGS運(yùn)行環(huán)境中,對設(shè)備執(zhí)行指定的設(shè)備命令時(shí)調(diào)用接口一次
'* 參數(shù)意義 : objMcgsData - MCGS實(shí)時(shí)數(shù)據(jù)庫對象
'* strCommandString - 設(shè)備命令字符串
'* 函數(shù)返回 : RunDevCommand = 0 - 命令正確執(zhí)行
'* RunDevCommand = 2 - 無效的設(shè)備命令
PROC_EXIT:
'* 設(shè)備命令無效
RunDevCommand = 2
End Function
Public Function CollectDevDat(alngDataFlag As Variant, asngDataValue As Variant, astrDataString As Variant) As Long
'* 函數(shù)目的 : MCGS運(yùn)行環(huán)境中,根據(jù)指定的采集周期,定時(shí)調(diào)用本接口,對設(shè)備進(jìn)行數(shù)據(jù)采集工作
'* 參數(shù)意義 : alngDataFlag - Long型數(shù)組,設(shè)備對應(yīng)通道的數(shù)據(jù)是否需要處理,一般不用
'* asngDataValue - Single型數(shù)組,設(shè)備對應(yīng)的數(shù)值型通道的數(shù)值,當(dāng)通道為字符型時(shí),表示通道的值在astrDataString數(shù)組中的位置
'* astrDataString - String型數(shù)組,設(shè)備對應(yīng)的字符型通道的值
'* 函數(shù)返回 : CollectDevDat = 0 - 采集數(shù)據(jù)有效,但只對返回的輸入數(shù)據(jù)進(jìn)行處理;
'* CollectDevDat = 1 - 采集數(shù)據(jù)有效,但對返回的輸入輸出數(shù)據(jù)都進(jìn)行處理
'* CollectDevDat = 2 - 采集數(shù)據(jù)無效,不須進(jìn)行處理。
'* CollectDevDat =-1 - 設(shè)備故障
'* CollectDevDat =-100 - 設(shè)備故障,但把第0通道的值返回,一般使用0通道的值來表示故障的具體信息
Dim i As Integer
Dim j As Integer
Dim K As Integer
Dim v(0 To 31, 1 To 300) As Single
Dim sum As Single
Dim t As Single
ErrCde = DRV_DeviceOpen(0, DeviceHandle) ' Make sure device number = 0
ptMAIConfig.StartChan = 0
ptMAIConfig.NumChan = 7
For i = 0 To 32
usGainCode(i) = 17
'AddData(i) = 0
Next
ptMAIConfig.GainArray = DRV_GetAddress(usGainCode(0))
ErrCde = DRV_MAIConfig(DeviceHandle, ptMAIConfig)
ptMAIVoltageIn.StartChan = 0
ptMAIVoltageIn.NumChan = 7
ptMAIVoltageIn.GainArray = DRV_GetAddress(usGainCode(0))
ptMAIVoltageIn.TrigMode = 0
ptMAIVoltageIn.VoltageArray = DRV_GetAddress(fVoltage(0))
ErrCde = DRV_MAIVoltageIn(DeviceHandle, ptMAIVoltageIn)
For j = 1 To 300 Step 1
For i = 0 To 6
v(i, j) = fVoltage(i)
Next i
Next j
For i = 0 To 6
For K = 1 To 299
For j = 1 To 300 - K
If v(i, j) > v(i, j + 1) Then
t = v(i, j)
v(i, j) = v(i, j + 1)
v(i, j + 1) = t
End If
Next j
Next K
Next i
For i = 0 To 6
sum = 0
For j = 31 To 270 Step 1
sum = sum + v(i, j)
Next j
fVoltage(i) = sum / 240
asngDataValue(i) = fVoltage(i)
Next i
' UpDateValue
CollectDevDat = 0
End Function
Public Function GetDevName() As String
'* 函數(shù)目的 : MCGS運(yùn)行環(huán)境中調(diào)用,供Mcgs讀取設(shè)備的類型名稱,在設(shè)備根據(jù)箱中顯示
'* 參數(shù)意義 : 無參數(shù)
'* 函數(shù)返回 : 設(shè)備的類型名稱
GetDevName = "1713"
End Function
Public Function GetDevHelp() As Long
'* 函數(shù)目的 : MCGS組態(tài)環(huán)境中調(diào)用,在設(shè)備屬性設(shè)置窗口的基本屬性頁中,按“在線幫助”行,調(diào)用本接口顯示設(shè)備構(gòu)件在線幫助
'* 參數(shù)意義 : 無參數(shù)
'* 函數(shù)返回 : 無返回值
MsgBox "顯示設(shè)備構(gòu)件的在線幫助!"
End Function
Public Function SetDevPage(objMcgsSave As Object) As Long
'* 函數(shù)目的 : MCGS組態(tài)環(huán)境中調(diào)用,設(shè)置設(shè)備構(gòu)件的內(nèi)部屬性。在設(shè)備屬性設(shè)置窗口的基本屬性頁中,按“內(nèi)部屬性”行,調(diào)用本接口
'* 參數(shù)意義 : objMcgsSave - MCGS存盤數(shù)據(jù)庫對象
'* 函數(shù)返回 : = 0 - 輸入的內(nèi)部屬性設(shè)置有效,要保存
MsgBox "MCGS組態(tài)環(huán)境中,顯示設(shè)備構(gòu)件的內(nèi)部屬性!"
End Function
Public Function InitNewDev(objMcgsSave As Object) As Long
'* 函數(shù)目的 : MCGS組態(tài)環(huán)境中調(diào)用,當(dāng)把設(shè)備從設(shè)備工具箱中選取到設(shè)備窗口中時(shí),調(diào)用本接口,設(shè)置設(shè)備的缺省屬性值
'* 參數(shù)意義 : objMcgsSave -MCGS存盤數(shù)據(jù)庫對象
'* 函數(shù)返回 : InitNewDev = 0 - 設(shè)備初始化成功
'* InitNewDev <>0 - 設(shè)備初始化失敗
End Function
Public Function GetChlType(alngChlDataType As Variant, astrChlExplain As Variant) As Long
'* 函數(shù)目的 : MCGS運(yùn)行環(huán)境中調(diào)用,Mcgs調(diào)用本接口讀取設(shè)備各通道的數(shù)據(jù)類型和通道內(nèi)容的文字描述,
'* 在設(shè)備屬性設(shè)置窗口的通道連接屬性頁中所顯示的內(nèi)容均來自本接口
'* 參數(shù)意義 : alngChlDataType - Long型數(shù)組,存儲各通道的數(shù)據(jù)類型
'* astrChlExplain - String型數(shù)組,存儲各通道內(nèi)容的文字描述
'* 函數(shù)返回 : GetChlType = 0 - 調(diào)用成功
'* GetChlType <>0 - 調(diào)用失敗
'*
'* 數(shù)據(jù)類型標(biāo)識 = 1 開關(guān)型數(shù)據(jù)
'* = 2 數(shù)值型數(shù)據(jù)
'* = 3 字符型數(shù)據(jù)
'* 當(dāng)通道的數(shù)據(jù)類型為正數(shù)時(shí),表示該通道的作用是把設(shè)備中讀取的數(shù)據(jù)輸入到Mcgs中
'* 當(dāng)通道的數(shù)據(jù)類型為負(fù)數(shù)時(shí),表示該通道的作用是Mcgs中的數(shù)據(jù)送到設(shè)備來,供設(shè)備處理使用
Dim i As Integer
For i = 0 To 11
alngChlDataType(i) = 2
astrChlExplain(i) = "電壓輸入" + Format$(i + 1, "00")
Next
End Function
Private Sub Class_Terminate()
ErrCde = DRV_DeviceClose(DeviceHandle)
' End If
'hplxflag = True
End Sub
'* ================================================================================
'* 以下為設(shè)備構(gòu)件的屬性, 每個(gè)設(shè)備構(gòu)件必須有的四個(gè)只讀屬性
'* ================================================================================
Public Property Get DevType() As Long
'* 函數(shù)目的 : 標(biāo)明設(shè)備的類型 0-父設(shè)備 =1 子設(shè)備
DevType = 0
End Property
Public Property Get DevStyle() As Long
'* 函數(shù)目的 : 標(biāo)明設(shè)備的種類 0-獨(dú)立設(shè)備 =1 和串口父設(shè)備對應(yīng)的子設(shè)備
DevStyle = 0
End Property
Public Property Get DevChannel() As Long
'* 函數(shù)目的 : 標(biāo)明設(shè)備的通道個(gè)數(shù)
DevChannel = 32
End Property
Public Property Get DevIONumber() As Long
'* 函數(shù)目的 : 標(biāo)明設(shè)備的所占用系統(tǒng)IO的個(gè)數(shù)
DevIONumber = 4
End Property
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -