using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; namespace USB2XXX { class USB2ADC { //定义函数返回错误代码 public const Int32 ADC_SUCCESS = (0); //函数执行成功 public const Int32 ADC_ERR_NOT_SUPPORT = (-1); //适配器不支持该函数 public const Int32 ADC_ERR_USB_WRITE_FAIL = (-2); //USB写数据失败 public const Int32 ADC_ERR_USB_READ_FAIL = (-3); //USB读数据失败 public const Int32 ADC_ERR_CMD_FAIL = (-4); //命令执行失败 public const Int32 ADC_ERR_CH_NO_INIT = (-5); //参数传入错误 //定义连续采集数据模式下的回调函数 public delegate Int32 ADC_GET_DATA_HANDLE(Int32 DevIndex, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)]UInt16[] pData, Int32 DataNum);//接收数据回掉函数 //USB2ADC相关函数定义 /** * @brief 初始化配置ADC * @param DevIndex 设备索引号 * @param Channel 需要配置的ADC通道,每个bit为对应一个通道,为1时则需要配置该通道,最低位代表通道0 * @param SampleRateHz ADC采样率,单通道最大2.5MHz,单位为Hz * @retval 函数执行状态,小于0函数执行出错 */ [DllImport("USB2XXX.dll")] public static extern Int32 ADC_Init(Int32 DevIndex,Byte Channel,Int32 SampleRateHz); /** * @brief 启动并驱动ADC转换值 * @param DevIndex 设备索引号 * @param pData 数据存储缓冲区首地址 * @param DataNum 获取转换的数据数,每个数据之间的时间间隔为初始化配置时候的采样频率决定 * @retval 函数执行状态,小于0函数执行出错 */ [DllImport("USB2XXX.dll")] public static extern Int32 ADC_Read(Int32 DevIndex, UInt16[] pData, Int32 DataNum); /** * @brief 启动ADC连续转换模式 * @param DevIndex 设备索引号 * @param Channel 需要配置的ADC通道,每个bit为对应一个通道,为1时则需要配置该通道,最低位代表通道0 * @param SampleRateHz ADC采样率,单通道最大2.5MHz,单位为Hz * @param FrameSize 连续采样时每次传输数据个数SampleRateHz*1000/FrameSize最好大于或者等于20 * @retval 函数执行状态,小于0函数执行出错 */ [DllImport("USB2XXX.dll")] public static extern Int32 ADC_StartContinueRead(Int32 DevIndex,Byte Channel,Int32 SampleRateHz,Int32 FrameSize,ADC_GET_DATA_HANDLE pGetDataHandle); /** * @brief 停止ADC连续转换模式 * @param DevIndex 设备索引号 * @retval 函数执行状态,小于0函数执行出错 */ [DllImport("USB2XXX.dll")] public static extern Int32 ADC_StopContinueRead(Int32 DevIndex); /** * @brief 获取ADC连续转换模式下存储在数据缓冲区中的数据值 * @param DevIndex 设备索引号 * @param pDataBuffer 数据存储缓冲区首地址 * @param BufferSize 数据存储缓冲区大下,注意单位为短整型,不是字节,缓冲区最小为10240,否则获取不到数据 * @retval 成功获取到的数据数(单位为短整型) */ [DllImport("USB2XXX.dll")] public static extern Int32 ADC_GetData(Int32 DevIndex,UInt16[] pDataBuffer,Int32 BufferSize); } }