You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
3.5 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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);
}
}