frmstart.frm
来自「16 relay output channels and 16 isolated」· FRM 代码 · 共 326 行
FRM
326 行
VERSION 5.00
Begin VB.Form frmDevSel
Appearance = 0 'Flat
BackColor = &H80000005&
BorderStyle = 3 'Fixed Dialog
Caption = "Digital Output Demo: Select Output Device"
ClientHeight = 3225
ClientLeft = 1950
ClientTop = 1725
ClientWidth = 5550
BeginProperty Font
Name = "MS Sans Serif"
Size = 8.25
Charset = 0
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
ForeColor = &H80000008&
LinkTopic = "Form1"
PaletteMode = 1 'UseZOrder
ScaleHeight = 3225
ScaleWidth = 5550
Begin VB.ListBox lstChannel
Appearance = 0 'Flat
Height = 810
Left = 4200
TabIndex = 6
Top = 480
Width = 1095
End
Begin VB.ListBox lstModule
Appearance = 0 'Flat
Height = 810
Left = 240
TabIndex = 4
Top = 1920
Width = 3735
End
Begin VB.CommandButton cmdExit
Appearance = 0 'Flat
BackColor = &H80000005&
Caption = "E&xit"
Height = 495
Left = 4200
TabIndex = 2
Top = 2400
Width = 1095
End
Begin VB.CommandButton cmdRun
Appearance = 0 'Flat
BackColor = &H80000005&
Caption = "&Run..."
Height = 495
Left = 4200
TabIndex = 1
Top = 1680
Width = 1095
End
Begin VB.ListBox lstDevice
Appearance = 0 'Flat
Height = 810
Left = 240
TabIndex = 0
Top = 480
Width = 3735
End
Begin VB.Label labChannel
Appearance = 0 'Flat
BackColor = &H80000005&
Caption = "Output Port"
ForeColor = &H80000008&
Height = 255
Left = 4080
TabIndex = 7
Top = 240
Width = 1335
End
Begin VB.Label labModule
Appearance = 0 'Flat
BackColor = &H80000005&
Caption = "Select a module"
ForeColor = &H00808080&
Height = 255
Left = 480
TabIndex = 5
Top = 1680
Width = 3375
End
Begin VB.Label labDevLst
Appearance = 0 'Flat
BackColor = &H80000005&
Caption = "Select a device from list"
ForeColor = &H80000008&
Height = 255
Left = 480
TabIndex = 3
Top = 240
Width = 3375
End
End
Attribute VB_Name = "frmDevSel"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Function TestStr(DStr As String, TStr As String) As Boolean
Dim lenD, lenT As Integer
Dim i As Integer
TestStr = False
lenD = Len(DStr)
lenT = Len(TStr)
For i = 1 To (lenD - lenT + 1)
If (Mid(DStr, i, lenT) = TStr) Then
TestStr = True
End If
Next i
If DStr = "" Then
TestStr = True
End If
End Function
Private Sub cmdExit_Click()
If bRun Then
ErrCde = DRV_DeviceClose(DeviceHandle)
If (ErrCde <> 0) Then
DRV_GetErrorMessage ErrCde, szErrMsg
Response = MsgBox(szErrMsg, vbOKOnly, "Error!!")
End If
End If
End
End Sub
Private Sub cmdRun_Click()
lpDioPortMode.Port = lstChannel.ListIndex
lpDioPortMode.dir = OUTPORT
' not every digital I/O card could use DRV_DioSetPortMode function
If lpDevFeatures.usDIOPort > 0 Then
ErrCde = DRV_DioSetPortMode(DeviceHandle, lpDioPortMode)
If (ErrCde <> 0) Then
DRV_GetErrorMessage ErrCde, szErrMsg
Response = MsgBox(szErrMsg, vbOKOnly, "Error!!")
Exit Sub
End If
End If
frmRun.Show
frmDevSel.Hide
End Sub
Private Sub Form_Load()
Dim gnNumOfDevices As Integer
Dim nOutEntries As Integer
Dim i, ii As Integer
Dim tt As Long
Dim tempStr As String
' Add type of PC Laboratory Card
tt = DRV_GetAddress(devicelist(0))
ErrCde = DRV_DeviceGetList(tt, MaxEntries, nOutEntries)
If (ErrCde <> 0) Then
DRV_GetErrorMessage ErrCde, szErrMsg
Response = MsgBox(szErrMsg, vbOKOnly, "Error!!")
Exit Sub
End If
ErrCde = DRV_DeviceGetNumOfList(gnNumOfDevices)
If (ErrCde <> 0) Then
DRV_GetErrorMessage ErrCde, szErrMsg
Response = MsgBox(szErrMsg, vbOKOnly, "Error!!")
Exit Sub
End If
For i = 0 To (gnNumOfDevices - 1)
tempStr = ""
For ii = 0 To MaxDevNameLen
tempStr = tempStr + Chr(devicelist(i).szDeviceName(ii))
Next ii
lstDevice.AddItem tempStr
Next i
labModule.Enabled = False
lstModule.Enabled = False
labChannel.Enabled = False
lstChannel.Enabled = False
cmdRun.Enabled = False
End Sub
Private Sub lstDevice_Click()
Dim i, ii As Integer
Dim tempNum As Integer
Dim TestRes As Boolean
Dim gnNumOfSubdevices As Integer
Dim nOutEntries As Integer
Dim lpSubDeviceList As Long
Dim dwDeviceNum As Long
lstModule.Clear
lstChannel.Clear
' Avoid to open Advantech Demo Card
TestRes = TestStr(lstDevice.Text, "DEMO")
If (TestRes) Then
labModule.Enabled = False
lstModule.Enabled = False
labChannel.Enabled = False
lstChannel.Enabled = False
lstChannel.AddItem "No Use"
cmdRun.Enabled = False
End If
If (Not TestRes) Then
' Check if there is any device attatched on this COM port or CAN
gnNumOfSubdevices = devicelist(lstDevice.ListIndex).nNumOfSubdevices
If (gnNumOfSubdevices > MaxDev) Then
gnNumOfSubdevices = MaxDev
End If
' retrieve the information of all installed devices
If (gnNumOfSubdevices <> 0) Then
dwDeviceNum = devicelist(lstDevice.ListIndex).dwDeviceNum
lpSubDeviceList = DRV_GetAddress(SubDevicelist(0))
ErrCde = DRV_DeviceGetSubList(dwDeviceNum, lpSubDeviceList, gnNumOfSubdevices, nOutEntries)
If (ErrCde <> 0) Then
DRV_GetErrorMessage ErrCde, szErrMsg
Response = MsgBox(szszErrMsg, vbOKOnly, "Error!!")
Exit Sub
End If
For i = 0 To (gnNumOfSubdevices - 1)
tempStr = ""
For ii = 0 To MaxDevNameLen
tempStr = tempStr + Chr(SubDevicelist(i).szDeviceName(ii))
Next ii
lstModule.AddItem tempStr
Next i
lstModule.Enabled = True
labModule.Enabled = True
End If
If (gnNumOfSubdevices = 0) Then
dwDeviceNum = devicelist(lstDevice.ListIndex).dwDeviceNum
ErrCde = DRV_DeviceOpen(dwDeviceNum, DeviceHandle)
If (ErrCde <> 0) Then
DRV_GetErrorMessage ErrCde, szErrMsg
Response = MsgBox(szErrMsg, vbOKOnly, "Error!!")
Exit Sub
Else
bRun = True
End If
ptDevGetFeatures.buffer = DRV_GetAddress(lpDevFeatures)
ErrCde = DRV_DeviceGetFeatures(DeviceHandle, ptDevGetFeatures)
If (ErrCde <> 0) Then
DRV_GetErrorMessage ErrCde, szErrMsg
Response = MsgBox(szErrMsg, vbOKOnly, "Error!!")
Exit Sub
End If
lstChannel.Clear
tempNum = (lpDevFeatures.usMaxDOChl + 7) / 8
For i = 0 To (tempNum - 1)
temp$ = "Port#" + Str(i)
lstChannel.AddItem temp$, i
Next i
lstChannel.Text = lstChannel.List(0)
lstChannel.Enabled = True
cmdRun.Enabled = True
End If
End If
End Sub
Private Sub lstModule_Click()
Dim i, ii As Integer
Dim dwDeviceNum As Long
Dim tempNum As Integer
lstChannel.Clear
'lstVoltageRange.Clear
' open COM device or CAN device
dwDeviceNum = SubDevicelist(lstModule.ListIndex).dwDeviceNum
ErrCde = DRV_DeviceOpen(dwDeviceNum, DeviceHandle)
If (ErrCde <> 0) Then
DRV_GetErrorMessage ErrCde, szErrMsg
Response = MsgBox(szszErrMsg, vbOKOnly, "Error!!")
Exit Sub
Else
bRun = True
End If
ptDevGetFeatures.buffer = DRV_GetAddress(lpDevFeatures)
ErrCde = DRV_DeviceGetFeatures(DeviceHandle, ptDevGetFeatures)
If (ErrCde <> 0) Then
DRV_GetErrorMessage ErrCde, szErrMsg
Response = MsgBox(szszErrMsg, vbOKOnly, "Error!!")
Exit Sub
End If
lstChannel.Clear
tempNum = lpDevFeatures.usMaxDOChl / 8
'The number of channels of some Advantech Adam4000 modules are less than 8
If (tempNum <> 0) Then
For i = 0 To (tempNum - 1)
temp$ = "Port#" + Str(i)
lstChannel.AddItem temp$, i
Next i
Else
temp$ = "Port#0"
lstChannel.AddItem temp$, 0
End If
lstChannel.Text = lstChannel.List(0)
lstChannel.Enabled = True
cmdRun.Enabled = True
End Sub
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?