📄 pci8613.bas
字号:
Attribute VB_Name = "Driver_Module"
Option Explicit
'#################### AD硬件参数PCI8613_PARA_AD定义 #####################
' 用于AD采样的实际硬件参数
Type PCI8613_PARA_AD
ADMode As Long ' AD模式选择(连续/分组方式)
FirstChannel As Long ' 首通道[0, 15]
LastChannel As Long ' 末通道[0, 15],要求末通道必须大于或等于首通道
Frequency As Long ' 采集频率,单位为Hz, [1, 100000]
GroupInterval As Long ' 分组时的组间间隔(单位:微秒)[1, 419430]
LoopsOfGroup As Long ' 组内循环次数[1, 255]
Gains As Long ' 增益设置
InputRange As Long ' 模拟量输入量程范围
TriggerMode As Long ' 触发模式选择
TriggerSource As Long ' 触发源选择
TriggerType As Long ' 触发类型选择(边沿触发/脉冲触发)
TriggerDir As Long ' 触发方向选择(正向/负向触发)
TrigWindow As Long ' 触发灵敏窗[1, 65535], 单位25纳秒
ClockSource As Long ' 时钟源选择(内/外时钟源)
bClockOutput As Long ' 允许时钟输出到CLKOUT,=TRUE:允许时钟输出, =FALSE:禁止时钟输出
GroundingMode As Long ' 接地方式(单端或双端选择)
TimeoutForNpt As Long ' 非空查询方式下的超时时间,单位秒,取值范围为[0, 3600]
End Type
'***********************************************************
' AD硬件参数PCI8613_PARA_AD中的ADMode所使用工作模式选项
Public Const PCI8613_ADMODE_SEQUENCE = &H0 ' 连续采样
Public Const PCI8613_ADMODE_GROUP = &H1 ' 分组采样
'***********************************************************
' AD硬件参数PCI8613_PARA_AD中的InputRange模拟量输入范围所使用的选项
Public Const PCI8613_INPUT_N10000_P10000mV = &H0 ' ±10000mV
Public Const PCI8613_INPUT_N5000_P5000mV = &H1 ' ±5000mV
Public Const PCI8613_INPUT_0_P10000mV = &H2 ' 0~10000mV
'***********************************************************
' AD参数PCI8613_PARA_AD中的Gains使用的硬件增益选项
Public Const PCI8613_GAINS_1MULT = &H0 ' 1倍增益(使用PGA202或PGA203放大器)
Public Const PCI8613_GAINS_10MULT = &H1 ' 10倍增益(使用PGA202放大器)
Public Const PCI8613_GAINS_100MULT = &H2 ' 100倍增益(使用PGA202放大器)
Public Const PCI8613_GAINS_1000MULT = &H3 ' 1000倍增益(使用PGA202放大器)
Public Const PCI8613_GAINS_2MULT = &H1 ' 2倍增益(使用PGA203放大器)
Public Const PCI8613_GAINS_4MULT = &H2 ' 4倍增益(使用PGA203放大器)
Public Const PCI8613_GAINS_8MULT = &H3 ' 8倍增益(使用PGA203放大器)
'***********************************************************
' AD硬件参数PCI8613_PARA_AD中的TriggerMode成员变量所使用触发模式选项
Public Const PCI8613_TRIGMODE_SOFT = &H0 ' 软件触发(属于内触发)
Public Const PCI8613_TRIGMODE_POST = &H1 ' 硬件后触发(属于外触发)
'***********************************************************
' AD硬件参数PCI8613_PARA_AD中的TriggerSource触发源信号所使用的选项
Public Const PCI8613_TRIGSRC_ATR = &H0 ' 选择外部ATR作为触发源
Public Const PCI8613_TRIGSRC_DTR = &H1 ' 选择外部DTR作为触发源
'***********************************************************
' AD硬件参数PCI8613_PARA_AD中的TriggerType触发类型所使用的选项
Public Const PCI8613_TRIGTYPE_EDGE = &H0 ' 边沿触发
Public Const PCI8613_TRIGTYPE_PULSE = &H1 ' 脉冲触发(电平)
'***********************************************************
' AD硬件参数PCI8613_PARA_AD中的TriggerDir触发方向所使用的选项
Public Const PCI8613_TRIGDIR_NEGATIVE = &H0 ' 负向触发(低脉冲/下降沿触发)
Public Const PCI8613_TRIGDIR_POSITIVE = &H1 ' 正向触发(高脉冲/上升沿触发)
Public Const PCI8613_TRIGDIR_POSIT_NEGAT = &H2 ' 正负向触发(高/低脉冲或上升/下降沿触发)
'***********************************************************
' AD硬件参数PCI8613_PARA_AD中的ClockSource时钟源所使用的选项
Public Const PCI8613_CLOCKSRC_IN = &H0 ' 内部时钟
Public Const PCI8613_CLOCKSRC_OUT = &H1 ' 外部时钟(CLKIN)
'***********************************************************
' AD参数(PCI8613_PARA_AD)中的GroundingMode使用的模拟信号接地方式选项
Public Const PCI8613_GNDMODE_SE = &H0 ' 单端方式(SE:Single end)
Public Const PCI8613_GNDMODE_DI = &H1 ' 双端方式(DI:Differential)
'*************************************************************************************
' 用于AD采样的实际硬件参数
Type PCI8613_STATUS_AD
bNotEmpty As Long ' 板载FIFO存储器的非空标志,=TRUE非空, = FALSE 空
bHalf As Long ' 板载FIFO存储器的半满标志,=TRUE半满以上, = FALSE 半满以下
bDynamic_Overflow As Long ' 板载FIFO存储器的动态溢出标志,= TRUE已发生溢出, = FALSE 未发生溢出
bStatic_Overflow As Long ' 板载FIFO存储器的静态溢出标志,= TRUE已发生溢出, = FALSE 未发生溢出
bTriggerFlag As Long ' 触发标志, =TRUE表示触发事件发生, =FALSE表示触发事件未发生
End Type
Public Const PCI8613_MAX_SEGMENT_COUNT = 64
Type PCI8613_STATUS_DMA
iCurSegmentID As Long ' 当前段缓冲ID,表示DMA正在传输的缓冲区段
bSegmentSts(0 To PCI8613_MAX_SEGMENT_COUNT - 1) As Long ' 各个缓冲区的新旧状态,=1表示该相应缓冲区数据为新,否则为旧
bBufferOverflow As Long ' 返回溢出状态
End Type
'***********************************************************
' DA输出函数InitDeviceDA的模拟量输出范围参数OutputRange所使用的选项
Public Const PCI8613_OUTPUT_0_P5000mV = &H0 ' 0~5000mV
Public Const PCI8613_OUTPUT_0_P10000mV = &H1 ' 0~10000mV
Public Const PCI8613_OUTPUT_N5000_P5000mV = &H2 ' ±5000mV
Public Const PCI8613_OUTPUT_N10000_P10000mV = &H3 ' ±10000mV
' DA输出函数PCI8613_DAReset的复位ResetMode所使用的选项
Public Const PCI8613_RESET_LEAST = &H0 ' 复位至最小值
Public Const PCI8613_RESET_MIDDLE = &H1 ' 复位至中间值
'***********************************************************
' 用于计数器的参数结构
Type PCI8613_PARA_CNT
ControlMode As Long ' 计数器工作模式[0—5]
AddDecMode As Long ' 计数器加减模式:加计数或减计数[0:减计数,1:加计数]
CNTVal As Long ' 计数器值
End Type
'***********************************************************
' 硬件参数PCI8613_PARA_CNT中的FunctionMode功能模式选项
Public Const PCI8613_FUNCMODE_COUNTER = &H0 ' 计数器模式
Public Const PCI8613_FUNCMODE_TIMER = &H1 ' 脉冲发生器模式
'***********************************************************
' 硬件参数PCI8613_PARA_CNT中的ClockSource功能模式选项
Public Const PCI8613_CLOCKSRC_LOCAL_CLK = &H0 ' 板卡局部分频时钟(对40M晶振分频而得,由SetLocalCLKFreq设定)
Public Const PCI8613_CLOCKSRC_CLOCK_IN = &H1 ' 外部时钟信号源输入
'***********************************************************
' 硬件参数PCI8613_PARA_CNT中的ClockDir时钟方向选项
Public Const PCI8613_CLOCKDIR_POSTIVE = &H0 ' 上升沿计数
Public Const PCI8613_CLOCKDIR_NEGATIVE = &H1 ' 下降沿计数
'***********************************************************
' CNT控制函数PCI8613_InitDeviceCNT硬件参数ControlMode控制字模式选项
Public Const PCI8613_GATEMODE_POSITIVE_0 = &H0 ' COUNTER:GATE高电平时计数,低电平时停止计数,计数时重新写入新的初值,按新值计数
' 减法计数时,计数到0时OUT为1加法计数时,计数到4294967295时OUT变为1
' 计数结束产生中断
Public Const PCI8613_GATEMODE_RISING_1 = &H1 ' COUNTER:GATE上边沿触发计数,计数中出现GATE上升沿重新装入初值计数
' 可编程单拍脉冲:当写入初值时OUT为1,当开始计数时OUT为0
' 减法计数时,计数到0时OUT为1加法计数时,计数到4294967295时OUT变为1
Public Const PCI8613_GATEMODE_POSITIVE_2 = &H2 ' COUNTER:GATE高电平时计数,低电平时停止计数,若计数中改变初值,下次有效
' 频率发生器:计数期间OUT为1
' 减法计数时,计数到0后输出一个周期的0,并重新装入计数值计数
' 加法计数时,计数到4294967295时输出一个周期的0,并重新装入计数值计数
Public Const PCI8613_GATEMODE_POSITIVE_3 = &H3 ' COUNTER:GATE高电平时计数,低电平时停止计数,若计数中改变初值,下次有效
' 方波发生器:计数期间OUT为1
' 减法计数时,计数到0后输出一个周期的0,并重新装入计数值计数
' 加法计数时,计数到4294967295时输出一个周期的0,并重新装入计数值计数
Public Const PCI8613_GATEMODE_POSITIVE_4 = &H4 ' COUNTER:GATE高电平时计数,低电平时停止计数,若计数中改变初值,本次有效
' 软件触发选通:写入初值OUT为1
' 减法计数时,计数到0后输出一个周期的低电平信号
' 加法计数时,计数到4294967295时输出一个周期的低电平信号
Public Const PCI8613_GATEMODE_RISING_5 = &H5 ' COUNTER:GATE上边沿触发计数,计数中出现GATE上升沿重新装入初值计数
' 硬件触发选通:写入初值OUT为1
' 减法计数时,计数到0后输出一个周期的低电平信号
' 加法计数时,计数到4294967295时输出一个周期的低电平信号
'***********************************************************
'***********************************************************
' CreateFileObject所用的文件操作方式控制字(可通过或指令实现多种方式并操作)
Public Const PCI8613_modeRead = &H0 ' 只读文件方式
Public Const PCI8613_modeWrite = &H1 ' 只写文件方式
Public Const PCI8613_modeReadWrite = &H2 ' 既读又写文件方式
Public Const PCI8613_modeCreate = &H1000 ' 如果文件不存可以创建该文件,如果存在,则重建此文件,并清0
Public Const PCI8613_typeText = &H4000 ' 以文本方式操作文件
'***********************************************************
' 用于DA的复位方式(适用于PCI8613_InitDevProDA函数的ResetMode参数)
Public Const PCI8613_RESET_MODE_NEGATIVE = &H0 ' 负满度(-5V或-10V...)
Public Const PCI8613_RESET_MODE_ZERO = &H1 ' 零点(0V)
'######################## 设备对象管理函数 ##############################
Declare Function PCI8613_CreateDevice Lib "PCI8613" (ByVal DeviceLgcID As Integer) As Long ' 用逻辑号创建设备对象
Declare Function PCI8613_CreateDeviceEx Lib "PCI8613" (ByVal DevicePhysID As Integer) As Long ' 用物理号创建设备对象
Declare Function PCI8613_GetDeviceCount Lib "PCI8613" (ByVal hDevice As Long) As Integer ' 取得设备总台数
Declare Function PCI8613_GetDeviceCurrentID Lib "PCI8613" (ByVal hDevice As Long, ByRef DeviceLgcID As Long, ByRef DevicePhysID As Long) As Boolean
Declare Function PCI8613_ListDeviceDlg Lib "PCI8613" (ByVal hDevice As Long) As Boolean ' 以对话框窗体方式列表系统当中的所有的该PCI设备
Declare Function PCI8613_ReleaseDevice Lib "PCI8613" (ByVal hDevice As Long) As Boolean ' 仅释放设备对象
'####################### AD数据读取函数 #################################
Declare Function PCI8613_InitDeviceProAD Lib "PCI8613" (ByVal hDevice As Long, ByRef pADPara As PCI8613_PARA_AD) As Boolean
' 初始化设备,当返回TRUE后,设备即准备就绪.
' 设备对象,它由CreateDevice函数创建
' 硬件参数, 它仅在此函数中决定硬件状态
Declare Function PCI8613_StartDeviceProAD Lib "PCI8613" (ByVal hDevice As Long) As Boolean
' 在初始化之后,启动设备
' 设备对象句柄,它由CreateDevice函数创建
Declare Function PCI8613_SetDevFreqencyAD Lib "PCI8613" (ByVal hDevice As Long, ByVal nADFrequency As Long) As Boolean ' 在AD转换过程中,动态改变采样频率
Declare Function PCI8613_ReadDeviceProAD_Npt Lib "PCI8613" (ByVal hDevice As Long, ByRef ADBuffer As Long, ByVal nReadSizeWords As Long, ByRef nRetSizeWords As Long) As Boolean
' 当AD标志有效时,用此函数读取设备上的AD数据(程序非空方式)
' 设备句柄,它由CreateDevice函数创建
' 接受原始AD数据的用户缓冲区
' 相对于偏位点后读入的数据长度(字)
' 返回实际读取的长度(字)
Declare Function PCI8613_GetDevStatusProAD Lib "PCI8613" (ByVal hDevice As Long, ByRef pADStatus As PCI8613_STATUS_AD) As Boolean
' 在AD采样过程中取得设备的各种状态,返回值表示函数是否成功
' 设备句柄,它由CreateDevice函数创建
' AD的各种信息结构体
Declare Function PCI8613_ReadDeviceProAD_Half Lib "PCI8613" (ByVal hDevice As Long, ByRef ADBuffer As Long, ByVal nReadSizeWords As Long, ByRef nRetSizeWords As Long) As Boolean
' 当AD标志有效时,用此函数读取设备上的AD数据(程序半满方式)
' 设备句柄,它由CreateDevice函数创建
' 接受原始AD数据的用户缓冲区
' 相对于偏位点后读入的数据长度(字)
' 返回实际读取的长度(字)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -