20#define THM1176_PROMPT_TIME 10
21#define THM1176_BOOT_N_SCAN_TIME 15000
22#define THM1176_CONNECT_TIME 5000
23#define THM1176_CHANGE_PARM_TIME 1000
24#define THM1176_RESET_TIME 1000
25#define THM1176_MEASURE_TIME 20000
26#define THM1176_CALIBRATE_TIME 10000
38 std::string l_Space = (
"" == Prompt) ?
"" :
" ";
39 std::string l_Message =
">>> " + Prompt + l_Space +
"(Will continue in " + std::to_string(
THM1176_PROMPT_TIME) +
" seconds) <<<";
41 QWARN(l_Message.c_str());
62 QList<QVariant> m_Arguments;
89 void initTestCase(
void);
92 void cleanupTestCase(
void);
95 void TestSetOperatingMode_Immediate(
void);
98 void TestSetOperatingMode_Triggered(
void);
101 void TestSetOperatingMode_Timed(
void);
104 void TestSetOperatingMode_TimedLong(
void);
107 void TestSetOperatingMode_ImmediateContinuous(
void);
110 void TestSetOperatingMode_TimedContinuous(
void);
113 void TestSetOperatingMode_TriggeredContinuous(
void);
116 void TestSetOperatingMode_CalibrateRestore(
void);
119 void TestUtilities(
void);
139void THM1176IM_Test02_Measure::initTestCase(
void)
141 QList<QVariant> m_Arguments;
148 QSignalSpy l_NotifyCurrentInstrumentSpy(&
Manager, SIGNAL(NotifyCurrentInstrument(
tResourceName)));
150 QSignalSpy l_NotifyIdentificationSpy(&
Manager, SIGNAL(NotifyIdentification(
sIdentifier)));
151 QSignalSpy l_NotifyRangeListSpy(&
Manager, SIGNAL(NotifyRangeList(
CFluxList)));
161 QSignalSpy l_NotifySleepParmSpy(&
Manager, SIGNAL(NotifySleepParm(
bool)));
172 QCOMPARE(l_NotifyInstrumentListSpy.count(), 1);
173 m_Arguments = l_NotifyInstrumentListSpy.takeFirst();
174 m_ResourceList = qvariant_cast<CResourceList>(m_Arguments.at(0));
175 QCOMPARE(m_ResourceList.size(), 1ul);
178 m_THM1176Selected = m_ResourceList[0];
179 Manager.SetCurrentInstrument(m_THM1176Selected);
183 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
184 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
185 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
189 QCOMPARE(l_NotifyCurrentInstrumentSpy.count(), 1);
190 m_Arguments = l_NotifyCurrentInstrumentSpy.takeFirst();
191 m_THM1176Selected = qvariant_cast<tResourceName>(m_Arguments.at(0));
192 QCOMPARE(m_THM1176Selected, m_ResourceList[0]);
195 QCOMPARE(l_NotifyIdentificationSpy.count(), 1);
196 m_Arguments = l_NotifyIdentificationSpy.takeFirst();
197 m_Identification = qvariant_cast<sIdentifier>(m_Arguments.at(0));
200 QCOMPARE(l_NotifyRangeListSpy.count(), 1);
201 m_Arguments = l_NotifyRangeListSpy.takeFirst();
202 m_RangeList = qvariant_cast<CFluxList>(m_Arguments.at(0));
203 QVERIFY(!m_RangeList.empty());
205 QCOMPARE(l_NotifyUnitsListSpy.count(), 1);
206 m_Arguments = l_NotifyUnitsListSpy.takeFirst();
207 m_UnitsList = qvariant_cast<CTHM1176UnitsList>(m_Arguments.at(0));
208 QVERIFY(!m_UnitsList.empty());
210 QCOMPARE(l_NotifyDivisorListSpy.count(), 1);
211 m_Arguments = l_NotifyDivisorListSpy.takeFirst();
212 m_DivisorList = qvariant_cast<CDivisorList>(m_Arguments.at(0));
213 QVERIFY(!m_DivisorList.empty());
215 QCOMPARE(l_NotifyAveragingParmBoundsSpy.count(), 1);
216 m_Arguments = l_NotifyAveragingParmBoundsSpy.takeFirst();
217 m_AveragingBounds = qvariant_cast<sAveraging<sBoundedParm>>(m_Arguments.at(0));
221 QCOMPARE(l_NotifyTriggerParmBoundsSpy.count(), 1);
222 m_Arguments = l_NotifyTriggerParmBoundsSpy.takeFirst();
223 m_TriggerBounds = qvariant_cast<sInputTrigger<sBoundedParm>>(m_Arguments.at(0));
229 QCOMPARE(l_NotifyRangeParmBoundsSpy.count(), 1);
230 m_Arguments = l_NotifyRangeParmBoundsSpy.takeFirst();
231 m_RangeBounds = qvariant_cast<sRange<sBoundedParm>>(m_Arguments.at(0));
236 QCOMPARE(l_NotifyAveragingParmsSpy.count(), 1);
237 m_Arguments = l_NotifyAveragingParmsSpy.takeFirst();
238 m_AveragingParms = qvariant_cast<sAveraging<uParm>>(m_Arguments.at(0));
239 QVERIFY(m_AveragingParms.
NoPoints > 0);
241 QCOMPARE(l_NotifyTriggerParmsSpy.count(), 1);
242 m_Arguments = l_NotifyTriggerParmsSpy.takeFirst();
243 m_Trigger = qvariant_cast<sInputTrigger<uParm>>(m_Arguments.at(0));
246 QCOMPARE(l_NotifyOutputSelectSpy.count(), 1);
247 m_Arguments = l_NotifyOutputSelectSpy.takeFirst();
248 m_OutputSelect = qvariant_cast<sArbitraryMeasurements>(m_Arguments.at(0));
250 QCOMPARE(l_NotifySleepParmSpy.count(), 1);
251 m_Arguments = l_NotifySleepParmSpy.takeFirst();
252 m_SleepParm = qvariant_cast<bool>(m_Arguments.at(0));
254 QCOMPARE(l_NotifyUnitsSpy.count(), 1);
255 m_Arguments = l_NotifyUnitsSpy.takeFirst();
256 m_Units = qvariant_cast<eTHM1176Units>(m_Arguments.at(0));
258 QCOMPARE(l_NotifyRangeParmsSpy.count(), 1);
259 m_Arguments = l_NotifyRangeParmsSpy.takeFirst();
260 m_RangeParms = qvariant_cast<sRange<uParm>>(m_Arguments.at(0));
262 QCOMPARE(l_NotifyCommFormatSpy.count(), 1);
263 m_Arguments = l_NotifyCommFormatSpy.takeFirst();
264 m_CommFormat = qvariant_cast<eCommunicationFormat>(m_Arguments.at(0));
267 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
269 std::cout <<
"- Connected to " + m_Identification.
Model +
", S/N " + std::to_string(m_Identification.
SerialNumber) << std::endl;
273void THM1176IM_Test02_Measure::cleanupTestCase(
void)
296void THM1176IM_Test02_Measure::TestSetOperatingMode_Immediate(
void)
299 QSignalSpy l_NotifyMeasurementSpy(&
Manager, SIGNAL(NotifyMeasurement(CMeasurement)));
301 QSignalSpy l_NotifyErrorListSpy(&
Manager, SIGNAL(NotifyErrorList(CErrorList)));
308 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
309 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
310 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
312 if (l_NotifyOperatingModeSpy.count() <= 0)
315 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
317 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
318 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
329 std::cout <<
"- Reset " << m_Identification.Model <<
", S/N " << m_Identification.SerialNumber << std::endl;
338 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
347 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
348 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
349 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
351 if (l_NotifyOperatingModeSpy.count() <= 0)
354 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
356 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
357 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
360 QCOMPARE(l_NotifyMeasurementSpy.count(), 1);
361 m_Arguments = l_NotifyMeasurementSpy.takeFirst();
362 m_Measurement = qvariant_cast<CMeasurement> (m_Arguments.at(0));
363 QCOMPARE(m_Measurement.Bx.size(), 1ul);
364 QCOMPARE(m_Measurement.By.size(), 1ul);
365 QCOMPARE(m_Measurement.Bz.size(), 1ul);
366 QCOMPARE(m_Measurement.Units,
MTL::kT);
367 QVERIFY(m_Measurement.Temp != 0);
368 QCOMPARE(m_Measurement.TimestampList.size(), 1ul);
369 QVERIFY(m_Measurement.AveragingParms == m_AveragingParms);
370 QCOMPARE(m_Measurement.TriggerParms.Source, m_Trigger.Source);
371 QCOMPARE(m_Measurement.TriggerParms.Count, m_Trigger.Count);
373 QVERIFY(m_Measurement.OutputSelect == m_OutputSelect);
374 QVERIFY(m_Measurement.SleepParm == m_SleepParm);
375 QVERIFY(m_Measurement.RangeParms.Auto == m_RangeParms.Auto &&
376 (m_RangeParms.Auto || m_Measurement.RangeParms.Range == m_RangeParms.Range));
377 QVERIFY(m_Measurement.CommFormat == m_CommFormat);
378 QCOMPARE(m_Measurement.Warnings.size(), 0ul);
380 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
382 std::cout <<
"- Measured Immediate,1: B = (" << m_Measurement.Bx[0] <<
", " << m_Measurement.By[0] <<
", " << m_Measurement.Bz[0] <<
") [T], "
383 "Temp = " << m_Measurement.Temp <<
", Timestamp = " << m_Measurement.TimestampList[0] << std::endl;
388 m_Trigger.Count = 10;
392 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
396 m_OutputSelect.Bx =
true;
397 m_OutputSelect.By =
false;
398 m_OutputSelect.Bz =
true;
399 m_OutputSelect.Temperature =
false;
400 m_OutputSelect.Timestamp =
true;
401 m_OutputSelect.NoMeasurements = 10;
405 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
414 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
415 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
416 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
418 if (l_NotifyOperatingModeSpy.count() <= 0)
421 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
423 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
424 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
427 QCOMPARE(l_NotifyMeasurementSpy.count(), 1);
428 m_Arguments = l_NotifyMeasurementSpy.takeFirst();
429 m_Measurement = qvariant_cast<CMeasurement> (m_Arguments.at(0));
430 QCOMPARE(m_Measurement.Bx.size(), 10ul);
431 QCOMPARE(m_Measurement.By.size(), 0ul);
432 QCOMPARE(m_Measurement.Bz.size(), 10ul);
433 QCOMPARE(m_Measurement.Units,
MTL::kT);
434 QVERIFY(m_Measurement.Temp == 0);
435 QCOMPARE(m_Measurement.TimestampList.size(), 10ul);
436 QVERIFY(m_Measurement.AveragingParms == m_AveragingParms);
437 QCOMPARE(m_Measurement.TriggerParms.Source, m_Trigger.Source);
438 QCOMPARE(m_Measurement.TriggerParms.Count, m_Trigger.Count);
440 QVERIFY(m_Measurement.OutputSelect == m_OutputSelect);
441 QVERIFY(m_Measurement.SleepParm == m_SleepParm);
442 QVERIFY(m_Measurement.RangeParms.Auto == m_RangeParms.Auto &&
443 (m_RangeParms.Auto || m_Measurement.RangeParms.Range == m_RangeParms.Range));
444 QVERIFY(m_Measurement.CommFormat == m_CommFormat);
445 QCOMPARE(m_Measurement.Warnings.size(), 1ul);
448 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
450 std::cout <<
"- Measured Immediate,10: B[] = (" << m_Measurement.Bx[0] <<
"..., N/A , " << m_Measurement.Bz[0] <<
"...) [T], "
451 "Temp = N/A , Timestamp = " << m_Measurement.TimestampList[0] << std::endl;
488void THM1176IM_Test02_Measure::TestSetOperatingMode_Triggered(
void)
491 QSignalSpy l_NotifyMeasurementSpy(&
Manager, SIGNAL(NotifyMeasurement(CMeasurement)));
493 QSignalSpy l_NotifyErrorListSpy(&
Manager, SIGNAL(NotifyErrorList(CErrorList)));
500 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
501 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
502 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
504 if (l_NotifyOperatingModeSpy.count() <= 0)
507 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
509 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
510 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
521 std::cout <<
"- Reset " << m_Identification.Model <<
", S/N " << m_Identification.SerialNumber << std::endl;
530 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
538 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
539 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
540 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
543 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
549 QThread::currentThread()->msleep(100);
553 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
554 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
555 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
558 QCOMPARE(l_NotifyMeasurementSpy.count(), 1);
559 m_Arguments = l_NotifyMeasurementSpy.takeFirst();
560 m_Measurement = qvariant_cast<CMeasurement> (m_Arguments.at(0));
561 QCOMPARE(m_Measurement.Bx.size(), 1ul);
562 QCOMPARE(m_Measurement.By.size(), 1ul);
563 QCOMPARE(m_Measurement.Bz.size(), 1ul);
564 QCOMPARE(m_Measurement.Units,
MTL::kT);
565 QVERIFY(m_Measurement.Temp != 0);
566 QCOMPARE(m_Measurement.TimestampList.size(), 1ul);
567 QVERIFY(m_Measurement.AveragingParms == m_AveragingParms);
568 QCOMPARE(m_Measurement.TriggerParms.Source, m_Trigger.Source);
569 QCOMPARE(m_Measurement.TriggerParms.Count, m_Trigger.Count);
570 QCOMPARE(m_Measurement.TriggerParms.Period_s, 0.);
571 QVERIFY(m_Measurement.OutputSelect == m_OutputSelect);
572 QVERIFY(m_Measurement.SleepParm == m_SleepParm);
573 QVERIFY(m_Measurement.RangeParms.Auto == m_RangeParms.Auto &&
574 (m_RangeParms.Auto || m_Measurement.RangeParms.Range == m_RangeParms.Range));
575 QVERIFY(m_Measurement.CommFormat == m_CommFormat);
576 QCOMPARE(m_Measurement.Warnings.size(), 0ul);
578 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
580 std::cout <<
"- Measured Triggered,1: B = (" << m_Measurement.Bx[0] <<
", " << m_Measurement.By[0] <<
", " << m_Measurement.Bz[0] <<
") [T], "
581 "Temp = " << m_Measurement.Temp <<
", Timestamp = " << m_Measurement.TimestampList[0] << std::endl;
586 m_Trigger.Count = 10;
590 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
594 m_OutputSelect.Bx =
true;
595 m_OutputSelect.By =
false;
596 m_OutputSelect.Bz =
true;
597 m_OutputSelect.Temperature =
false;
598 m_OutputSelect.Timestamp =
true;
599 m_OutputSelect.NoMeasurements = 10;
603 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
611 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
612 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
613 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
616 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
622 QThread::currentThread()->msleep(100);
623 for (
int i = 0; i < 10; i++)
626 QThread::currentThread()->msleep(100);
630 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
631 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
632 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
635 QCOMPARE(l_NotifyMeasurementSpy.count(), 1);
636 m_Arguments = l_NotifyMeasurementSpy.takeFirst();
637 m_Measurement = qvariant_cast<CMeasurement> (m_Arguments.at(0));
638 QCOMPARE(m_Measurement.Bx.size(), 10ul);
639 QCOMPARE(m_Measurement.By.size(), 0ul);
640 QCOMPARE(m_Measurement.Bz.size(), 10ul);
641 QCOMPARE(m_Measurement.Units,
MTL::kT);
642 QVERIFY(m_Measurement.Temp == 0);
643 QCOMPARE(m_Measurement.TimestampList.size(), 10ul);
644 QVERIFY(m_Measurement.AveragingParms == m_AveragingParms);
645 QCOMPARE(m_Measurement.TriggerParms.Source, m_Trigger.Source);
646 QCOMPARE(m_Measurement.TriggerParms.Count, m_Trigger.Count);
647 QVERIFY(m_Measurement.TriggerParms.Period_s > 80e-3 && m_Measurement.TriggerParms.Period_s < 120e-3);
648 QVERIFY(m_Measurement.OutputSelect == m_OutputSelect);
649 QVERIFY(m_Measurement.SleepParm == m_SleepParm);
650 QVERIFY(m_Measurement.RangeParms.Auto == m_RangeParms.Auto &&
651 (m_RangeParms.Auto || m_Measurement.RangeParms.Range == m_RangeParms.Range));
652 QVERIFY(m_Measurement.CommFormat == m_CommFormat);
653 QCOMPARE(m_Measurement.Warnings.size(), 1ul);
656 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
658 std::cout <<
"- Measured Triggered,10: B[] = (" << m_Measurement.Bx[0] <<
"..., N/A , " << m_Measurement.Bz[0] <<
"...) [T], "
659 "Temp = N/A , TimestampList = " << m_Measurement.TimestampList[0] <<
"..." << std::endl;
662 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
670 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
671 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
672 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
675 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
681 QThread::currentThread()->msleep(100);
682 for (
int i = 0; i < 5; i++)
685 QThread::currentThread()->msleep(100);
690 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
691 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
692 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
695 QCOMPARE(l_NotifyMeasurementSpy.count(), 0);
696 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
698 std::cout <<
"- Measured Triggered,10, sent 5 triggers, and aborted" << std::endl;
702 QThread::currentThread()->msleep(100);
706 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
707 m_Arguments = l_NotifyErrorListSpy.takeFirst();
708 m_LatestErrors = qvariant_cast<CErrorList>(m_Arguments.at(0));
709 QCOMPARE(m_LatestErrors.size(), 1ul);
711 std::cout <<
"- Sending spurious trigger returned error: "
712 << m_LatestErrors[0].Code <<
", "
713 << m_LatestErrors[0].Context <<
": "
714 << m_LatestErrors[0].Description << std::endl;
736void THM1176IM_Test02_Measure::TestSetOperatingMode_Timed(
void)
739 QSignalSpy l_NotifyMeasurementSpy(&
Manager, SIGNAL(NotifyMeasurement(CMeasurement)));
741 QSignalSpy l_NotifyErrorListSpy(&
Manager, SIGNAL(NotifyErrorList(CErrorList)));
748 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
749 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
750 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
752 if (l_NotifyOperatingModeSpy.count() <= 0)
755 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
757 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
758 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
769 std::cout <<
"- Reset " << m_Identification.Model <<
", S/N " << m_Identification.SerialNumber << std::endl;
774 m_Trigger.Period_s = 0.1;
779 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
788 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
789 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
790 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
792 if (l_NotifyOperatingModeSpy.count() <= 0)
795 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
797 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
798 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
801 QCOMPARE(l_NotifyMeasurementSpy.count(), 1);
802 m_Arguments = l_NotifyMeasurementSpy.takeFirst();
803 m_Measurement = qvariant_cast<CMeasurement> (m_Arguments.at(0));
804 QCOMPARE(m_Measurement.Bx.size(), 1ul);
805 QCOMPARE(m_Measurement.By.size(), 1ul);
806 QCOMPARE(m_Measurement.Bz.size(), 1ul);
807 QCOMPARE(m_Measurement.Units,
MTL::kT);
808 QVERIFY(m_Measurement.Temp != 0);
809 QCOMPARE(m_Measurement.TimestampList.size(), 1ul);
810 QVERIFY(m_Measurement.AveragingParms == m_AveragingParms);
811 QCOMPARE(m_Measurement.TriggerParms.Source, m_Trigger.Source);
812 QCOMPARE(m_Measurement.TriggerParms.Count, m_Trigger.Count);
813 QCOMPARE(m_Measurement.TriggerParms.Period_s, m_Trigger.Period_s);
814 QVERIFY(m_Measurement.OutputSelect == m_OutputSelect);
815 QVERIFY(m_Measurement.SleepParm == m_SleepParm);
816 QVERIFY(m_Measurement.RangeParms.Auto == m_RangeParms.Auto &&
817 (m_RangeParms.Auto || m_Measurement.RangeParms.Range == m_RangeParms.Range));
818 QVERIFY(m_Measurement.CommFormat == m_CommFormat);
819 QCOMPARE(m_Measurement.Warnings.size(), 0ul);
821 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
823 std::cout <<
"- Measured Timed,0.1,1: B = (" << m_Measurement.Bx[0] <<
", " << m_Measurement.By[0] <<
", " << m_Measurement.Bz[0] <<
") [T], "
824 "Temp = " << m_Measurement.Temp <<
", Timestamp = " << m_Measurement.TimestampList[0] << std::endl;
829 m_Trigger.Period_s = 0.1;
830 m_Trigger.Count = 10;
834 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
838 m_OutputSelect.Bx =
true;
839 m_OutputSelect.By =
false;
840 m_OutputSelect.Bz =
true;
841 m_OutputSelect.Temperature =
false;
842 m_OutputSelect.Timestamp =
true;
843 m_OutputSelect.NoMeasurements = 10;
847 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
856 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
857 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
858 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
860 if (l_NotifyOperatingModeSpy.count() <= 0)
863 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
865 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
866 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
869 QCOMPARE(l_NotifyMeasurementSpy.count(), 1);
870 m_Arguments = l_NotifyMeasurementSpy.takeFirst();
871 m_Measurement = qvariant_cast<CMeasurement> (m_Arguments.at(0));
872 QCOMPARE(m_Measurement.Bx.size(), 10ul);
873 QCOMPARE(m_Measurement.By.size(), 0ul);
874 QCOMPARE(m_Measurement.Bz.size(), 10ul);
875 QCOMPARE(m_Measurement.Units,
MTL::kT);
876 QVERIFY(m_Measurement.Temp == 0);
877 QCOMPARE(m_Measurement.TimestampList.size(), 10ul);
878 QVERIFY(m_Measurement.AveragingParms == m_AveragingParms);
879 QCOMPARE(m_Measurement.TriggerParms.Source, m_Trigger.Source);
880 QCOMPARE(m_Measurement.TriggerParms.Count, m_Trigger.Count);
881 QCOMPARE(m_Measurement.TriggerParms.Period_s, m_Trigger.Period_s);
882 QVERIFY(m_Measurement.OutputSelect == m_OutputSelect);
883 QVERIFY(m_Measurement.SleepParm == m_SleepParm);
884 QVERIFY(m_Measurement.RangeParms.Auto == m_RangeParms.Auto &&
885 (m_RangeParms.Auto || m_Measurement.RangeParms.Range == m_RangeParms.Range));
886 QVERIFY(m_Measurement.CommFormat == m_CommFormat);
887 QCOMPARE(m_Measurement.Warnings.size(), 1ul);
890 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
892 std::cout <<
"- Measured Timed,0.1,10: B[] = (" << m_Measurement.Bx[0] <<
"..., N/A , " << m_Measurement.Bz[0] <<
"...) [T], "
893 "Temp = N/A , TimestampList[] = " << m_Measurement.TimestampList[0] <<
"..." << std::endl;
912void THM1176IM_Test02_Measure::TestSetOperatingMode_TimedLong(
void)
915 QSignalSpy l_NotifyMeasurementSpy(&
Manager, SIGNAL(NotifyMeasurement(CMeasurement)));
917 QSignalSpy l_NotifyErrorListSpy(&
Manager, SIGNAL(NotifyErrorList(CErrorList)));
924 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
925 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
926 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
928 if (l_NotifyOperatingModeSpy.count() <= 0)
931 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
933 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
934 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
945 std::cout <<
"- Reset " << m_Identification.Model <<
", S/N " << m_Identification.SerialNumber << std::endl;
950 m_Trigger.Period_s = 0.0005;
951 m_Trigger.Count = 4000;
955 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
959 m_AveragingParms.NoPoints = 1;
963 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
967 m_OutputSelect.Bx =
true;
968 m_OutputSelect.By =
true;
969 m_OutputSelect.Bz =
true;
970 m_OutputSelect.Temperature =
true;
971 m_OutputSelect.Timestamp =
true;
972 m_OutputSelect.NoMeasurements = 4000;
976 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
984 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
991 auto l_StartTime = std::chrono::high_resolution_clock::now();
995 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
996 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
997 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
999 if (l_NotifyOperatingModeSpy.count() <= 0)
1002 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1004 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1005 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1008 auto l_StopTime = std::chrono::high_resolution_clock::now();
1010 QCOMPARE(l_NotifyMeasurementSpy.count(), 1);
1011 m_Arguments = l_NotifyMeasurementSpy.takeFirst();
1012 m_Measurement = qvariant_cast<CMeasurement> (m_Arguments.at(0));
1013 QCOMPARE(m_Measurement.Bx.size(), 4000ul);
1014 QCOMPARE(m_Measurement.By.size(), 4000ul);
1015 QCOMPARE(m_Measurement.Bz.size(), 4000ul);
1016 QCOMPARE(m_Measurement.Units,
MTL::kT);
1017 QVERIFY(m_Measurement.Temp > 0);
1018 QCOMPARE(m_Measurement.TimestampList.size(), 4000ul);
1019 QVERIFY(m_Measurement.AveragingParms == m_AveragingParms);
1020 QCOMPARE(m_Measurement.TriggerParms.Source, m_Trigger.Source);
1021 QCOMPARE(m_Measurement.TriggerParms.Count, m_Trigger.Count);
1022 QCOMPARE(m_Measurement.TriggerParms.Period_s, m_Trigger.Period_s);
1023 QVERIFY(m_Measurement.OutputSelect == m_OutputSelect);
1024 QVERIFY(m_Measurement.SleepParm == m_SleepParm);
1025 QVERIFY(m_Measurement.RangeParms.Auto == m_RangeParms.Auto &&
1026 (m_RangeParms.Auto || m_Measurement.RangeParms.Range == m_RangeParms.Range));
1027 QVERIFY(m_Measurement.CommFormat == m_CommFormat);
1028 QCOMPARE(m_Measurement.Warnings.size(), 0ul);
1030 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1032 auto l_TimeElapsed = std::chrono::duration_cast<std::chrono::milliseconds>(l_StopTime - l_StartTime).count();
1033 QVERIFY(l_TimeElapsed > 2000 && l_TimeElapsed < 4000);
1035 std::cout <<
"- Measured Timed,0.0005,4000 B[] = (" << m_Measurement.Bx[0] <<
"..., " << m_Measurement.By[0] <<
"..., " << m_Measurement.Bz[0] <<
"...) [T], "
1036 "Temp = " << m_Measurement.Temp <<
", TimestampList[] = " << m_Measurement.TimestampList[0] <<
"..." << std::endl;
1053void THM1176IM_Test02_Measure::TestSetOperatingMode_ImmediateContinuous(
void)
1056 QSignalSpy l_NotifyMeasurementSpy(&
Manager, SIGNAL(NotifyMeasurement(CMeasurement)));
1058 QSignalSpy l_NotifyErrorListSpy(&
Manager, SIGNAL(NotifyErrorList(CErrorList)));
1065 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
1066 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1067 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1069 if (l_NotifyOperatingModeSpy.count() <= 0)
1072 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1074 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1075 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1086 std::cout <<
"- Reset " << m_Identification.Model <<
", S/N " << m_Identification.SerialNumber << std::endl;
1091 m_Trigger.Period_s = 0.1;
1092 m_Trigger.Count = 1;
1096 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1105 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1106 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1107 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1110 for (
int i = 0; i < 10; i++)
1113 QVERIFY(l_NotifyMeasurementSpy.count() > 0);
1114 m_Arguments = l_NotifyMeasurementSpy.takeFirst();
1115 m_Measurement = qvariant_cast<CMeasurement> (m_Arguments.at(0));
1116 QCOMPARE(m_Measurement.Bx.size(), 1ul);
1117 QCOMPARE(m_Measurement.By.size(), 1ul);
1118 QCOMPARE(m_Measurement.Bz.size(), 1ul);
1119 QCOMPARE(m_Measurement.Units,
MTL::kT);
1120 QVERIFY(m_Measurement.Temp != 0);
1121 QCOMPARE(m_Measurement.TimestampList.size(), 1ul);
1122 QVERIFY(m_Measurement.AveragingParms == m_AveragingParms);
1123 QCOMPARE(m_Measurement.TriggerParms.Source, m_Trigger.Source);
1124 QCOMPARE(m_Measurement.TriggerParms.Count, m_Trigger.Count);
1126 QVERIFY(m_Measurement.OutputSelect == m_OutputSelect);
1127 QVERIFY(m_Measurement.SleepParm == m_SleepParm);
1128 QVERIFY(m_Measurement.RangeParms.Auto == m_RangeParms.Auto &&
1129 (m_RangeParms.Auto || m_Measurement.RangeParms.Range == m_RangeParms.Range));
1130 QVERIFY(m_Measurement.CommFormat == m_CommFormat);
1132 std::cout <<
"- Measured Immediate,1,Continuous: B = (" << m_Measurement.Bx[0] <<
", " << m_Measurement.By[0] <<
", " << m_Measurement.Bz[0] <<
") [T], "
1133 "Temp = " << m_Measurement.Temp <<
", Timestamp = " << m_Measurement.TimestampList[0] <<
", " <<
1134 m_Measurement.Warnings.size() <<
" Warnings" << std::endl;
1137 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1145 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1146 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1147 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1150 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1167void THM1176IM_Test02_Measure::TestSetOperatingMode_TimedContinuous(
void)
1170 QSignalSpy l_NotifyMeasurementSpy(&
Manager, SIGNAL(NotifyMeasurement(CMeasurement)));
1172 QSignalSpy l_NotifyErrorListSpy(&
Manager, SIGNAL(NotifyErrorList(CErrorList)));
1179 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
1180 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1181 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1183 if (l_NotifyOperatingModeSpy.count() <= 0)
1186 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1188 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1189 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1200 std::cout <<
"- Reset " << m_Identification.Model <<
", S/N " << m_Identification.SerialNumber << std::endl;
1205 m_Trigger.Period_s = 0.1;
1206 m_Trigger.Count = 1;
1210 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1219 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1220 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1221 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1224 for (
int i = 0; i < 10; i++)
1227 QThread::currentThread()->msleep(100);
1229 QVERIFY(l_NotifyMeasurementSpy.count() > 0);
1230 m_Arguments = l_NotifyMeasurementSpy.takeFirst();
1231 m_Measurement = qvariant_cast<CMeasurement> (m_Arguments.at(0));
1232 QCOMPARE(m_Measurement.Bx.size(), 1ul);
1233 QCOMPARE(m_Measurement.By.size(), 1ul);
1234 QCOMPARE(m_Measurement.Bz.size(), 1ul);
1235 QCOMPARE(m_Measurement.Units,
MTL::kT);
1236 QVERIFY(m_Measurement.Temp != 0);
1237 QCOMPARE(m_Measurement.TimestampList.size(), 1ul);
1238 QVERIFY(m_Measurement.AveragingParms == m_AveragingParms);
1239 QCOMPARE(m_Measurement.TriggerParms.Source, m_Trigger.Source);
1240 QCOMPARE(m_Measurement.TriggerParms.Count, m_Trigger.Count);
1241 QCOMPARE(m_Measurement.TriggerParms.Period_s, m_Trigger.Period_s);
1242 QVERIFY(m_Measurement.OutputSelect == m_OutputSelect);
1243 QVERIFY(m_Measurement.SleepParm == m_SleepParm);
1244 QVERIFY(m_Measurement.RangeParms.Auto == m_RangeParms.Auto &&
1245 (m_RangeParms.Auto || m_Measurement.RangeParms.Range == m_RangeParms.Range));
1246 QVERIFY(m_Measurement.CommFormat == m_CommFormat);
1248 std::cout <<
"- Measured Timed,0.1,1,Continuous: B = (" << m_Measurement.Bx[0] <<
", " << m_Measurement.By[0] <<
", " << m_Measurement.Bz[0] <<
") [T], "
1249 "Temp = " << m_Measurement.Temp <<
", Timestamp = " << m_Measurement.TimestampList[0] <<
", " <<
1250 m_Measurement.Warnings.size() <<
" Warnings" << std::endl;
1253 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1261 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1262 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1263 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1266 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1284void THM1176IM_Test02_Measure::TestSetOperatingMode_TriggeredContinuous(
void)
1287 QSignalSpy l_NotifyMeasurementSpy(&
Manager, SIGNAL(NotifyMeasurement(CMeasurement)));
1289 QSignalSpy l_NotifyErrorListSpy(&
Manager, SIGNAL(NotifyErrorList(CErrorList)));
1296 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
1297 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1298 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1300 if (l_NotifyOperatingModeSpy.count() <= 0)
1303 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1305 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1306 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1317 std::cout <<
"- Reset " << m_Identification.Model <<
", S/N " << m_Identification.SerialNumber << std::endl;
1322 m_Trigger.Period_s = 0.1;
1323 m_Trigger.Count = 1;
1327 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1334 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1335 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1336 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1342 QThread::currentThread()->msleep(100);
1343 for (
int i = 0; i < 10; i++)
1346 QThread::currentThread()->msleep(100);
1349 QCOMPARE(l_NotifyMeasurementSpy.count(), 1);
1350 m_Arguments = l_NotifyMeasurementSpy.takeFirst();
1351 m_Measurement = qvariant_cast<CMeasurement> (m_Arguments.at(0));
1352 QCOMPARE(m_Measurement.Bx.size(), 1ul);
1353 QCOMPARE(m_Measurement.By.size(), 1ul);
1354 QCOMPARE(m_Measurement.Bz.size(), 1ul);
1355 QCOMPARE(m_Measurement.Units,
MTL::kT);
1356 QVERIFY(m_Measurement.Temp != 0);
1357 QCOMPARE(m_Measurement.TimestampList.size(), 1ul);
1358 QVERIFY(m_Measurement.AveragingParms == m_AveragingParms);
1359 QCOMPARE(m_Measurement.TriggerParms.Source, m_Trigger.Source);
1360 QCOMPARE(m_Measurement.TriggerParms.Count, m_Trigger.Count);
1361 QCOMPARE(m_Measurement.TriggerParms.Period_s, 0.);
1362 QVERIFY(m_Measurement.OutputSelect == m_OutputSelect);
1363 QVERIFY(m_Measurement.SleepParm == m_SleepParm);
1364 QVERIFY(m_Measurement.RangeParms.Auto == m_RangeParms.Auto &&
1365 (m_RangeParms.Auto || m_Measurement.RangeParms.Range == m_RangeParms.Range));
1366 QVERIFY(m_Measurement.CommFormat == m_CommFormat);
1368 std::cout <<
"- Measured Triggered,1,Continuous: B = (" << m_Measurement.Bx[0] <<
", " << m_Measurement.By[0] <<
", " << m_Measurement.Bz[0] <<
") [T], "
1369 "Temp = " << m_Measurement.Temp <<
", Timestamp = " << m_Measurement.TimestampList[0] <<
", " <<
1370 m_Measurement.Warnings.size() <<
" Warnings" << std::endl;
1372 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1381 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1382 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1383 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1386 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1398void THM1176IM_Test02_Measure::TestSetOperatingMode_CalibrateRestore(
void)
1402 QSignalSpy l_NotifyErrorListSpy(&
Manager, SIGNAL(NotifyErrorList(CErrorList)));
1410 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
1411 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1412 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1414 if (l_NotifyOperatingModeSpy.count() <= 0)
1417 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1419 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1420 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1423 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1425 std::cout <<
"- Performed zero calibration " << m_Identification.Model <<
", S/N " << m_Identification.SerialNumber << std::endl;
1435 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
1436 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1437 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1439 if (l_NotifyOperatingModeSpy.count() <= 0)
1442 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1444 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1445 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1448 QCOMPARE(l_NotifyErrorListSpy.count(), 1);
1449 m_Arguments = l_NotifyErrorListSpy.takeFirst();
1450 m_LatestErrors = qvariant_cast<CErrorList>(m_Arguments.at(0));
1451 QCOMPARE(m_LatestErrors.size(), 1ul);
1453 std::cout <<
"- Trying to calibrate 'prohibited' model returned error: "
1454 << m_LatestErrors[0].Code <<
", "
1455 << m_LatestErrors[0].Context <<
": "
1456 << m_LatestErrors[0].Description << std::endl;
1464 QVERIFY(l_NotifyOperatingModeSpy.count() > 0);
1465 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1466 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1468 if (l_NotifyOperatingModeSpy.count() <= 0)
1471 QCOMPARE(l_NotifyOperatingModeSpy.count(), 1);
1473 m_Arguments = l_NotifyOperatingModeSpy.takeFirst();
1474 m_OperatingMode = qvariant_cast<eTHM1176OperatingMode>(m_Arguments.at(0));
1477 QCOMPARE(l_NotifyErrorListSpy.count(), 0);
1479 std::cout <<
"- Restored zero calibration " << m_Identification.Model <<
", S/N " << m_Identification.SerialNumber << std::endl;
1490void THM1176IM_Test02_Measure::TestUtilities(
void)
1496 sAveraging<uParm> l_Avg;
1497 F64 l_Period1, l_Period2, l_Period3;
1500 Q_ASSERT(
true == l_Result);
1503 Q_ASSERT(
true == l_Result);
1506 Q_ASSERT(
true == l_Result);
1507 QVERIFY(abs((l_Period2 - l_Period1) - (l_Period3 - l_Period2)) < 1E-8);
1511 CAbsoluteTimestamp l_Timestamp;
1513 Q_ASSERT(
true == l_Result);
1514 QVERIFY(l_Timestamp.
seconds() > (std::time(NULL) - 24l*60l*60l) &&
1515 l_Timestamp.
seconds() < std::time(NULL));
1519 QDateTime l_MfrDate, l_CalDate;
1521 Q_ASSERT(
true == l_Result);
1522 QVERIFY(2008 < l_MfrDate.date().year());
1523 QVERIFY((QDateTime::currentDateTime().date().year() - 3) < l_CalDate.date().year() &&
1524 QDateTime::currentDateTime().date().year() >= l_CalDate.date().year());
1532#include "THM1176IM_Test02_Measure.moc"
Interface definition for Metrolab THM1176/TFM1186 Instrument Manager.
double F64
64-bit floating-point number.
#define THM1176_PROMPT_TIME
static CTHM1176InstrumentManager Manager
#define THM1176_CONNECT_TIME
#define THM1176_BOOT_N_SCAN_TIME
static const F64 THM1176_IMMEDIATE_TIME_PER_MEAS(4.4532792007542600E+04)
#define THM1176_CHANGE_PARM_TIME
static CTHM1176InstrumentManager Manager
#define THM1176_CALIBRATE_TIME
static const F64 THM1176_IMMEDIATE_TIME_PER_ACQ(1.0281823091218700E+05)
#define THM1176_MEASURE_TIME
#define THM1176_RESET_TIME
F64 PeriodOfImmediateTrigger(sAveraging< uParm > Averaging)
static void PromptAndWait(std::string Prompt)
Data returned for one measurement.
THM1176 Instrument Manager class: public interface.
void SetAveragingParms(sAveraging< uParm > AveragingParms)
Set the averaging parameters.
sArbitraryMeasurements GetOutputSelect(void)
Get the output selection parameters.
bool ReadInformationDates(QDateTime &rManufacturingDate, QDateTime &rCalibrationDate)
Fetch the intrument's date information.
eTHM1176Units GetUnits(void)
Get the measurement units.
void SetOutputSelect(sArbitraryMeasurements OutputSelect)
Set the output selection parameters.
sInputTrigger< uParm > GetTriggerParms(void)
Get the trigger parameters.
bool ConvertTimestamp(const U64 RawTimestamp, CAbsoluteTimestamp &rTimestamp)
Convert a raw timestamp to UNIX Epoch time and nanoseconds.
eCommunicationFormat GetCommFormat(void)
Get the communication format parameters.
sAveraging< uParm > GetAveragingParms(void)
Get the averaging parameters.
bool GetImmediateMeasurementPeriod(const sAveraging< uParm > &rAvg, F64 &rPeriod)
Get measurement interval for Immediate Trigger, for a given averaging parameter.
void SetCalibrationOverride(bool Override)
Set whether or not to override the check for instruments whose zero offset should not be calibrated.
sIdentifier GetIdentification(void)
Get the current instrument's identification information.
void SendTrigger(void)
Send a bus trigger to the instrument (both slot and signal).
bool GetSleepParm(void)
Get the sleep parameter.
void SetOperatingMode(eTHM1176OperatingMode OperatingMode)
Set a new operating mode, for example to start measuring.
void SetTriggerParms(sInputTrigger< uParm > TriggerParms)
Set the trigger parameters.
void SetCommFormat(eCommunicationFormat CommFormat)
Set the communication format parameters.
void Stop(void)
Shut down the THM1176 Instrument Manager.
sRange< uParm > GetRangeParms(void)
Get the range parameters.
List of measurement units.
List of VISA resource names.
std::time_t seconds(void) const
Fetch the number of seconds.
List of divisors, one per measurement unit.
List of errors returned by the instrument.
List of flux density values.
THM1176IM_Test02_Measure()
~THM1176IM_Test02_Measure()
eCommunicationFormat
Enumeration of possible formats for returned data.
@ kComFormatInteger
Binary (32-bit integers)
@ kInputTrigSrcTimer
Timed trigger: start measurement at regular intervals.
@ kInputTrigSrcImmediate
Immediate trigger: start measurement immediately after previous one completes.
@ kInputTrigSrcBus
Bus trigger: start measurement upon USB trigger message.
std::string tResourceName
IEEE488 resource name.
static const I32 THM1176_NO_ANGLE_CORRECTION_CODE
Warning that angle correction was not applied.
eTHM1176OperatingMode
Operating modes used to initiate actions or provide status.
@ kTHM1176RestoreZeroOffset
Restore the factory zero-offset setting.
@ kTHM1176CalibrateZeroOffset
Initiate the zero-offset calibration procedure.
@ kTHM1176Reset
Reset instrument.
@ kTHM1176Measure
Start a single measurement.
@ kTHM1176MeasureContinuously
Start a continuous measurement.
@ kTHM1176Idle
Place the instrument in idle mode.
eTHM1176Units
Enumeration of possible measurement units, including "ADC".
Specify the measurement data to be returned.
ParmType< U16 > NoPoints
Number of points in block average.
DataType Val
Current value.
DataType Def
Default value.
Instrument's identification string - parsed version.
std::string Manufacturer
Manufacturer name ("Metrolab Technology SA")
U32 SerialNumber
Serial number.
std::string Model
Model name (e.g. "THM1176-MF")
Measurement range parameter.
ParmType< tFlux > Range
Measurement range, if auto-ranging is not enabled.