|
@@ -0,0 +1,881 @@
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
+using System.Text;
|
|
|
+using System.Runtime.InteropServices;
|
|
|
+
|
|
|
+namespace SCADA_DAQ.Customer.ART
|
|
|
+{
|
|
|
+ public partial class USB5621AE
|
|
|
+ {
|
|
|
+ // ########################## 设备功能指标 ########################
|
|
|
+ public const Int32 USB5621AE_AI_MAX_CHANNELS = 16; // 本卡最多支持16路模拟量单端输入通道
|
|
|
+ public const Int32 USB5621AE_AO_MAX_CHANNELS = 2; // 本卡最多支持2个模拟量输出通道
|
|
|
+ public const Int32 USB5621AE_DIO_MAX_PORTS = 2; // 本卡最多支持2个数字量端口
|
|
|
+ public const Int32 USB5621AE_DIO_PORT0_MAX_LINES = 8; // 数字量端口0支持8条线
|
|
|
+ public const Int32 USB5621AE_DIO_PORT1_MAX_LINES = 8; // 数字量端口1支持8条线
|
|
|
+ public const Int32 USB5621A_DIO_PORT0 = 0; // 数字量端口0(单向输入)
|
|
|
+ public const Int32 USB5621A_DIO_PORT1 = 1; // 数字量端口1(单向输出)
|
|
|
+
|
|
|
+ private static USB5621AE _instance;
|
|
|
+ public static USB5621AE Instance { get => _instance ?? (_instance = new USB5621AE()); }
|
|
|
+ // 设备网络信息
|
|
|
+
|
|
|
+
|
|
|
+ public struct DEVICE_NET_INFO_A
|
|
|
+ {
|
|
|
+
|
|
|
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
|
|
|
+ public string strIP;
|
|
|
+
|
|
|
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
|
|
|
+ public string strSubnetMask;
|
|
|
+
|
|
|
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
|
|
|
+ public string strGateway;
|
|
|
+
|
|
|
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
|
|
|
+ public string strMAC;
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public struct DEVICE_NET_INFO_W
|
|
|
+ {
|
|
|
+ //public const wchar_t strIP[16]; // IP地址, "192.168.2.70"
|
|
|
+ //public const wchar_t strSubnetMask[16]; // 子网掩码, "255.255.255.255"
|
|
|
+ //public const wchar_t strGateway[16]; // 网关, "192.168.2.1"
|
|
|
+ //public const wchar_t strMAC[20]; // 网卡物理地址, "00-01-02-03-04-05",用户一般不可修改
|
|
|
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
|
|
|
+ public string strIP;
|
|
|
+
|
|
|
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
|
|
|
+ public string strSubnetMask;
|
|
|
+
|
|
|
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
|
|
|
+ public string strGateway;
|
|
|
+
|
|
|
+ [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
|
|
|
+ public string strMAC;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // ############# AI工作参数结构体USB5621AE_AI_PARAM描述 #############
|
|
|
+ // AI通道参数结构体
|
|
|
+ public struct USB5621AE_AI_CH_PARAM
|
|
|
+ {
|
|
|
+ public UInt32 nChannel; // 通道号[0, 15],分别表示物理通道号AI0-AI15
|
|
|
+ public UInt32 nSampleGain; // 采样范围(Sample Range)档位选择, 具体见下面常量名定义(此参数在单点采样有效,未此注明的参数则在单点采样模式中无效)
|
|
|
+ public UInt32 nRefGround; // 接地参考方式
|
|
|
+
|
|
|
+ public UInt32 nReserved0; // 保留(未用)
|
|
|
+ public UInt32 nReserved1; // 保留(未用)
|
|
|
+ public UInt32 nReserved2; // 保留(未用)
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // AI硬件通道参数USB5621A_AI_CH_PARAM中的nSampleGain采样增益放大倍数所使用的选项
|
|
|
+ public const Int32 USB5621AE_AI_SAMPGAIN_1MULT = 0; // 1倍增益
|
|
|
+ public const Int32 USB5621AE_AI_SAMPGAIN_2MULT = 1; // 2倍增益
|
|
|
+ public const Int32 USB5621AE_AI_SAMPGAIN_4MULT = 2; // 4倍增益
|
|
|
+ public const Int32 USB5621AE_AI_SAMPGAIN_8MULT = 3; // 8倍增益
|
|
|
+
|
|
|
+
|
|
|
+ // AI硬件参数结构体USB5621AE_AI_CH_PARAM中的nSampleRange参数所使用的采样范围挡位选项
|
|
|
+ //public const Int32 USB5621AE_AI_SAMPRANGE_N10_P10V = 0; // ±10V
|
|
|
+ // public const Int32 USB5621AE_AI_SAMPRANGE_N5_P5V = 1; // ±5V
|
|
|
+ //public const Int32 USB5621AE_AI_SAMPRANGE_N2_P2V = 2; // ±2V
|
|
|
+ //public const Int32 USB5621AE_AI_SAMPRANGE_N1_P1V = 3; // ±1V
|
|
|
+
|
|
|
+ // AI硬件通道参数结构体USB5621AE_AI_CH_PARAM中的nRefGround参数所使用的地参考选项
|
|
|
+ public const Int32 USB5621AE_AI_REFGND_RSE = 0; // 接地参考单端(Referenced Single Endpoint)
|
|
|
+ public const Int32 USB5621AE_AI_REFGND_NRSE = 1; // 非参考单端(Non Referenced Single Endpoint)
|
|
|
+ public const Int32 USB5621AE_AI_REFGND_DIFF = 2; // 差分(Differential)
|
|
|
+
|
|
|
+ // 跟整个AI有关的硬件工作参数(简称AI工作参数)
|
|
|
+ public struct USB5621AE_AI_PARAM
|
|
|
+ {
|
|
|
+ // 通道参数
|
|
|
+ public UInt32 nSampChanCount; // 采样通道总数[1, 16](此参数在单点采样有效,未此注明的参数则在单点采样模式中无效)
|
|
|
+ public USB5621AE_AI_CH_PARAM CHParam0; // 通道参数配置(此参数在单点采样有效,未此注明的参数则在单点采样模式中无效)
|
|
|
+ public USB5621AE_AI_CH_PARAM CHParam1;
|
|
|
+ public USB5621AE_AI_CH_PARAM CHParam2;
|
|
|
+ public USB5621AE_AI_CH_PARAM CHParam3;
|
|
|
+ public USB5621AE_AI_CH_PARAM CHParam4;
|
|
|
+ public USB5621AE_AI_CH_PARAM CHParam5;
|
|
|
+ public USB5621AE_AI_CH_PARAM CHParam6;
|
|
|
+ public USB5621AE_AI_CH_PARAM CHParam7;
|
|
|
+ public USB5621AE_AI_CH_PARAM CHParam8;
|
|
|
+ public USB5621AE_AI_CH_PARAM CHParam9;
|
|
|
+ public USB5621AE_AI_CH_PARAM CHParam10;
|
|
|
+ public USB5621AE_AI_CH_PARAM CHParam11;
|
|
|
+ public USB5621AE_AI_CH_PARAM CHParam12;
|
|
|
+ public USB5621AE_AI_CH_PARAM CHParam13;
|
|
|
+ public USB5621AE_AI_CH_PARAM CHParam14;
|
|
|
+ public USB5621AE_AI_CH_PARAM CHParam15;
|
|
|
+
|
|
|
+ //public UInt32 nSampleSignal; // 采样信号(Sample Signal), 详见下面常量定义
|
|
|
+ //public UInt32 nReserved0; // 采样范围(Sample Range)档位选择, 具体见下面常量名定义(此参数在单点采样有效,未此注明的参数则在单点采样模式中无效)
|
|
|
+ //public UInt32 nReserved1; // 保留字段(暂未定义)
|
|
|
+
|
|
|
+ public UInt32 nChanScanMode; // 通道扫描模式,0=通道连续扫描, 1=通道分组扫描
|
|
|
+ public UInt32 nGroupLoops; // 组内循环次数[1, 65535]
|
|
|
+ public UInt32 nGroupInterval; // 组与组之间的时间间隔, 单位:微秒,取值范围[0, 107374182], 等于0时表示等间隔采样(不分组,此时nGroupLoops应等于1)
|
|
|
+ public UInt32 nSampleSignal; // 采样信号(Sample Signal), 详见下面常量定义
|
|
|
+ public UInt32 nSampleRange; // 采样范围(Sample Range)档位选择, 具体见下面常量名定义(此参数在单点采样有效,未此注明的参数则在单点采样模式中无效)
|
|
|
+
|
|
|
+
|
|
|
+ // 时钟参数
|
|
|
+ public UInt32 nSampleMode; // 采样模式, 0=单点采样(按需), 1、硬件定时单点(暂不支持),2=有限点采样, 3=连续采样
|
|
|
+ public UInt32 nSampsPerChan; // 每个通道采样点数(也是每通道待读取点数),取值范围为单点采样模式时应等于1,有限点或连续采样时为[2, 1024*1024]
|
|
|
+ public Double fSampleRate; // 采样速率(Sample Rate), 单位为sps,取值范围为[1sps, 100000sps],它是每个采样通道的采样速率, 它与nChannelCount的乘积不能大于100000sps
|
|
|
+ public UInt32 nClockSource; // 时钟源选择, =0:内时钟OSCCLK; =1:外时钟CLKIN,由CN2上的Port1.DIO2(CLKIN)复用输入
|
|
|
+ public UInt32 bClockOutput; // 采样时钟输出允许, =0:表示禁止; =1:表示允许,由CN2上的Port1.DIO3(CLKOUT)复用输出
|
|
|
+ public UInt32 nReserved0; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved1; // 保留字段(暂未定义)
|
|
|
+
|
|
|
+ // 开始触发参数
|
|
|
+ public UInt32 bDTriggerEn; // 数字触发DTR允许(Digital Trigger Enable), =FALSE:表示禁止; =TRUE:表示允许,触发信号由连接器CN2上的DIO1复用输入,因此初始化时会将DIO1的方向强制置为输入
|
|
|
+ public UInt32 nDTriggerDir; // 数字触发方向(Digital Trigger Direction)
|
|
|
+ public UInt32 bATriggerEn; // 模拟数字触发ATR允许(Analog Trigger Enable), =TRUE:表示允许, =FALSE:表示禁止
|
|
|
+ public UInt32 nATriggerDir; // 模拟触发方向(Analog Trigger Direction)
|
|
|
+ public Double fTriggerLevel; // 触发电平(Trigger Level), 注意:AI跟AO的共用同一个触发电平,故此处改变触发电平也会引起AO的触发电平变化
|
|
|
+ public UInt32 nTriggerSens; // 触发灵敏度(Trigger Sensitive for Digital and Analog trigger),单位:微秒(uS),取值范围[0, 1638], 注意:AI跟AO的共用同一个触发灵敏度,故此处改变触发灵敏度也会引起AO的触发灵敏度变化
|
|
|
+ public UInt32 nDelaySamps; // 触发延迟点数, 单位:采样点,取值范围32位有效[0, 4294967295],0:Post Trigger, >0:Delay Trigger
|
|
|
+ public UInt32 nReserved2; // 保留字段(暂未定义)
|
|
|
+
|
|
|
+ // 其他方面
|
|
|
+ public UInt32 nReserved3; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved4; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved5; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved6; // 保留字段(暂未定义)
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+// AI硬件参数结构体USB5621AE_AI_PARAM中的nChanScanMode扫描模式所使用的选项
|
|
|
+ public const Int32 USB5621AE_AI_CHAN_SCANMODE_CONTINUOUS = 0; // 连续扫描
|
|
|
+ public const Int32 USB5621AE_AI_CHAN_SCANMODE_GROUP= 1; // 分组扫描
|
|
|
+
|
|
|
+// AI硬件参数结构体USB5621AE_AI_PARAM中的nSampleSignal采样信号所使用的选项
|
|
|
+ public const Int32 USB5621AE_AI_SAMPSIGNAL_AI = 0; // AI通道输入信号
|
|
|
+ public const Int32 USB5621AE_AI_SAMPSIGNAL_0V = 1; // 0V(AGND)
|
|
|
+ public const Int32 USB5621AE_AI_SAMPSIGNAL_2D5V = 2; // 2.5V(DC)
|
|
|
+ public const Int32 USB5621AE_AI_SAMPSIGNAL_5V = 3 ;// 5V(DC)
|
|
|
+
|
|
|
+// AI硬件参数结构体USB5621AE_AI_PARAM中的nSampleRange参数所使用的采样范围挡位选项
|
|
|
+ public const Int32 USB5621AE_AI_SAMPRANGE_N10_P10V = 0 ;// ±10V
|
|
|
+ public const Int32 USB5621AE_AI_SAMPRANGE_N5_P5V = 1; // ±5V
|
|
|
+ public const Int32 USB5621AE_AI_SAMPRANGE_N2D5_P2D5V =2; // ±2.5V
|
|
|
+ public const Int32 USB5621AE_AI_SAMPRANGE_0_P10V = 3; // 0-10V
|
|
|
+ public const Int32 USB5621AE_AI_SAMPRANGE_0_P5V = 4; // 0-5V
|
|
|
+
|
|
|
+// AI硬件参数结构体USB5621AE_AI_PARAM中的nSampleMode采样模式所使用的选项
|
|
|
+ public const Int32 USB5621AE_AI_SAMPMODE_ONE_DEMAND= 0 ;// 软件按需单点采样
|
|
|
+ public const Int32 USB5621AE_AI_SAMPMODE_FINITE = 2; // 有限点采样
|
|
|
+ public const Int32 USB5621AE_AI_SAMPMODE_CONTINUOUS= 3 ;// 连续采样
|
|
|
+
|
|
|
+// AI硬件参数结构体USB5621AE_AI_PARAM中的nClockSource时钟源所使用的选项
|
|
|
+ public const Int32 USB5621AE_AI_CLKSRC_LOCAL = 0; // 本地时钟(通常为本地晶振时钟OSCCLK),也叫内部时钟
|
|
|
+ public const Int32 USB5621AE_AI_CLKSRC_CLKIN = 1; // 外部时钟(由连接器CN2上的DIO2/CLKIN复用输入)
|
|
|
+
|
|
|
+// AI硬件参数结构体USB5621AE_AI_PARAM中的nDTriggerDir/nATriggerDir触发方向所使用的选项
|
|
|
+ public const Int32 USB5621AE_AI_TRIGDIR_FALLING = 0; // 下降沿/低电平
|
|
|
+ public const Int32 USB5621AE_AI_TRIGDIR_RISING = 1; // 上升沿/高电平
|
|
|
+ public const Int32 USB5621AE_AI_TRIGDIR_CHANGE = 2; // 变化(即上下边沿/高低电平均有效)
|
|
|
+
|
|
|
+
|
|
|
+ // #################### AI工作状态结构体USB5621AE_AI_STATUS描述 #####################
|
|
|
+ public struct USB5621AE_AI_STATUS
|
|
|
+ {
|
|
|
+ public UInt32 bTaskDone; // 采集任务完成标志, =TRUE:表示采集任务完成, =FALSE:表示采集任务未完成,正在进行中
|
|
|
+ public UInt32 bTriggered; // 触发标志, =TRUE:表示已被触发, =FALSE:表示未被触发(即正等待触发)
|
|
|
+
|
|
|
+ public UInt32 nTaskState; // 采集任务状态, =1:正常, 其它值表示有异常情况
|
|
|
+ public UInt32 nAvailSampsPerChan; // 每通道有效点数,只有它大于当前指定读数长度时才能调用AI_ReadAnalog()立即读取指定长度的采样数据
|
|
|
+ public UInt32 nMaxAvailSampsPerChan; // 自AI_StartTask()后每通道出现过的最大有效点数,状态值范围[0, nBufSampsPerChan],它是为监测采集软件性能而提供,如果此值越趋近于1,则表示意味着性能越高,越不易出现溢出丢点的可能
|
|
|
+ public UInt32 nBufSampsPerChan; // 每通道缓冲区大小(采样点数)
|
|
|
+ public long nSampsPerChanAcquired; // 每通道已采样点数(自开始采集任务(AI_StartTask())之后所采样的点数),这个只是给用户的统计数据
|
|
|
+
|
|
|
+ public UInt32 nHardOverflowCnt; // 硬件溢出计数(在不溢出情况下恒等于0)
|
|
|
+ public UInt32 nSoftOverflowCnt; // 软件溢出计数(在不溢出情况下恒等于0)
|
|
|
+ public UInt32 nInitTaskCnt; // 初始化采集任务的次数(即调用AI_InitTask()的次数)
|
|
|
+ public UInt32 nReleaseTaskCnt; // 释放采集任务的次数(即调用AI_ReleaseTask()的次数)
|
|
|
+ public UInt32 nStartTaskCnt; // 开始采集任务的次数(即调用AI_StartTask()的次数)
|
|
|
+ public UInt32 nStopTaskCnt; // 停止采集任务的次数(即调用AI_StopTask()的次数)
|
|
|
+ public UInt32 nTransRate; // 传输速率, 即每秒传输点数(sps),作为USB及应用软件传输性能的监测信息
|
|
|
+
|
|
|
+ public UInt32 nReserved0; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved1; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved2; // 保留字段(暂未定义)
|
|
|
+ }
|
|
|
+
|
|
|
+ // #################### AI主要信息结构体(USB5621AE_AI_MAIN_INFO) #######################
|
|
|
+ public struct USB5621AE_AI_MAIN_INFO
|
|
|
+ {
|
|
|
+ public UInt32 nChannelCount; // AI通道数量
|
|
|
+ public UInt32 nSampRangeCount; // AI采样范围挡位数量
|
|
|
+ public UInt32 nSampGainCount; // AI采样增益挡位数量
|
|
|
+ public UInt32 nCouplingCount; // AI耦合挡位数量
|
|
|
+ public UInt32 nImpedanceCount; // AI阻抗的挡位数量
|
|
|
+ public UInt32 nDepthOfMemory; // AI板载存储器深度(点数)
|
|
|
+ public UInt32 nSampResolution; // AI采样分辨率(如=8表示8Bit; =12表示12Bit; =14表示14Bit; =16表示16Bit)
|
|
|
+ public UInt32 nSampCodeCount; // AI采样编码数量(如256, 4096, 16384, 65536)
|
|
|
+ public UInt32 nTrigLvlResolution; // 触发电平分辨率(如=8表示8Bit; =12表示12Bit; =16表示16Bit)
|
|
|
+ public UInt32 nTrigLvlCodeCount; // 触发电平编码数量(如256, 4096)
|
|
|
+
|
|
|
+ public UInt32 nReserved0; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved1; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved2; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved3; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved4; // 保留字段(暂未定义)
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // #################### AI电压范围信息结构体(USB5621AE_AI_VOLT_RANGE_INFO) #######################
|
|
|
+ public struct USB5621AE_AI_VOLT_RANGE_INFO
|
|
|
+ {
|
|
|
+ public UInt32 nSampleRange; // 当前采样范围挡位号
|
|
|
+ public UInt32 nReserved0; // 保留字段(暂未定义)
|
|
|
+ public double fMaxVolt; // 采样范围的最大电压值,单位:伏(V)
|
|
|
+ public double fMinVolt; // 采样范围的最小电压值,单位:伏(V)
|
|
|
+ public double fAmplitude; // 采样范围幅度,单位:伏(V)
|
|
|
+ public double fHalfOfAmp; // 采样范围幅度的二分之一,单位:伏(V)
|
|
|
+ public double fCodeWidth; // 编码宽度,单位:伏(V), 即每个单位码值所分配的电压值
|
|
|
+ public double fOffsetVolt; // 偏移电压,单位:伏(V),一般用于零偏校准
|
|
|
+ public double fOffsetCode; // 偏移码值,一般用于零偏校准,它代表的电压值等价于fOffsetVolt
|
|
|
+ public SByte strDesc0; // 采样范围字符描述,如"±10V", "0-10V"等
|
|
|
+ public SByte strDesc1;
|
|
|
+ public SByte strDesc2;
|
|
|
+ public SByte strDesc3;
|
|
|
+ public SByte strDesc4;
|
|
|
+ public SByte strDesc5;
|
|
|
+ public SByte strDesc6;
|
|
|
+ public SByte strDesc7;
|
|
|
+ public SByte strDesc8;
|
|
|
+ public SByte strDesc9;
|
|
|
+ public SByte strDesc10;
|
|
|
+ public SByte strDesc11;
|
|
|
+ public SByte strDesc12;
|
|
|
+ public SByte strDesc13;
|
|
|
+ public SByte strDesc14;
|
|
|
+ public SByte strDesc15;
|
|
|
+
|
|
|
+ public UInt32 nPolarity; // 采样范围的极性(0=双极性BiPolar, 1=单极性UniPolar)
|
|
|
+ public UInt32 nCodeCount; // 原码数量
|
|
|
+ public Int32 nMaxCode; // 原码最大值
|
|
|
+ public Int32 nMinCode; // 原码最小值
|
|
|
+
|
|
|
+ public UInt32 nReserved1; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved2; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved3; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved4; // 保留字段(暂未定义)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 结构体AI_VOLT_RANGE_INFO的数据成员Polarity所用的采样范围极性选项
|
|
|
+ public const Int32 USB5621AE_AI_POLAR_BIPOLAR = 0; // 双极性
|
|
|
+ public const Int32 USB5621AE_AI_POLAR_UNIPOLAR = 1; // 单极性
|
|
|
+
|
|
|
+ // #################### AI增益信息结构体(USB5621AE_AI_VOLT_GAIN_INFO) #######################
|
|
|
+ public struct USB5621AE_AI_VOLT_GAIN_INFO
|
|
|
+ {
|
|
|
+ public UInt32 nSampleGain; // 当前采样增益挡位号
|
|
|
+ public UInt32 nReserved0; // 保留字段(暂未定义)
|
|
|
+ public double fAmpFactor; // 放大倍数(Amplification Factor)
|
|
|
+ public SByte strDesc0; // 采样增益字符描述,如"10倍", "100倍"等
|
|
|
+ public SByte strDesc1;
|
|
|
+ public SByte strDesc2;
|
|
|
+ public SByte strDesc3;
|
|
|
+ public SByte strDesc4;
|
|
|
+ public SByte strDesc5;
|
|
|
+ public SByte strDesc6;
|
|
|
+ public SByte strDesc7;
|
|
|
+ public SByte strDesc8;
|
|
|
+ public SByte strDesc9;
|
|
|
+ public SByte strDesc10;
|
|
|
+ public SByte strDesc11;
|
|
|
+ public SByte strDesc12;
|
|
|
+ public SByte strDesc13;
|
|
|
+ public SByte strDesc14;
|
|
|
+ public SByte strDesc15;
|
|
|
+
|
|
|
+ public UInt32 nReserved1; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved2; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved3; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved4; // 保留字段(暂未定义)
|
|
|
+ }
|
|
|
+
|
|
|
+ // #################### AI速率信息结构体(USB5621AE_AI_SAMP_RATE_INFO) #######################
|
|
|
+ public struct USB5621AE_AI_SAMP_RATE_INFO
|
|
|
+ {
|
|
|
+ public double fMaxRate; // 单通道最大采样速率(sps),多通道时各通道平分最大采样率
|
|
|
+ public double fMinRate; // 单通道最小采样速率(sps),多通道时各通道平分最小采样率
|
|
|
+ public double fTimerBase; // 时钟基准(即板载晶振频率)单位:Hz
|
|
|
+ public UInt32 nDivideMode; // 分频模式,0=整数分频(INTDIV), 1=DDS分频(DDSDIV)
|
|
|
+ public UInt32 nRateType; // 速率类型,指fMaxRate和fMinRate的类型, =0:表示为所有采样通道的总速率, =1:表示为每个采样通道的速率
|
|
|
+
|
|
|
+ public UInt32 nReserved0; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved1; // 保留字段(暂未定义)
|
|
|
+ }
|
|
|
+
|
|
|
+ // ##################### AO工作参数结构体USB5621AE_AO_PARAM描述 ###################
|
|
|
+ public struct USB5621AE_AO_CH_PARAM
|
|
|
+ {
|
|
|
+ public UInt32 bChannelEn; // 通道采样允许
|
|
|
+ public UInt32 nSampleRange; // 采样范围,具体定义请参考下面常量定义
|
|
|
+ public UInt32 nReserved0; // 保留(未用)
|
|
|
+ public UInt32 nReserved1; // 保留(未用)
|
|
|
+ public UInt32 nReserved2; // 保留(未用)
|
|
|
+ public UInt32 nReserved3; // 保留(未用)
|
|
|
+ }
|
|
|
+
|
|
|
+ // AO硬件参数结构体USB5621AE_AO_CH_PARAM中的nSampleRange参数所使用的模拟量输入采样范围挡位选项
|
|
|
+ public const Int32 USB5621AE_AO_SAMPRANGE_0_P5V = 0; // 0-5V
|
|
|
+ public const Int32 USB5621AE_AO_SAMPRANGE_0_P10V = 1; // 0-10V
|
|
|
+ public const Int32 USB5621AE_AO_SAMPRANGE_0_P10D8V = 2; // 0-10.8V
|
|
|
+ public const Int32 USB5621AE_AO_SAMPRANGE_N5_P5V = 3; // ±5V
|
|
|
+ public const Int32 USB5621AE_AO_SAMPRANGE_N10_P10V = 4; // ±10V
|
|
|
+ public const Int32 USB5621AE_AO_SAMPRANGE_N10D8_P10D8V = 5; // ±10.8V
|
|
|
+
|
|
|
+
|
|
|
+ // 跟整个AO有关的硬件工作参数(简称AO工作参数)
|
|
|
+ public struct USB5621AE_AO_PARAM
|
|
|
+ {
|
|
|
+ public USB5621AE_AO_CH_PARAM CHParam0; // 通道参数(通道使能,采样范围)
|
|
|
+ public USB5621AE_AO_CH_PARAM CHParam1;
|
|
|
+
|
|
|
+
|
|
|
+ // 时钟参数
|
|
|
+ public UInt32 nSampleMode; // 采样模式, 0=软件定时单点采样(按需), 1、硬件定时单点采样(暂不支持),2=有限点采样, 3=连续采样
|
|
|
+ public UInt32 nSampsPerChan; // 每个通道生成点数(也是每通道待写入点数),取值范围为单点采样模式时应等于1,有限点或连续采样时为[2, 1024*1024]
|
|
|
+ public double fSampleRate; // 采样速率(Sample Rate), 单位为sps,取值范围为[1sps, 50000sps],它是每个采样通道的采样速率
|
|
|
+ public UInt32 nClockSource; // 时钟源选择, =0:内时钟OSCCLK; =1:外时钟CLKIN,由CN2上的Port1.DIO2(CLKIN)复用输入
|
|
|
+ public UInt32 bClockOutput; // 采样时钟输出允许, =0:表示禁止; =1:表示允许,由CN2上的Port1.DIO3(CLKOUT)复用输出
|
|
|
+ public UInt32 bRegenModeEn; // 波形重生成模式允许(在连续采样模式中有效), =TRUE:只是对开始生成任前写入任务中的波形段数据进行循环重复生成,=FALSE:禁止重生成模式,在开始生成任务后,还要不断的往任务中写入新的波形数据
|
|
|
+ public UInt32 nReserved0; // 保留字段(暂未定义)
|
|
|
+
|
|
|
+ // 开始触发参数
|
|
|
+ public UInt32 bDTriggerEn; // 数字触发DTR允许(Digital Trigger Enable), =FALSE:表示禁止; =TRUE:表示允许,触发信号由CN2上的Port1.DIO1(DTR)复用输入,因此初始化时会将DIO1的方向强制置为输入
|
|
|
+ public UInt32 nDTriggerDir; // 数字触发方向(Digital Trigger Direction)
|
|
|
+ public UInt32 bATriggerEn; // 模拟数字触发ATR允许(Analog Trigger Enable), =TRUE:表示允许, =FALSE:表示禁止
|
|
|
+ public UInt32 nATriggerDir; // 模拟触发方向(Analog Trigger Direction)
|
|
|
+ public double fTriggerLevel; // 触发电平(Trigger Level), 注意:AO跟AI的共用同一个触发电平,故此处改变触发电平也会引起AI的触发电平变化
|
|
|
+
|
|
|
+ public UInt32 nTriggerSens; // 触发灵敏度(Trigger Sensitive for Digital trigger),单位:微秒(uS),取值范围[0, 1638]
|
|
|
+ public UInt32 nDelaySamps; // 触发延迟点数, 单位:采样点,取值范围32位有效[0, 4294967295],0:Post Trigger, >0:Delay Trigger
|
|
|
+ public UInt32 nReserved1; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved2; // 保留字段(暂未定义)
|
|
|
+
|
|
|
+ // 其他参数
|
|
|
+ public UInt32 nReserved3; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved4; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved5; // 保留字段(暂未定义)
|
|
|
+ }
|
|
|
+
|
|
|
+ // AO硬件参数结构体USB5621AE_AO_PARAM中的nSampleMode采样模式所使用的选项
|
|
|
+ public const Int32 USB5621AE_AO_SAMPMODE_ONE_DEMAND = 0; // 单点采样(按需)
|
|
|
+ public const Int32 USB5621AE_AO_SAMPMODE_ONE_HWTIMED = 1; // 单点采样(硬件定时,Hardware Timed, 本设备暂时不支持)
|
|
|
+ public const Int32 USB5621AE_AO_SAMPMODE_FINITE = 2; // 有限点采样
|
|
|
+ public const Int32 USB5621AE_AO_SAMPMODE_CONTINUOUS = 3; // 连续采样
|
|
|
+
|
|
|
+ // AO硬件参数结构体USB5621AE_AO_PARAM中的nClockSource时钟源所使用的选项
|
|
|
+ public const Int32 USB5621AE_AO_CLKSRC_LOCAL = 0; // 本地时钟(通常为本地晶振时钟OSCCLK),也叫内部时钟
|
|
|
+ public const Int32 USB5621AE_AO_CLKSRC_CLKIN = 1; // 外部时钟(由连接器CN2上的DIO2/CLKIN复用输入)
|
|
|
+
|
|
|
+ // AO硬件参数结构体USB5621AE_AO_PARAM中的nDTriggerDir触发方向所使用的选项
|
|
|
+ public const Int32 USB5621AE_AO_TRIGDIR_FALLING = 0; // 下降沿/低电平
|
|
|
+ public const Int32 USB5621AE_AO_TRIGDIR_RISING = 1; // 上升沿/高电平
|
|
|
+ public const Int32 USB5621AE_AO_TRIGDIR_CHANGE = 2;
|
|
|
+
|
|
|
+ // #################### AO工作状态结构体USB5621AE_AO_STATUS描述 #####################
|
|
|
+ public struct USB5621AE_AO_STATUS
|
|
|
+ {
|
|
|
+ public UInt32 bTaskDone; // 生成任务完成标志, =TRUE:表示生成任务完成, =FALSE:表示生成任务未完成,正在进行中
|
|
|
+ public UInt32 bTriggered; // 触发标志, =TRUE:表示已被触发, =FALSE:表示未被触发(即正等待触发)
|
|
|
+
|
|
|
+ public UInt32 nTaskState; // 生成任务状态, =1:正常, 其它值表示有异常情况
|
|
|
+ public UInt32 nAvailSampsPerChan; // 可写点数,最好等它大于参数nWriteSampsPerChan时才能调用AO_WriteAnalog()写入采样数据
|
|
|
+ public UInt32 nMaxAvailSampsPerChan; // 自AO_StartTask()后出现过的最大可写点数,状态值范围[0, nBufSampsPerChan],它是为监测采集软件性能而提供,如果此值越趋近于1,则表示意味着性能越高,越不易出现溢出丢点的可能
|
|
|
+ public UInt32 nBufSampsPerChan; // 每通道缓冲区大小(采样点数)
|
|
|
+ public UInt64 nSampsPerChanAcquired; // 每通道已采样点数(自开始生成任务(AO_StartTask())之后所采样的点数),这个只是给用户的统计数据
|
|
|
+
|
|
|
+ public UInt32 nHardUnderflowCnt; // 硬件缓冲下溢次数(在不下溢情况下恒等于0)
|
|
|
+ public UInt32 nSoftUnderflowCnt; // 软件缓冲下溢次数(在不下溢情况下恒等于0)
|
|
|
+ public UInt32 nInitTaskCnt; // 初始化生成任务的次数(即调用AO_InitTask()的次数)
|
|
|
+ public UInt32 nReleaseTaskCnt; // 释放生成任务的次数(即调用AO_ReleaseTask()的次数)
|
|
|
+ public UInt32 nStartTaskCnt; // 开始生成任务的次数(即调用AO_StartTask()的次数)
|
|
|
+ public UInt32 nStopTaskCnt; // 停止生成任务的次数(即调用AO_StopTask()的次数)
|
|
|
+ public UInt32 nTransRate; // 传输速率, 即每秒传输点数(sps),作为USB及应用软件传输性能的监测信息
|
|
|
+
|
|
|
+ public UInt32 nReserved0; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved1; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved2; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved3; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved4; // 保留字段(暂未定义)
|
|
|
+ }
|
|
|
+
|
|
|
+ // #################### AO主要信息结构体(USB5621AE_AO_MAIN_INFO) #######################
|
|
|
+ public struct USB5621AE_AO_MAIN_INFO
|
|
|
+ {
|
|
|
+ public UInt32 nChannelCount; // AO通道数量
|
|
|
+ public UInt32 nSampRangeCount; // AO采样范围挡位数量
|
|
|
+ public UInt32 nSampGainCount; // AO增益挡位数量
|
|
|
+ public UInt32 nCouplingCount; // AO耦合挡位数量
|
|
|
+ public UInt32 nImpedanceCount; // AO阻抗的挡位数量
|
|
|
+ public UInt32 nDepthOfMemory; // AO板载存储器深度(点数)
|
|
|
+ public UInt32 nSampResolution; // AO采样分辨率(如=8表示8Bit; =12表示12Bit; =14表示14Bit; =16表示16Bit)
|
|
|
+ public UInt32 nSampCodeCount; // AO采样编码数量(如256, 4096, 16384, 65536)
|
|
|
+ public UInt32 nTrigLvlResolution; // 触发电平分辨率(如=8表示8Bit; =12表示12Bit; =16表示16Bit)
|
|
|
+ public UInt32 nTrigLvlCodeCount; // 触发电平编码数量(如256, 4096)
|
|
|
+
|
|
|
+ public UInt32 nReserved0; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved1; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved2; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved3; // 保留字段(暂未定义)
|
|
|
+ }
|
|
|
+
|
|
|
+ // #################### AO采样范围信息结构体(USB5621AE_AO_VOLT_RANGE_INFO) #######################
|
|
|
+ public struct USB5621AE_AO_VOLT_RANGE_INFO
|
|
|
+ {
|
|
|
+ public UInt32 nSampleRange; // 当前采样范围挡位号
|
|
|
+ public UInt32 nReserved0; // 保留字段(暂未定义)
|
|
|
+ public double fMaxVolt; // 采样范围的最大电压值,单位:伏(V)
|
|
|
+ public double fMinVolt; // 采样范围的最小电压值,单位:伏(V)
|
|
|
+ public double fAmplitude; // 采样范围幅度,单位:伏(V)
|
|
|
+ public double fHalfOfAmp; // 采样范围幅度的二分之一,单位:伏(V)
|
|
|
+ public double fCodeWidth; // 编码宽度,单位:伏(V), 即每个单位码值所分配的电压值
|
|
|
+ public double fOffsetVolt; // 偏移电压,单位:伏(V),一般用于零偏校准
|
|
|
+ public double fOffsetCode; // 偏移码值,一般用于零偏校准,它代表的电压值等价于fOffsetVolt
|
|
|
+ public SByte strDesc0; // 采样范围字符描述,如"±10V", "0-10V"等
|
|
|
+ public SByte strDesc1;
|
|
|
+ public SByte strDesc2;
|
|
|
+ public SByte strDesc3;
|
|
|
+ public SByte strDesc4;
|
|
|
+ public SByte strDesc5;
|
|
|
+ public SByte strDesc6;
|
|
|
+ public SByte strDesc7;
|
|
|
+ public SByte strDesc8;
|
|
|
+ public SByte strDesc9;
|
|
|
+ public SByte strDesc10;
|
|
|
+ public SByte strDesc11;
|
|
|
+ public SByte strDesc12;
|
|
|
+ public SByte strDesc13;
|
|
|
+ public SByte strDesc14;
|
|
|
+ public SByte strDesc15;
|
|
|
+
|
|
|
+ public UInt32 nPolarity; // 采样范围的极性(0=双极性BiPolar, 1=单极性UniPolar)
|
|
|
+ public UInt32 nCodeCount; // 原码数量
|
|
|
+ public Int32 nMaxCode; // 原码最大值
|
|
|
+ public Int32 nMinCode; // 原码最小值
|
|
|
+
|
|
|
+ public UInt32 nReserved1; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved2; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved3; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved4; // 保留字段(暂未定义)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 结构体AO_VOLT_RANGE_INFO的数据成员Polarity所用的采样范围极性选项
|
|
|
+ public const Int32 USB5621AE_AO_POLAR_BIPOLAR = 0; // 双极性
|
|
|
+ public const Int32 USB5621AE_AO_POLAR_UNIPOLAR = 1; // 单极性
|
|
|
+
|
|
|
+ // #################### AO速率信息结构体(USB5621AE_AO_SAMP_RATE_INFO) #######################
|
|
|
+ public struct USB5621AE_AO_SAMP_RATE_INFO
|
|
|
+ {
|
|
|
+ public double fMaxRate; // 单通道最大采样速率(sps),多通道时各通道平分最大采样率
|
|
|
+ public double fMinRate; // 单通道最小采样速率(sps),多通道时各通道平分最小采样率
|
|
|
+ public double fTimerBase; // 时钟基准(即板载晶振频率)单位:Hz
|
|
|
+ public UInt32 nDivideMode; // 分频模式,0=整数分频(INTDIV), 1=DDS分频(DDSDIV)
|
|
|
+
|
|
|
+ public UInt32 nRateType; // 速率类型,指fMaxRate和fMinRate的类型, =0:表示为所有采样通道的总速率, =1:表示为每个采样通道的速率
|
|
|
+ public UInt32 nReserved1; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved2; // 保留字段(暂未定义)
|
|
|
+ }
|
|
|
+
|
|
|
+ // ###################### CTR工作参数结构体(USB5621AE_CTR_PARAM) #######################
|
|
|
+ public struct USB5621AE_CTR_PARAM
|
|
|
+ {
|
|
|
+ public UInt32 nGateMode; // 门控模式(Gate Mode), 其取值范围为[0, 5]
|
|
|
+ public UInt32 nInitValue; // 计数器初始值
|
|
|
+
|
|
|
+ public UInt32 nReserved0; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved1; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved2; // 保留字段(暂未定义)
|
|
|
+ public UInt32 nReserved3; // 保留字段(暂未定义)
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // CTR硬件参数结构体USB5621AE_CTR_PARAM中的nPulseDir脉冲方向所使用的选项
|
|
|
+ //public const Int32 USB5621AE_CTR_PULSEDIR_FALLING = 0; // 下边沿
|
|
|
+ //public const Int32 USB5621AE_CTR_PULSEDIR_RISING = 1; // 上边沿
|
|
|
+ //public const Int32 USB5621AE_CTR_PULSEDIR_CHANGE = 2; // 变化(上下边沿均有效)
|
|
|
+
|
|
|
+ // CTR硬件参数结构体USB5621AE_CTR_PARAM中的nGateMode门控方式所使用的选项
|
|
|
+
|
|
|
+ public const UInt32 USB5621AE_CTR_GATEMODE_POSITIVE_0 =0; // 计数结束产生中断: GATE高电平时计数,低电平时停止计数,计数时重新写入新的初值,按新值计数
|
|
|
+ // 减法计数时,计数到0时OUT为1;
|
|
|
+
|
|
|
+ public const UInt32 USB5621AE_CTR_GATEMODE_RISING_1 = 1; // 可编程单拍脉冲:GATE上边沿触发计数,计数中出现GATE上升沿重新装入初值计数, 当写入初值时OUT为1,当开始计数时OUT为0, 减法计数时,计数到0时OUT为1
|
|
|
+
|
|
|
+ public const UInt32 USB5621AE_CTR_GATEMODE_POSITIVE_2 = 2; // 频率发生器:GATE高电平时计数,低电平时停止计数,若计数中改变初值,下次有效,计数期间OUT为1, 减法计数时,计数到0后输出一个周期的0,并重新装入计数值计数;
|
|
|
+
|
|
|
+ public const UInt32 USB5621AE_CTR_GATEMODE_POSITIVE_3 = 3; // 方波发生器:GATE高电平时计数,低电平时停止计数,若计数中改变初值,下次有效, 计数期间OUT为1, 减法计数时,计数到0后输出一个周期的0,并重新装入计数值计数
|
|
|
+
|
|
|
+ public const UInt32 USB5621AE_CTR_GATEMODE_POSITIVE_4 = 4; // 软件触发选通:GATE高电平时计数,低电平时停止计数,若计数中改变初值,本次有效,写
|
|
|
+ // 入初值OUT为1, 减法计数时,计数到0后输出一个周期的低电平信号;
|
|
|
+
|
|
|
+ public const UInt32 USB5621AE_CTR_GATEMODE_RISING_5 = 5; // 硬件触发选通:GATE上边沿触发计数,计数中出现GATE上升沿重新装入初值计数, 写入初
|
|
|
+ // 值OUT为1, 减法计数时,计数到0后输出一个周期的低电平信号;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // #################### DIO主要信息结构体(USB5621AE_DIO_PARAM) #######################
|
|
|
+ //public struct USB5621AE_DIO_PARAM
|
|
|
+ //{
|
|
|
+ // public Byte bOutputEn0; // 输出方向允许(Output Enable),bOutputEn[n]=0:输出禁止(即为输入),=1:输出允许(即输入无效)。(默认方向为输入)
|
|
|
+ // public Byte bOutputEn1; // 但与其复用的CTRSRC,DTR,CLKIN,CLKOUT有效时,则与其相应的DIO方向控制自动失效
|
|
|
+ // public Byte bOutputEn2;
|
|
|
+ // public Byte bOutputEn3;
|
|
|
+ // public Byte bOutputEn4;
|
|
|
+ // public Byte bOutputEn5;
|
|
|
+ // public Byte bOutputEn6;
|
|
|
+ // public Byte bOutputEn7;
|
|
|
+
|
|
|
+ // public UInt32 nReserved0; // 保留字段(暂未定义)
|
|
|
+ // public UInt32 nReserved1; // 保留字段(暂未定义)
|
|
|
+ // public UInt32 nReserved2; // 保留字段(暂未定义)
|
|
|
+ // }
|
|
|
+
|
|
|
+ // ################################ 函数错误信息 ################################
|
|
|
+ public const UInt32 ERROR_NO_AVAILABLE_SAMPS = (0xE0000000 + 1); // 无可读段
|
|
|
+ public const UInt32 ERROR_TASK_FAIL = (0xE0000000 + 2); // 采样任务失败
|
|
|
+ public const UInt32 ERROR_RATE_OVER_RANGE = (0xE0000000 + 3); // 采样速率超限
|
|
|
+
|
|
|
+ // ################################ 设备驱动接口申明 ################################
|
|
|
+
|
|
|
+ // ################################ DEV设备对象管理函数 ################################
|
|
|
+ //[DllImport("USB5621AE_64.DLL")]
|
|
|
+ //public static extern IntPtr USB5621AE_DEV_Create( // 创建设备对象句柄(hDevice), 成功返回实际句柄,失败则返回INVALID_HANDLE_VALUE(-1),可调用GetLastError()分析错误原因
|
|
|
+ // UInt32 nDeviceIdx, // 设备序号(逻辑序号或物理序号, 具体使用哪种序号由参数bUsePhysIdx决定)
|
|
|
+ [DllImport("USB5621AE_64.DLL")] //Boolean bUsePhysIdx); // 是否使用物理序号, =TRUE:使用物理序号, =FALSE:使用逻辑序号
|
|
|
+ public static extern IntPtr USB5621AE_DEV_CreateA(
|
|
|
+ String strIPAddr, // IP地址
|
|
|
+ Int32 nSendTimeout, // 发送超时时间
|
|
|
+ Int32 nRecvTimeout); // 接收超时时间
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern IntPtr USB5621AE_DEV_CreateW(
|
|
|
+ String strIPAddr, // IP地址
|
|
|
+ Int32 nSendTimeout, // 发送超时时间
|
|
|
+ Int32 nRecvTimeout); // 接收超时时间
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_GetNetCfgA( // 获得设备的以太网设置参数
|
|
|
+ IntPtr hDevice, // 设备句柄
|
|
|
+ ref DEVICE_NET_INFO_A pNetInfo);// 参数结构体
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_GetNetCfgW( // 获得设备的以太网设置参数
|
|
|
+ IntPtr hDevice, // 设备句柄
|
|
|
+ ref DEVICE_NET_INFO_W pNetInfo);// 参数结构体
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_SetNetCfgA( // 设置以太网参数
|
|
|
+ IntPtr hDevice, // 设备句柄
|
|
|
+ ref DEVICE_NET_INFO_A pNetInfo);// 参数结构体
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_SetNetCfgW( // 设置以太网参数
|
|
|
+ IntPtr hDevice, // 设备句柄
|
|
|
+ ref DEVICE_NET_INFO_W pNetInfo);// 参数结构体
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_DEV_Release(IntPtr hDevice); // 释放设备对象(关键函数)
|
|
|
+
|
|
|
+ // ################################ AI模拟量输入实现函数 ################################
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AI_InitTask( // 初始化采集任务(Initialize Task)
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ ref USB5621AE_AI_PARAM pAIParam, // AI工作参数, 它仅在此函数中决定硬件初始状态和各工作模式,可以事先由AI_VerifyParam()进行参数校验
|
|
|
+ IntPtr pSampEvent); // 返回采样事件对象句柄,当设备中出现可读数据段时会触发此事件,参数=NULL,表示不需要此事件句柄
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AI_StartTask(IntPtr hDevice); // 开始采集任务
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AI_SendSoftTrig(IntPtr hDevice); // 发送软件触发事件(Send Software Trigger),软件触发也叫强制触发
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AI_GetStatus( // 取得AI各种状态
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ ref USB5621AE_AI_STATUS pAIStatus);
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AI_WaitUntilTaskDone( // 采集任务结束前等待,返回TRUE表示采集任务结束
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ double fTimeout); // 用于等待的时间,单位:秒(S)
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AI_ReadAnalog( // 采集任务结束前等待,返回TRUE表示采集任务结束
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ double[] fAnlgArray, // 模拟数据数组(电压数组),用于返回采样的电压数据,取值区间由各通道采样时的采样范围决定(单位:V)
|
|
|
+ UInt32 nReadSampsPerChan, // 每通道请求读取的点数(单位:点)
|
|
|
+ ref UInt32 pSampsPerChanRead, // 返回每通道实际读取的点数(单位:点), =NULL,表示无须返回
|
|
|
+ ref UInt32 pAvailSampsPerChan, // 任务中还存在的可读点数, =NULL,表示无须返回
|
|
|
+ double fTimeout); // 超时时间,单位:秒(S)
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AI_ReadBinary( // 采集任务结束前等待,返回TRUE表示采集任务结束
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ UInt16[] nBinArray, // 二进制数据数组(原码数组),用于返回采样的原码数据,取值区间为[-32768, 32767]
|
|
|
+ UInt32 nReadSampsPerChan, // 每通道请求读取的点数(单位:点)
|
|
|
+ ref UInt32 pSampsPerChanRead, // 返回每通道实际读取的点数(单位:点), =NULL,表示无须返回
|
|
|
+ ref UInt32 pAvailSampsPerChan, // 任务中还存在的可读点数, =NULL,表示无须返回
|
|
|
+ double fTimeout); // 超时时间,单位:秒(S)
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AI_StopTask(IntPtr hDevice); // 停止AI采集任务
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AI_ReleaseTask(IntPtr hDevice); // 释放采集任务
|
|
|
+
|
|
|
+ // ========================= AI辅助操作函数 =========================
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AI_GetMainInfo( // 获得AI主要信息
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ ref USB5621AE_AI_MAIN_INFO pMainInfo); // 获得AI主要信息
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AI_GetVoltRangeInfo( // 采集任务结束前等待,返回TRUE表示采集任务结束
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ UInt32 nChannel, //AI物理通道号[0, 31]
|
|
|
+ UInt32 nSampleRange, // 采样范围选择[0, 3]
|
|
|
+ ref USB5621AE_AI_VOLT_RANGE_INFO pRangeInfo); // 采样范围信息
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AI_GetVoltGainInfo( // 获得增益的各种信息(幅度、分辨率、极性)
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ UInt32 nChannel, // AI物理通道号[0, 15]
|
|
|
+ UInt32 nSampleGain, // 增益选择[0, 3]
|
|
|
+ ref USB5621AE_AI_VOLT_GAIN_INFO pGainInfo); // 增益信息
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AI_GetRateInfo( // 获得AI主要信息
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ ref USB5621AE_AI_SAMP_RATE_INFO pRateInfo); // 采样速率信息
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AI_ScaleBinToVolt( // 根据指定采样范围将采样原码数据量化成电压数据,返回实际量化的点数
|
|
|
+ ref USB5621AE_AI_VOLT_RANGE_INFO pRangeInfo, // 当前转换数据需要的采样范围信息
|
|
|
+ IntPtr pGainInfo, // 当前转换数据需要的采样增益信息(若于=NULL,表示不使用增益)
|
|
|
+ double[] fVoltArray, // 电压数据数组,用于返回量化后的电压数据,单位V
|
|
|
+ ref Int16 nBinArray, // 二进制原码数组,用于传入量化前的原码数据,取值区间为[-32768, 32767], (单指某个通道的连续数据)
|
|
|
+ UInt32 nScaleSamps, // 请求量化的采样点数
|
|
|
+ ref UInt32 pSampsScaled); // 返回实际量化的采样点数, =NULL,表示无须返回
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AI_ScaleVoltToBin( // 根据指定采样范围将电压数据量化成二进制原码数据,返回实际量化的点数
|
|
|
+ ref USB5621AE_AI_VOLT_RANGE_INFO pRangeInfo, // 当前转换数据需要的采样范围信息
|
|
|
+ IntPtr pGainInfo, // 当前转换数据需要的采样增益信息(若于=NULL,表示不使用增益)
|
|
|
+ Int16[] nBinArray, // 二进制原码数组,用于传入量化前的原码数据,取值区间为[-32768, 32767], (单指某个通道的连续数据)
|
|
|
+ double[] fVoltArray, // 电压数据数组,用于返回量化后的电压数据,单位V
|
|
|
+ UInt32 nScaleSamps, // 请求量化的采样点数
|
|
|
+ ref UInt32 pSampsScaled); // 返回实际量化的采样点数, =NULL,表示无须返回
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AI_VerifyParam( // 校验AI工作参数(Verify Parameter),建议在初始化AI参数前调用此函数校验各参数合法性
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ ref USB5621AE_AI_PARAM pAIParam); // 待校验的AI工作参数
|
|
|
+
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AI_LoadParam( // 从USB5621AE.ini中加载AI参数
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ ref USB5621AE_AI_PARAM pAIParam); // 待校验的AI工作参数
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AI_SaveParam( // 保存AI参数至USB5621AE.ini
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ ref USB5621AE_AI_PARAM pAIParam);
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AI_ResetParam( // 保存AI参数至USB5621AE.ini将当前AI参数复位至出厂值
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ ref USB5621AE_AI_PARAM pAIParam);
|
|
|
+
|
|
|
+ // ################################ AO模拟量输出实现函数 ################################
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AO_InitTask( // 初始化生成任务(Initialize Task)
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ ref USB5621AE_AO_PARAM pAOParam, // AO工作参数, 它仅在此函数中决定硬件初始状态和各工作模式,可以事先由AO_VerifyParam()进行参数校验
|
|
|
+ IntPtr pSampEvent); // 返回采样事件对象句柄,当设备中出现可读数据段时会触发此事件,参数=NULL,表示不需要此事件句柄
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AO_StartTask( // 开始生成任务
|
|
|
+ IntPtr hDevice);
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AO_SendSoftTrig( // 发送软件触发事件(Send Software Trigger),软件触发也叫强制触发
|
|
|
+ IntPtr hDevice);
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AO_GetStatus( // 取得AO各种状态
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ ref USB5621AE_AO_STATUS pAOStatus);
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AO_WaitUntilTaskDone( // 生成任务结束前等待,返回TRUE表示生成任务结束
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ double fTimeout); // 超时时间,单位:秒(S)
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AO_WriteAnalog( // 向生成任务中写入AO输出的模拟量电压数据(Write analog data to the task)
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ UInt16 [] nBinArray, // AO0、AO1电压混合缓冲区,存放AO的模拟(电压)数据,取值区间由各通道采样时的采样范围决定(单位:V)
|
|
|
+ UInt32 nWriteSampsPerChan, // 每通道请求写入的点数(单位:点)
|
|
|
+ ref UInt32 pSampsPerChanWritten, // 返回每通道实际写入的点数(单位:点), =NULL,表示无须返回
|
|
|
+ ref UInt32 pAvailSampsPerChan, // 返回当前可写入的采样点数, =NULL,表示无须返回
|
|
|
+ double fTimeout); // 超时时间,单位:秒(S)
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AO_WriteBinary( // 向生成任务中写入AO输出的二进制原码数据(Write binary data to the task)
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ UInt16[] nBinArray, // AO0、AO1原码混合缓冲区,用于返回采样的原码数据,取值区间为[-32768, 32767]
|
|
|
+ UInt32 nWriteSampsPerChan, // 每通道请求写入的点数(单位:点)
|
|
|
+ ref UInt32 pSampsPerChanWritten, // 返回每通道实际写入的点数(单位:点), =NULL,表示无须返回
|
|
|
+ ref UInt32 pAvailSampsPerChan, // 返回当前可写入的采样点数, =NULL,表示无须返回
|
|
|
+ double fTimeout); // 超时时间,单位:秒(S)
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AO_ReadbackAnalog( // 回读所有AO通道的当前生成的模拟量数据(电压数据序列)(Read back analog data from the task)
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ double [] fAnlgArray); // fAnlgArray[0]=AO0电压数据,fAnlgArray[1]=AO1电压数据, 取值区间由相应通道的采样范围决定
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AO_ReadbackBinary( // 回读所有AO通道的当前生成的模拟量数据(二进制原码数据序列)(Read back binary data from the task)
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ UInt16[] nBinArray); // nBinArray[0]=AO0原码数据,nBinArray[1]=AO1原码数据, 取值区间[-32768, 32767]
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AO_StopTask( // 停止生成任务
|
|
|
+ IntPtr hDevice);
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AO_ReleaseTask( // 释放生成任务
|
|
|
+ IntPtr hDevice);
|
|
|
+
|
|
|
+ // ========================= AO辅助操作函数 =========================
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AO_GetMainInfo( // 获得AO的主要信息
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ ref USB5621AE_AO_MAIN_INFO pMainInfo); // 获得AO主要信息
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AO_GetVoltRangeInfo( // 获得采样范围的各种信息(幅度、分辨率、极性)
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ UInt32 nChannel, // AO物理通道号
|
|
|
+ UInt32 nSampleRange, // 采样范围选择[0, 0]
|
|
|
+ ref USB5621AE_AO_VOLT_RANGE_INFO pRangeInfo); // 采样范围信息
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AO_GetRateInfo( // 获得采样速率信息
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ ref USB5621AE_AO_SAMP_RATE_INFO pRateInfo); // 采样速率信息
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AO_ScaleBinToVolt( // 根据指定采样范围将采样原码数据量化成电压数据,返回实际量化的点数
|
|
|
+ ref USB5621AE_AO_VOLT_RANGE_INFO pRangeInfo, // 当前转换数据需要的采样范围信息
|
|
|
+ double[] fVoltArray, // 电压缓冲区,用于返回量化后的电压数据,单位V
|
|
|
+ Int16[] nBinArray, // 二进制原码缓冲区,用于传入量化前的原码数据,取值区间为[-32768, 32767], (单指某个通道的连续数据)
|
|
|
+ UInt32 nScaleSamps, // 请求量化的采样点数
|
|
|
+ ref UInt32 pSampsScaled); // 返回实际量化的采样点数
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AO_ScaleVoltToBin( // 根据指定采样范围将采样原码数据量化成电压数据,返回实际量化的点数
|
|
|
+ ref USB5621AE_AO_VOLT_RANGE_INFO pRangeInfo, // 当前转换数据需要的采样范围信息
|
|
|
+ Int16[] nBinArray, // 二进制原码缓冲区,用于传入量化前的原码数据,取值区间为[-32768, 32767], (单指某个通道的连续数据)
|
|
|
+ double[] fVoltArray, // 电压缓冲区,用于返回量化后的电压数据,单位V
|
|
|
+ UInt32 nScaleSamps, // 请求量化的采样点数
|
|
|
+ ref UInt32 pSampsScaled); // 返回实际量化的采样点数
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AO_VerifyParam( // 校验AO工作参数(Verify Parameter),建议在初始化生成任务前调用此函数校验各参数合法性
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ ref USB5621AE_AO_PARAM pAOParam); // 待校验的AO工作参数
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AO_LoadParam( // 从USB5621AE.ini中加载AO参数
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ ref USB5621AE_AO_PARAM pAOParam);
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AO_SaveParam( // 保存AO参数至USB5621AE.ini
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ ref USB5621AE_AO_PARAM pAOParam);
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_AO_ResetParam( // 将当前AO参数复位至出厂值
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ ref USB5621AE_AO_PARAM pAOParam);
|
|
|
+
|
|
|
+ // ############################ CTR计数器函数 ############################
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_CTR_InitTask( // 初始采集任务
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ UInt32 nChannel, // 通道号(本设备仅有1个通道,恒等于0)
|
|
|
+ ref USB5621AE_CTR_PARAM pCTRParam); // 工作参数
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_CTR_StartTask( // 开始采集任务
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ UInt32 nChannel); // 通道号(本设备仅有1个通道,恒等于0)
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_CTR_ReadCounter( // 读取计数器的当前计数值
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ UInt32 nChannel, // 通道号(本设备仅有1个通道,恒等于0)
|
|
|
+ ref UInt32 pCountVal); // 计数值
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_CTR_StopTask( // 停止(或暂停)采集任务
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ UInt32 nChannel); // 通道号(本设备仅有1个通道,恒等于0)
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_CTR_ReleaseTask( // 释放采集任务
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ UInt32 nChannel); // 通道号(本设备仅有1个通道,恒等于0)
|
|
|
+
|
|
|
+ // ############################ DIO数字量输入输出实现函数 ############################
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_DIO_ReadPort( // 读数字量端口值(Read Port Data from DI Port)
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ UInt32 nPort, // 端口号, 取值范围为[0, 1], Port0为单向输入,Port1为单向输出
|
|
|
+ ref UInt32 pPortData); // 返回的端口数据, 有效位Bit[7:0], 读Port0时为DI输入,读Port1时为DO回读
|
|
|
+
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_DIO_WritePort( // 写数字量端口值(Write Digital Port Value)
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ UInt32 nPort, // 端口号, 取值范围为[0, 1]
|
|
|
+ UInt32 nPortData); // 端口数据, 有效位Bit[7:0]
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_DIO_ReadLines( // 读数字量端口值(Read Digital Port Value)
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ UInt32 nPort, // 端口号, 取值范围为[0, 1]
|
|
|
+ UInt32[] bLineDataArray); // 线数据缓冲区, 同时返回端口中各线的状态值bLineDataArray[n]=0:表示关(或低)状态, =1表示开(或高)状态
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_DIO_WriteLines( // 写数字量端口值(Write Digital Port Value)
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ UInt32 nPort, // 端口号, 取值范围为[0, 1]
|
|
|
+ UInt32[] bLineDataArray); // 线数据缓冲区, 端口中各线的状态值bLineDataArray[n]=0:表示关(或低)状态, =1表示开(或高)状态
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_DIO_ReadLine( // 读线值
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ UInt32 nPort, // 端口号, 取值范围为[0, 1]
|
|
|
+ UInt32 nLine, // 线号,取值范围Port0时[0, 7], Port1时[0, 3]
|
|
|
+ ref UInt32 pLineData); // 线数据, 取值0或1
|
|
|
+
|
|
|
+ [DllImport("USB5621AE_64.DLL")]
|
|
|
+ public static extern bool USB5621AE_DIO_WriteLine( // 写线值
|
|
|
+ IntPtr hDevice, // 设备对象句柄,它由DEV_Create()函数创建
|
|
|
+ UInt32 nPort, // 端口号, 取值范围为[0, 1]
|
|
|
+ UInt32 nLine, // 线号,取值范围Port0时[0, 7], Port1时[0, 3]
|
|
|
+ UInt32 bLineData); // 线值,取值0或1
|
|
|
+ }
|
|
|
+}
|