OSDN Git Service

first
[psychlops/cpp.git] / psychlops / extension / devices / psychlops_devices_nidaqmx.h
1 /*
2  *  psychlops_devices_nidaqmxbase.h
3  *  Psychlops Standard Library (Universal)
4  *
5  *  Last Modified 2009/07/30 by Kenchi HOSOKAWA
6  *  (C) 2009 Kenchi HOSOKAWA, Kazushi MARUYA, Takao SATO
7  */
8
9 #ifndef HEADER_PSYCHLOPS_DEVICES_NIDAQMX
10 #define HEADER_PSYCHLOPS_DEVICES_NIDAQMX
11
12 #include "../../core/devices/psychlops_io_analog.h"
13
14 namespace Psychlops {
15
16 namespace Devices {
17
18         struct NIDAQmxAPI;
19
20         class NIDAQmx : public ITrigger {
21                 protected:
22                 NIDAQmxAPI *ain;
23                 NIDAQmxAPI *aout;
24
25                 public:
26                 NIDAQmx();
27                 ~NIDAQmx();
28                 void open(const char* devname = "Dev1/ai0");
29                 void open(double rate, const char* devname = "Dev1/ai0");
30
31                 virtual double getSamplingRate();
32                 virtual void setSamplingRate(double sample_per_sec);
33                 virtual double getLatency();
34                 virtual double getJitterSD();
35                 virtual Interval getRange();
36                 virtual bool isAnalog();
37
38                 virtual double get();
39                 virtual int NIDAQmx::get(double* buf, int length, double timeout_second);
40                 virtual void put(double);
41                 virtual void pulse(double);
42                 virtual void keep(double);
43         };
44
45         class AnalogInput_NIDAQmx : public ITrigger, public AnalogInput {
46                 protected:
47                 NIDAQmxAPI *api;
48
49                 public:
50                 AnalogInput_NIDAQmx(const char* devname = "Dev1/ai0");
51                 AnalogInput_NIDAQmx(double rate, const char* devname = "Dev1/ai0");
52                 virtual ~AnalogInput_NIDAQmx();
53                 virtual double get();
54                 virtual int get(double* buf, int length, double timeout_second);
55                 virtual void samplingRate(double sample_per_sec);
56
57
58                 virtual double samplingRate();
59                 virtual double getSamplingRate();
60                 virtual double getLatency();
61                 virtual double getJitterSD();
62                 virtual Interval getRange();
63                 virtual bool isAnalog();
64                 virtual void put(double);
65                 virtual void pulse(double);
66                 virtual void keep(double);
67         };
68
69         class AnalogOutput_NIDAQmx : public ITrigger, public AnalogOutput {
70                 protected:
71                 NIDAQmxAPI *api;
72
73                 public:
74                 AnalogOutput_NIDAQmx(const char* devname = "Dev1/ao0");
75                 virtual ~AnalogOutput_NIDAQmx();
76                 virtual void put(double);
77                 static void setVoltage(double val, const char* devname = "Dev1/ao0");
78                 virtual void pulse(double);
79                 virtual void keep(double);
80
81
82                 virtual double getLatency();
83                 virtual double getJitterSD();
84                 virtual Interval getRange();
85                 virtual bool isAnalog();
86                 virtual double get();
87         };
88
89 }
90
91 }       /*      <- namespace Psycholops         */
92
93
94
95 #endif