98 lines
2.0 KiB
C++
98 lines
2.0 KiB
C++
/* **************************************************************************
|
|
|
|
Author: Achim Gaedke
|
|
Created: June 2004
|
|
|
|
****************************************************************************/
|
|
#ifndef DATELPCI416
|
|
#define DATELPCI416
|
|
|
|
#include "drivers/ADC.h"
|
|
#include "core/states.h"
|
|
#include <cstdlib>
|
|
#include <windows.h>
|
|
#include "416inc/pcilib32.h"
|
|
#include "416inc/pci416df.h"
|
|
|
|
/**
|
|
\defgroup datelpci416 Datel PCI416 adc card
|
|
\ingroup drivers
|
|
\brief supports Datel PCI416 pci cards with dma data transfer
|
|
|
|
@{
|
|
*/
|
|
class DatelPCI416: public ADC {
|
|
HINSTANCE PCI_DLL;
|
|
// make definitions private
|
|
# include "416inc/41632DLL.H"
|
|
/** the board this driver works on */
|
|
long unsigned int board;
|
|
/** number of available boards */
|
|
long unsigned int brdcount;
|
|
|
|
|
|
/**
|
|
\brief the capabilities of the PCI slot used by this card
|
|
|
|
the members of this structure are:
|
|
0 sizeFIFO;
|
|
1 bufsizeDMA;
|
|
2 indexADM;
|
|
3 acqmode;
|
|
*/
|
|
|
|
DWORD caps[4];
|
|
/**
|
|
the sample count per trigger pulse and per channel
|
|
*/
|
|
size_t sample_count;
|
|
/**
|
|
the count of expected triggers
|
|
*/
|
|
size_t trigger_count;
|
|
|
|
/**
|
|
sampling frequency of initialised card
|
|
*/
|
|
double sample_frequency;
|
|
|
|
/**
|
|
when initialised, this handle gives access to data
|
|
*/
|
|
DWORD dma_buffer_handle;
|
|
|
|
/**
|
|
the ttl signal for pulse programmer
|
|
*/
|
|
ttlout trigger_line;
|
|
|
|
public:
|
|
DatelPCI416(const ttlout& t_line);
|
|
|
|
~DatelPCI416();
|
|
|
|
/**
|
|
start sampling after trigger and return field of int
|
|
*/
|
|
virtual void sample_after_external_trigger(const double rate, const size_t samples, double sensitivity=5.0, size_t resolution=12);
|
|
|
|
/**
|
|
here the data aquisition unit is configured and adds the necessary pusle components to the program
|
|
|
|
\exception ADC_exception if data aquisition can not be done by this driver, reason is given
|
|
*/
|
|
virtual void set_daq(state& exp);
|
|
|
|
/**
|
|
read the sample data
|
|
*/
|
|
virtual adc_result* get_samples(double timeout=0.0);
|
|
|
|
};
|
|
|
|
/**
|
|
@}
|
|
*/
|
|
|
|
#endif
|