////////////////////////////////////////////////////////////////////// #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