addmabm.frm
来自「16 relay output channels and 16 isolated」· FRM 代码 · 共 608 行 · 第 1/2 页
FRM
608 行
ErrCde = DRV_FAIDmaExStart(DriverHandle, ptFAIDmaExStart)
If ErrCde <> 0 Then
GlobalUnlock (hUserBuf)
GlobalUnlock (hDisplayBuf)
GlobalFree (UserBuf)
DRV_GetErrorMessage ErrCde, ErrMsg
MsgBox ErrMsg, vbOKOnly, "Driver Message"
DRV_FreeDMABuffer DriverHandle, pBuffer
DRV_DeviceClose DriverHandle
SetState (STATE_Ready)
Exit Sub
Else
ptFAICheck.ActiveBuf = DRV_GetAddress(ActiveBuf)
ptFAICheck.HalfReady = DRV_GetAddress(HalfReady)
ptFAICheck.Overrun = DRV_GetAddress(Overrun)
ptFAICheck.retrieved = DRV_GetAddress(retrieved)
ptFAICheck.Stopped = DRV_GetAddress(Stopped)
ptFAITransfer.ActiveBuf = 0 ' single buffer
ptFAITransfer.DataType = DataType
ptFAITransfer.Count = DispNum
ptFAITransfer.Overrun = DRV_GetAddress(Overrun)
BufchangeCounter = 0
OverrunCounter = 0
TerminateCounter = 0
InterruptCounter = 0
lbBufChangeCnt.Caption = 0
lbOverrunCnt.Caption = 0
lbInterruptCnt.Caption = 0
lbReadyBuf.Caption = ""
gbStopThread = False
' Create Interrupt Event handler thread and suspend it
ThreadHandle = CreateThread(0, 0, AddressOf EventThread, vbNullString, CREATE_SUSPENDED, ThreadID)
If (ThreadHandle = 0) Then
Response = MsgBox("Create Thread Failed!", vbOKOnly, "Error!!")
Response = DRV_DeviceClose(DeviceHandle)
Exit Sub
End If
'Set thread priority
Response = SetThreadPriority(ThreadHandle, THREAD_PRIORITY_NORMAL)
'Awake thread
Response = ResumeThread(ThreadHandle)
' Set suitable Interval value to make sure the program
' doesn't lose every buffer change event.
Timer1.Interval = 200
Timer1.Enabled = True
End If
End Sub
Private Sub btSetting_Click()
SetState (STATE_Setting)
frmMain.Hide
Setting.Show
' Step 1: Open Device
ErrCde = DRV_DeviceOpen(DeviceNum, DriverHandle)
If ErrCde <> SUCCESS Then
DRV_GetErrorMessage ErrCde, ErrMsg
MsgBox ErrMsg, vbOKOnly, "Driver Message"
GainList.Hide
Setting.Show
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
GainList.Hide
Setting.Show
Exit Sub
End If
' Step 3: Initialize Input Range List Combobox with device features
Setting.ComboxInputRange.Clear
For j = 0 To DevFeat.usNumGain - 1
Setting.ComboxInputRange.AddItem StrConv(DevFeat.glGainList(j).szGainStr, vbUnicode)
Next j
' Step 4: Close device
DRV_DeviceClose DriverHandle
PacerRate1 = PacerRate
Conv1 = Conv
CyclicMode1 = CyclicMode
TriggerSource1 = TriggerSource
EventMode1 = EventMode
DelayCount1 = DelayCount
StartChannel1 = StartChannel
ChannelNum1 = ChannelNum
ClockSource1 = ClockSource
TriggerEdge1 = TriggerEdge
TriggerType1 = TriggerType
TriggerVoltage1 = TriggerVoltage
TriggerMode1 = TriggerMode
InputRange1 = InputRange
GainOption1 = GainOption
DataType1 = DataType
OverrunTime1 = OverrunTime
Setting.EditStartChannel.Text = Str(StartChannel)
Setting.EditChannelNum.Text = Str(ChannelNum)
Setting.EditPacerRate.Text = Str(PacerRate)
Setting.EditConv.Text = Str(Conv)
Setting.EditDelayCount.Text = Str(DelayCount)
Setting.EditTriggerVoltage = Str(TriggerVoltage)
If TriggerMode = MODE_PacerTrigger Then
Setting.OpPacer.value = True
Else
If TriggerMode = MODE_PostTrigger Then
Setting.OpPost.value = True
Else
If TriggerMode = MODE_DelayTrigger Then
Setting.OpDelay.value = True
Else
Setting.OpAbout = True
End If
End If
End If
If CyclicMode = MODE_Cyclic Then
Setting.OpCyclic.value = True
Else
Setting.OpNoncyclic.value = True
End If
If TriggerSource = MODE_InternalTrigger Then
Setting.OpInternalTrigger.value = True
Else
Setting.OpExternalTrigger.value = True
End If
If ClockSource = MODE_InternalClock Then
Setting.OpInternalClock.value = True
Else
Setting.OpExternalClock.value = True
End If
If EventMode = MODE_EventEnable Then
Setting.OpEnable.value = True
Else
Setting.OpDisable.value = True
End If
'If TriggerEdge = MODE_RisingTrigger Then
' Setting.OpRising.value = True
'Else
' Setting.OpFalling.value = True
'End If
If TriggerType = MODE_DigitalTrigger Then
Setting.OpDigital.value = True
End If
If TriggerType = 1 Then
Setting.OpAnalog0.value = True
End If
If TriggerType = 2 Then
Setting.OpAnalog1.value = True
End If
If TriggerType = 3 Then
Setting.OpAnalog2.value = True
End If
If TriggerType = 4 Then
Setting.OpAnalog3.value = True
End If
If DataType = MODE_RawData Then
Setting.OpRawData.value = True
Else
Setting.OpVoltageData.value = True
End If
If GainOption = MODE_OverallGain Then
Setting.OpOverall.value = True
Setting.btGainList.Enabled = False
Else
Setting.OpGainList.value = True
Setting.btGainList.Enabled = True
End If
Setting.ComboxInputRange.ListIndex = InputRange
End Sub
Private Sub btStop_Click()
' Step Stop A/D conversion for high speed
ErrCde = DRV_FAITerminate(DriverHandle)
If ErrCde <> 0 Then
DRV_GetErrorMessage ErrCde, ErrMsg
MsgBox ErrMsg, vbOKOnly, "Driver Message"
DRV_FreeDMABuffer DriverHandle, pBuffer
GlobalUnlock (hUserBuf)
GlobalFree (UserBuf)
DRV_DeviceClose DriverHandle
SetState (STATE_Ready)
Exit Sub
End If
End Sub
Private Sub Combo1_Click()
If state = STATE_Begin Then
SetState (STATE_Ready)
End If
DeviceNum = devicelist(Combo1.ListIndex).dwDeviceNum
End Sub
Private Sub Form_Load()
SetState (STATE_Begin)
RemoveX Me.hwnd
PacerRate = 250000
Conv = 40000
CyclicMode = MODE_Noncyclic
TriggerSource = MODE_InternalTrigger
EventMode = MODE_EventEnable
DelayCount = 2
StartChannel = 0
ChannelNum = 1
ClockSource = MODE_InternalClock
TriggerEdge = MODE_RisingTrigger
TriggerType = MODE_DigitalTrigger
TriggerVoltage = 1
TriggerMode = MODE_PacerTrigger
InputRange = 0
GainOption = MODE_OverallGain
DataType = MODE_VoltageData
OverrunTime = 0
Dim tt As Long
Dim tempStr As String
Dim gnNumOfDevices As Integer
Dim Response As Long
tt = DRV_GetAddress(devicelist(0))
ErrCde = DRV_DeviceGetList(tt, 255, 0)
If (ErrCde <> 0) Then
DRV_GetErrorMessage ErrCde, ErrMsg
MsgBox ErrMsg, vbOKOnly, "Error!!"
Exit Sub
End If
ErrCde = DRV_DeviceGetNumOfList(gnNumOfDevices)
If (ErrCde <> 0) Then
DRV_GetErrorMessage ErrCde, ErrMsg
Response = MsgBox(ErrMsg, vbOKOnly, "Error!!")
Exit Sub
End If
For i = 0 To (gnNumOfDevices - 1)
tempStr = ""
For ii = 0 To 49
tempStr = tempStr + Chr(devicelist(i).szDeviceName(ii))
Next ii
frmMain.Combo1.AddItem tempStr
Next i
ErrMsg = String(255, 0)
szBuffer = String(255, 0)
szDescript = String(255, 0)
For i = 0 To MaxChannels
gain(i) = 0
Next i
End Sub
Private Sub Form_Terminate()
If state <> STATE_Run Then
End
End If
End Sub
Private Sub Timer1_Timer()
LstStatus.Clear
For i = 0 To DispNum - 1
If (DataType = 1) Then
LstStatus.AddItem "Buf[" + Str(i) + "]= " + Format(DisplayBuf(i), "0.0000000")
Else
LstStatus.AddItem "Buf[" + Str(i) + "]= " + Hex(DisplayRawBuf(i)) + " H"
End If
Next i
End Sub
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?