OSDN Git Service

first
[psychlops/cpp.git] / psychlops / extension / devices / psychlops_devices_nidaqmxbase.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_NIDAQMXBASE
10 #define HEADER_PSYCHLOPS_DEVICES_NIDAQMXBASE
11
12 #include "../../core/devices/psychlops_io_analog.h"
13
14 namespace Psychlops {
15
16 namespace Devices {
17
18         // Notice: Currently Voltage range is limited from -5V to 5V.
19
20
21         struct NIDAQmxBaseAPI;
22
23         class AnalogInput_NIDAQmxBase : public ITrigger, public AnalogInput {
24                 protected:
25                 NIDAQmxBaseAPI *api;
26
27                 public:
28                 AnalogInput_NIDAQmxBase(const char* devname = "Dev1/ai0");
29                 AnalogInput_NIDAQmxBase(double rate, const char* devname = "Dev1/ai0");
30                 virtual ~AnalogInput_NIDAQmxBase();
31                 virtual double get();
32                 virtual int get(double* buf, int length, double timeout_second);
33                 virtual double samplingRate();
34                 virtual void samplingRate(double sample_per_sec);
35
36
37
38                 virtual double getLatency();
39                 virtual double getJitterSD();
40                 virtual Interval getRange();
41                 virtual bool isAnalog();
42                 virtual void put(double);
43                 virtual void pulse(double);
44                 virtual void keep(double);
45         };
46
47         class AnalogOutput_NIDAQmxBase : public ITrigger, public AnalogOutput {
48                 protected:
49                 NIDAQmxBaseAPI *api;
50
51                 public:
52                 AnalogOutput_NIDAQmxBase(const char* devname = "Dev1/ao0");
53                 virtual ~AnalogOutput_NIDAQmxBase();
54                 virtual void put(double);
55                 static void setVoltage(double val, const char* devname = "Dev1/ao0");
56                 virtual void pulse(double);
57                 virtual void keep(double);
58
59
60
61                 virtual double getLatency();
62                 virtual double getJitterSD();
63                 virtual Interval getRange();
64                 virtual bool isAnalog();
65                 virtual double get();
66         };
67
68
69 }
70
71 }       /*      <- namespace Psycholops         */
72
73
74
75 #endif