gainlist.frm

来自「16 relay output channels and 16 isolated」· FRM 代码 · 共 214 行

FRM
214
字号
VERSION 5.00
Object = "{6B7E6392-850A-101B-AFC0-4210102A8DA7}#1.3#0"; "COMCTL32.OCX"
Begin VB.Form GainList 
   BorderStyle     =   1  'Fixed Single
   Caption         =   "Gain code setting for individual channel"
   ClientHeight    =   5130
   ClientLeft      =   5730
   ClientTop       =   3165
   ClientWidth     =   4185
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   MinButton       =   0   'False
   PaletteMode     =   1  'UseZOrder
   ScaleHeight     =   5130
   ScaleWidth      =   4185
   Begin VB.CommandButton cmdExit 
      Caption         =   "&Exit"
      Height          =   375
      Left            =   2880
      TabIndex        =   3
      Top             =   360
      Width           =   1095
   End
   Begin ComctlLib.ListView lvGain 
      Height          =   3975
      Left            =   240
      TabIndex        =   2
      Top             =   960
      Width           =   3735
      _ExtentX        =   6588
      _ExtentY        =   7011
      View            =   3
      LabelEdit       =   1
      LabelWrap       =   -1  'True
      HideSelection   =   0   'False
      _Version        =   327682
      ForeColor       =   -2147483640
      BackColor       =   -2147483643
      BorderStyle     =   1
      Appearance      =   1
      NumItems        =   3
      BeginProperty ColumnHeader(1) {0713E8C7-850A-101B-AFC0-4210102A8DA7} 
         Key             =   ""
         Object.Tag             =   ""
         Text            =   "Physical Chan"
         Object.Width           =   1411
      EndProperty
      BeginProperty ColumnHeader(2) {0713E8C7-850A-101B-AFC0-4210102A8DA7} 
         Alignment       =   2
         SubItemIndex    =   1
         Key             =   ""
         Object.Tag             =   ""
         Text            =   "Gain"
         Object.Width           =   1411
      EndProperty
      BeginProperty ColumnHeader(3) {0713E8C7-850A-101B-AFC0-4210102A8DA7} 
         Alignment       =   2
         SubItemIndex    =   2
         Key             =   ""
         Object.Tag             =   ""
         Text            =   "Configuration"
         Object.Width           =   1764
      EndProperty
   End
   Begin VB.ComboBox cmbGain 
      Height          =   315
      Left            =   240
      TabIndex        =   0
      Text            =   "cmbGain"
      Top             =   480
      Width           =   1335
   End
   Begin VB.Label Label1 
      Caption         =   "Gain"
      Height          =   255
      Left            =   240
      TabIndex        =   1
      Top             =   120
      Width           =   495
   End
End
Attribute VB_Name = "GainList"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False


Private Sub cmbGain_Click()
Dim i As Integer
Dim tempStr As String

    'Store individual gain code setting
    gain((lvGain.SelectedItem.Index - 1 + PhyChanToLogChan(DevCfg_AI, Setting.EditStartChannel)) Mod gwMaxLogChanNum) _
             = cmbGain.ListIndex
    
    tempStr = ""
    For i = 0 To 15
        tempStr = tempStr + Chr(DevFeat.glGainList(cmbGain.ListIndex).szGainStr(i))
    Next i
    lvGain.ListItems.Item(lvGain.SelectedItem.Index).SubItems(1) = tempStr
End Sub

Private Sub cmdExit_Click()
    Unload GainList
    Setting.Show
End Sub

Private Sub Form_Load()
Dim i As Integer, j As Integer
Dim ptDevFeature As PT_DeviceGetFeatures
Dim tempStr As String
Dim rStyle As Long
Dim R As Long
Dim lstItem As ListItem
Dim iPhyChan As Integer


    ' Step 1: Open Device
    ErrCde = DRV_DeviceOpen(DeviceNum, DriverHandle)
    If ErrCde <> SUCCESS Then
        DRV_GetErrorMessage ErrCde, ErrMsg
        MsgBox ErrMsg, vbOKOnly, "Driver Message"
        Exit Sub
    End If
    ' Step 2: Get device features
    ptDevFeatures.buffer = DRV_GetAddress(DevFeat)
    ptDevFeatures.size = Len(DevFeat)
    ErrCde = DRV_DeviceGetFeatures(DriverHandle, ptDevFeatures)
    If ErrCde <> SUCCESS Then
        DRV_GetErrorMessage ErrCde, ErrMsg
        MsgBox ErrMsg, vbOKOnly, "Driver Message"
        DRV_DeviceClose DriverHandle
        Exit Sub
    End If
    ' Step 3: Get AI config
    ptAIGetConfig.buffer = DRV_GetAddress(DevCfg_AI)
    ptAIGetConfig.size = Len(DevCfg_AI)
    ErrCde = DRV_AIGetConfig(DriverHandle, ptAIGetConfig)
    If ErrCde <> SUCCESS Then
        DRV_GetErrorMessage ErrCde, ErrMsg
        MsgBox ErrMsg, vbOKOnly, "Driver Message"
        DRV_DeviceClose DriverHandle
        Exit Sub
    End If
    ' Step 4: Close Device
    DRV_DeviceClose DriverHandle
    
    'Clear gain code combo box
    cmbGain.Clear
    
    'Set gain selection
    For i = 0 To (DevFeat.usNumGain - 1)
        tempStr = ""
        For j = 0 To 15
            tempStr = tempStr + Chr(DevFeat.glGainList(i).szGainStr(j))
        Next j
        cmbGain.AddItem tempStr
    Next i
    cmbGain.Text = cmbGain.List(0)
    
   'get the current ListView style
    rStyle = SendMessageLong(lvGain.hwnd, LVM_GETEXTENDEDLISTVIEWSTYLE, 0&, 0&)
    rStyle = rStyle Or LVS_EX_GRIDLINES Or LVS_EX_FULLROWSELECT
   'set the new ListView style
    R = SendMessageLong(lvGain.hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 0&, rStyle)
    
    'Only show valid channels for selection
    gwMaxLogChanNum = GetMaxLogChanNum(DevCfg_AI, DevFeat)
    iPhyChan = Val(Setting.EditStartChannel.Text)
    For i = 0 To Min((Val(Setting.EditChannelNum.Text) - 1), gwMaxLogChanNum - 1)
        If iPhyChan >= DevFeat.usMaxAISiglChl Then
            iPhyChan = iPhyChan - DevFeat.usMaxAISiglChl
        End If
        
        Set lstItem = lvGain.ListItems.Add(i + 1, , "Chan " & Str(iPhyChan))
        tempStr = ""
        For j = 0 To 15
            tempStr = tempStr + Chr(DevFeat.glGainList(gain(PhyChanToLogChan(DevCfg_AI, iPhyChan))).szGainStr(j))
        Next j
        lstItem.SubItems(1) = tempStr
        
        If iPhyChan < 32 Then
            If (DevCfg_AI.ulChanConfig And SHL(1, iPhyChan)) Then
                lstItem.SubItems(2) = "Differential"
                If (iPhyChan Mod 2) = 0 Then
                    iPhyChan = iPhyChan + 1
                End If
                lstItem.Text = "Chan " & Str(iPhyChan - 1) & "," & Str(iPhyChan)
            Else
                lstItem.SubItems(2) = "Single-Ended"
            End If
        Else
            If (DevCfg_AI.ulChanConfigEx(0) And SHL(1, iPhyChan - 32)) Then
                lstItem.SubItems(2) = "Differential"
                If (iPhyChan Mod 2) = 0 Then
                    iPhyChan = iPhyChan + 1
                End If
                lstItem.Text = "Chan " & Str(iPhyChan - 1) & "," & Str(iPhyChan)
            Else
                lstItem.SubItems(2) = "Single-Ended"
            End If
        End If
        iPhyChan = iPhyChan + 1
    
    Next i
    
End Sub

Private Sub lvGain_Click()
    cmbGain.Text = cmbGain.List(gain((lvGain.SelectedItem.Index - 1 _
        + PhyChanToLogChan(DevCfg_AI, Setting.EditStartChannel)) Mod gwMaxLogChanNum))
End Sub

⌨️ 快捷键说明

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