19 #include "nidaqmxdriver.h"
25 Transaction &tr_meas,
const shared_ptr<XMeasure> &meas);
57 virtual double getTimeInterval();
60 virtual int acqCount(
bool *seq_busy);
63 virtual void getWave(shared_ptr<RawData> &writer, std::deque<XString> &channels);
65 virtual bool isDRFCoherentSGSupported()
const {
return true;}
68 shared_ptr<XNIDAQmxInterface::SoftwareTrigger> m_softwareTrigger;
69 shared_ptr<XListener> m_lsnOnSoftTrigStarted, m_lsnOnSoftTrigChanged;
70 void onSoftTrigStarted(
const shared_ptr<XNIDAQmxInterface::SoftwareTrigger> &);
71 void onSoftTrigChanged(
const shared_ptr<XNIDAQmxInterface::SoftwareTrigger> &);
72 shared_ptr<XThread<XNIDAQmxDSO> > m_threadReadAI;
76 std::vector<tRawAI> m_recordBuf;
77 enum {CAL_POLY_ORDER = 4};
78 float64 m_coeffAI[4][CAL_POLY_ORDER];
79 inline float64 aiRawToVolt(
const float64 *pcoeff, float64 raw);
82 unsigned int accumCount;
83 unsigned int recordLength;
86 std::vector<int32_t> record;
89 bool ret = locked.compare_set_strong(
false,
true);
98 int m_dsoRawRecordBankLatest;
103 unsigned int m_preTriggerPos;
104 void clearAcquision();
105 void setupAcquision();
106 void disableTrigger();
108 void clearStoredSoftwareTrigger();
109 void setupSoftwareTrigger();
111 void createChannels();
113 static int32 onTaskDone_(TaskHandle task, int32 status,
void*);
114 void onTaskDone(TaskHandle task, int32 status);
118 inline bool tryReadAISuspend(
const atomic<bool> &terminated);