62 lines
1.5 KiB
C++
62 lines
1.5 KiB
C++
//////////////////////////////////////////////////////////////////////
|
|
#ifndef ART_PCI8622_INCLUDED
|
|
#define ART_PCI8622_INCLUDED
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
#include "PCI8622.h"
|
|
|
|
#define MAX_AD_CHANNELS 4
|
|
#define SEGMENT_COUNT 32
|
|
#define HALF_SIZE_WORDS 4096
|
|
enum E_ART_PCI8622_SAMPLE_MODE
|
|
{
|
|
E_ART_PCI8622_SAMPLE_DMA=0,
|
|
E_ART_PCI8622_SAMPLE_DMA_SEQ,
|
|
E_ART_PCI8622_SAMPLE_DMA_TRIGCLK,
|
|
E_ART_PCI8622_SAMPLE_NPT=10,
|
|
E_ART_PCI8622_SAMPLE_NPT_SEQ,
|
|
E_ART_PCI8622_SAMPLE_NPT_TRIGCLK,
|
|
E_ART_PCI8622_SAMPLE_HALF=20,
|
|
E_ART_PCI8622_SAMPLE_HALF_SEQ,
|
|
E_ART_PCI8622_SAMPLE_HALF_TRIGCLK,
|
|
|
|
E_ART_PCI8622_SAMPLE_TOTAL=255
|
|
};
|
|
//======================================================================================
|
|
class CART_PCI8622
|
|
{
|
|
protected:
|
|
HANDLE m_hDevice;
|
|
HANDLE m_hDmaEvent;
|
|
int m_InputRange;
|
|
WORD ADBuffer[SEGMENT_COUNT][HALF_SIZE_WORDS];
|
|
ULONG m_SegmentID;
|
|
PCI8622_PARA_AD m_ADPara; // Ó²¼þ²ÎÊý
|
|
double m_AD_LSB_MAX;
|
|
double m_AD_LSB_HALF;
|
|
double m_AD_LSB_RANGE;
|
|
BOOL m_StopedSample;
|
|
BOOL m_EnStartSample;
|
|
BOOL m_EnGetData;
|
|
int m_iSampleMode;
|
|
int m_iReadDataSize;
|
|
int m_iFirstChannel;
|
|
int m_iLastChannel;
|
|
public:
|
|
CART_PCI8622();
|
|
~CART_PCI8622();
|
|
|
|
BOOL Init();
|
|
BOOL Exit();
|
|
BOOL SetSamplePara(int _Mode,int _ReadDataSize);
|
|
BOOL SetSampleChannel(int _FirstChannel,int _LastChannel);
|
|
BOOL StartSampleData();
|
|
BOOL StopSampleData();
|
|
BOOL GetData(double (*_Data)[HALF_SIZE_WORDS],int* _DataNumber);
|
|
|
|
};
|
|
#endif
|