#include <iocbuvmonitor.h>
Inheritance diagram for IOCBUVMonitor:
Public Member Functions | |
IOCBUVMonitor () | |
virtual | ~IOCBUVMonitor () |
virtual Port::Error | close () |
Close the port. | |
Port::Error | open (const std::string &config) |
Open the port. | |
void | setNumValues (int num) |
Set number of values this partucular multimeter provides. | |
int | numValues () |
Return number of values this partucular multimeter provides. | |
std::string | mode (int i=0) |
The current measurement mode. | |
std::string | unit (int i=0) |
String representation of the unit. | |
double | value (int i=0) |
The measured value. | |
bool | hasValue () |
Do we have a measurement already? | |
bool | overflow () |
An overflow happened. | |
bool | lowBat () |
Battery is low. | |
void | setConsoleLogging (bool on) |
bool | timeout () const |
Check if there was a timeout. | |
int | start () |
Start the thread. | |
void | wait () |
Wait for the thread to finish (no timeout!). | |
void | stop () |
Gracefully stop the thread. | |
void | quit () |
Forcibly stop thread. | |
bool | running () const |
Is the thread running? | |
Static Public Member Functions | |
static DMMClass * | create () |
static DMMClass * | create_protocol (std::string protocolName) |
Create an instance of the given protocol. | |
static int | num_protocols () |
Return number of known protocols. | |
static Protocol | protocol (int i) |
Return protocol description. | |
static std::string | print_protocols () |
Return list of known protocol names separated by ' '. | |
static std::string | print_devices () |
Return list of known devices separated by ' '. | |
static bool | has_device (const std::string &deviceName) |
Test if the devicename is known. | |
static Device | get_device (const std::string &deviceName) |
Get device description. | |
static std::string | html_device_table () |
static std::string | device_table () |
Protected Member Functions | |
virtual Port::Error | open_impl (const std::string &config) |
Open the port (the real thing). | |
virtual void | run () |
The main loop. | |
void | setMetexAscii (const std::string &str, int index) |
int | readData (Port *port, unsigned char *buffer, int syncByte, int minLen, int maxLen) const |
void | addValue (double value, int index) |
Protected Attributes | |
SerialPort | m_port |
int | m_length |
int | m_syncByte |
int | m_modeStart |
int | m_modeLen |
int | m_valueStart |
int | m_valueLen |
int | m_unitStart |
int | m_unitLen |
std::string | m_overflowStr |
bool | m_poll |
std::string | m_pollString |
int | m_pollTime |
time_t | m_openTime |
Seconds since epoch when port was opened. This is needed for the timeout. | |
bool | m_hasValue |
Set to true if a valid value has been read. | |
int | m_numValues |
Stores the number of values this multimeter provides. | |
bool | m_overflow |
Set to true if an overflow happened (And clear if the overflow condition is gone). | |
bool | m_lowBat |
Set true if multimeter indicates low battery state. | |
Mutex | m_mutex |
Hold this mutex when reading or writing values. | |
std::string | m_mode [8] |
The mode. | |
std::string | m_unit [8] |
The unit. | |
double | m_value [8] |
The value. | |
bool | m_consoleLogging |
bool | m_run |
pthread_t | m_pthread |
Static Protected Attributes | |
static Protocol | s_protocol [] |
static Device | s_device [] |
The device responds with it's 14 byte string (ASCII) after receiving the sequence D, 0x0d. This is the MAX132 based device used by the Institute of Organic Chemistry and Biochemistry in Czech Republic (Radek Liboska)
Format description:
MMVVVVVVVUUUUS
M: Mode
V: Value (including sign)
U: Unit
S: Sync byte (0x0d)
Poll once a second with "D\r"
Definition at line 41 of file iocbuvmonitor.h.
|
Definition at line 22 of file iocbuvmonitor.cpp. |
|
Definition at line 27 of file iocbuvmonitor.cpp. |
|
Definition at line 156 of file dmmclass.cpp. References DMMClass::m_value. Referenced by VC820::run(), PeakTech10Ascii::run(), M9803R::run(), GDM703::setAscii(), and MetexAscii::setMetexAscii(). |
|
Close the port.
Implements DMMClass. Definition at line 93 of file metexascii.cpp. References SerialPort::close(), and MetexAscii::m_port. |
|
Definition at line 47 of file iocbuvmonitor.h. |
|
Create an instance of the given protocol.
Definition at line 199 of file dmmclass.cpp. References DMMClass::Protocol::createFunction, DMMClass::num_protocols(), and DMMClass::s_protocol. |
|
Return table with information about all known devices Definition at line 295 of file dmmclass.cpp. References DMMClass::Device::brand, DMMClass::Device::name, DMMClass::numValues(), DMMClass::Device::port, and DMMClass::s_device. |
|
Get device description.
Definition at line 278 of file dmmclass.cpp. References DMMClass::Device::brand, DMMClass::Device::name, DMMClass::numValues(), and DMMClass::s_device. |
|
Test if the devicename is known.
Definition at line 260 of file dmmclass.cpp. References DMMClass::Device::brand, DMMClass::Device::name, DMMClass::numValues(), and DMMClass::s_device. |
|
Do we have a measurement already?
Definition at line 121 of file dmmclass.h. References DMMClass::m_hasValue, and DMMClass::m_mutex. |
|
Return HTML table with information about all known devices Definition at line 355 of file dmmclass.cpp. References DMMClass::Device::brand, DMMClass::Device::name, DMMClass::numValues(), DMMClass::Device::port, and DMMClass::s_device. |
|
Battery is low. The Implementation of the multimeter class has to take care of this. Definition at line 133 of file dmmclass.h. References DMMClass::m_lowBat, and DMMClass::m_mutex. |
|
The current measurement mode. The specific implementation must set these to one of the following (The GUI QtDMM depends on this).
Definition at line 144 of file dmmclass.cpp. References DMMClass::m_mode, and DMMClass::m_mutex. |
|
Return number of known protocols.
Definition at line 212 of file dmmclass.cpp. References DMMClass::count_protocols(). Referenced by DMMClass::create_protocol(). |
|
Return number of values this partucular multimeter provides. Some multimeter may have more than on value. This class supports up to 8 values.
Definition at line 85 of file dmmclass.h. References DMMClass::m_numValues. Referenced by DMMClass::device_table(), DMMClass::get_device(), DMMClass::has_device(), DMMClass::html_device_table(), and DMMClass::print_devices(). |
|
Open the port.
Definition at line 130 of file dmmclass.cpp. References DMMClass::m_openTime, and DMMClass::open_impl(). |
|
Open the port (the real thing).
Implements DMMClass. Definition at line 88 of file metexascii.cpp. References MetexAscii::m_port, and SerialPort::open(). |
|
An overflow happened. The Implementation of the multimeter class has to take care of this. Definition at line 127 of file dmmclass.h. References DMMClass::m_mutex, and DMMClass::m_overflow. |
|
Return list of known devices separated by '
Definition at line 244 of file dmmclass.cpp. References DMMClass::Device::brand, DMMClass::Device::name, DMMClass::numValues(), and DMMClass::s_device. |
|
Return list of known protocol names separated by '
Definition at line 228 of file dmmclass.cpp. References DMMClass::Protocol::menuText, DMMClass::Protocol::name, and DMMClass::s_protocol. |
|
Return protocol description.
Definition at line 221 of file dmmclass.h. References DMMClass::s_protocol. |
|
Forcibly stop thread. Not recommended as this might leak resources Definition at line 52 of file thread.cpp. |
|
Helper function. Read data from the given port.
Definition at line 167 of file dmmclass.cpp. References DMMClass::m_consoleLogging, Port::Ok, and Port::readByte(). Referenced by MetexAscii::run(), M9803R::run(), GDM703::run(), and Escort97::run(). |
|
The main loop. Continuously read the multimeter here (And do whatever is needed to make the multimeter send values [polling]). New values have to be filled into m_value, m_mode and m_unit. Hold the mutex while doing so. Example: ... we assume a 14 byte protocol ...
unsigned char buffer[64];
while (m_run) { int cnt = readData( buffer );
if (-1 != cnt) { unsigned char *byte = buffer+cnt-14;
... decode the raw multimeter data ...
m_mutex.lock(); m_value[0] = ... m_unit[0] = ... m_mode[0] = ... m_hasValue = true; m_mutex.unlock(); } } Implements DMMClass. Definition at line 119 of file metexascii.cpp. References DMMClass::m_hasValue, MetexAscii::m_length, DMMClass::m_numValues, MetexAscii::m_poll, MetexAscii::m_pollString, MetexAscii::m_port, Thread::m_run, MetexAscii::m_syncByte, DMMClass::readData(), MetexAscii::setMetexAscii(), Thread::start(), and Port::writeString(). |
|
Is the thread running?
Definition at line 62 of file thread.h. References Thread::m_run. |
|
Definition at line 135 of file dmmclass.h. References DMMClass::m_consoleLogging. |
|
|
Set number of values this partucular multimeter provides. Some multimeter may have more than on value. This class supports up to 8 values.
Definition at line 78 of file dmmclass.h. References DMMClass::m_numValues. Referenced by Escort97::Escort97(), and GDM703::GDM703(). |
|
Start the thread.
Definition at line 39 of file thread.cpp. References Thread::m_pthread, Thread::m_run, and Thread::start_thread(). Referenced by MetexAscii::MetexAscii(), MetexAscii::run(), and GDM703::run(). |
|
Gracefully stop the thread.
Definition at line 54 of file thread.h. References Thread::m_run. |
|
Check if there was a timeout. If the multimeter didn't send data for 5 seconds this goes true Definition at line 137 of file dmmclass.cpp. References DMMClass::m_hasValue, and DMMClass::m_openTime. |
|
String representation of the unit. Example: V, mV, uV, A, uA, nF, mH, MOhm, kOhm.
Definition at line 150 of file dmmclass.cpp. References DMMClass::m_mutex, and DMMClass::m_unit. |
|
The measured value.
Definition at line 161 of file dmmclass.cpp. References DMMClass::m_mutex, and DMMClass::m_value. Referenced by PeakTech10Ascii::run(), GDM703::setAscii(), and MetexAscii::setMetexAscii(). |
|
Wait for the thread to finish (no timeout!).
Definition at line 47 of file thread.cpp. References Thread::m_pthread. |
|
Definition at line 265 of file dmmclass.h. Referenced by DMMClass::readData(), and DMMClass::setConsoleLogging(). |
|
Set to true if a valid value has been read.
Definition at line 250 of file dmmclass.h. Referenced by DMMClass::hasValue(), VC820::run(), PeakTech10Ascii::run(), MetexAscii::run(), M9803R::run(), GDM703::run(), GDM703::setAscii(), MetexAscii::setMetexAscii(), and DMMClass::timeout(). |
|
Definition at line 70 of file metexascii.h. Referenced by MetexAscii::MetexAscii(), and MetexAscii::run(). |
|
Set true if multimeter indicates low battery state.
Definition at line 256 of file dmmclass.h. Referenced by DMMClass::lowBat(), and VC820::run(). |
|
The mode.
Definition at line 260 of file dmmclass.h. Referenced by DMMClass::mode(), VC820::run(), PeakTech10Ascii::run(), M9803R::run(), GDM703::setAscii(), and MetexAscii::setMetexAscii(). |
|
Definition at line 72 of file metexascii.h. Referenced by MetexAscii::setMetexAscii(). |
|
Definition at line 72 of file metexascii.h. Referenced by MetexAscii::setMetexAscii(). |
|
Hold this mutex when reading or writing values.
Definition at line 258 of file dmmclass.h. Referenced by DMMClass::hasValue(), DMMClass::lowBat(), DMMClass::mode(), DMMClass::overflow(), VC820::run(), PeakTech10Ascii::run(), M9803R::run(), GDM703::setAscii(), MetexAscii::setMetexAscii(), DMMClass::unit(), and DMMClass::value(). |
|
Stores the number of values this multimeter provides.
Definition at line 252 of file dmmclass.h. Referenced by DMMClass::numValues(), MetexAscii::run(), and DMMClass::setNumValues(). |
|
Seconds since epoch when port was opened. This is needed for the timeout.
Definition at line 248 of file dmmclass.h. Referenced by DMMClass::open(), and DMMClass::timeout(). |
|
Set to true if an overflow happened (And clear if the overflow condition is gone).
Definition at line 254 of file dmmclass.h. Referenced by DMMClass::overflow(), M9803R::run(), GDM703::setAscii(), and MetexAscii::setMetexAscii(). |
|
Definition at line 75 of file metexascii.h. Referenced by MetexAscii::setMetexAscii(). |
|
Definition at line 76 of file metexascii.h. Referenced by MetexAscii::run(). |
|
Definition at line 77 of file metexascii.h. Referenced by MetexAscii::run(). |
|
Definition at line 78 of file metexascii.h. |
|
Definition at line 69 of file metexascii.h. Referenced by MetexAscii::close(), MetexAscii::open_impl(), MetexAscii::run(), Metex14BytesContinuous::~Metex14BytesContinuous(), and MetexAscii::~MetexAscii(). |
|
Definition at line 66 of file thread.h. Referenced by Thread::start(), and Thread::wait(). |
|
Definition at line 65 of file thread.h. Referenced by VC820::run(), PeakTech10Ascii::run(), MetexAscii::run(), M9803R::run(), GDM703::run(), Escort97::run(), Thread::running(), Thread::start(), and Thread::stop(). |
|
Definition at line 71 of file metexascii.h. Referenced by MetexAscii::MetexAscii(), and MetexAscii::run(). |
|
The unit.
Definition at line 262 of file dmmclass.h. Referenced by VC820::run(), PeakTech10Ascii::run(), M9803R::run(), GDM703::setAscii(), MetexAscii::setMetexAscii(), and DMMClass::unit(). |
|
Definition at line 74 of file metexascii.h. Referenced by MetexAscii::setMetexAscii(). |
|
Definition at line 74 of file metexascii.h. Referenced by MetexAscii::setMetexAscii(). |
|
The value.
Definition at line 264 of file dmmclass.h. Referenced by DMMClass::addValue(), and DMMClass::value(). |
|
Definition at line 73 of file metexascii.h. Referenced by MetexAscii::setMetexAscii(). |
|
Definition at line 73 of file metexascii.h. Referenced by MetexAscii::setMetexAscii(). |
|
Definition at line 268 of file dmmclass.h. Referenced by DMMClass::device_table(), DMMClass::get_device(), DMMClass::has_device(), DMMClass::html_device_table(), and DMMClass::print_devices(). |
|
Initial value: { Protocol( &Metex14BytesPolling::create, "M14P", "Metex 14 bytes ASCII polling" ), Protocol( &Metex14BytesContinuous::create, "M14C", "Metex 14 bytes ASCII continuous" ), Protocol( &Metex15BytesContinuous::create, "M15C", "Metex 15 bytes ASCII continuous" ), Protocol( &VC820::create, "VC820", "VC820 14 bytes binary continuous" ), Protocol( &M9803R::create, "M9803R", "M9803R 12 bytes binary continuous" ), Protocol( &IOCBUVMonitor::create, "IOCB", "IOCB UV Monitor" ), Protocol( &PeakTech10Ascii::create, "PT10A", "Peaktech 11 bytes ASCII" ), Protocol( &GDM703::create, "GDM703", "GDM703 26 bytes binary continuous" ), Protocol( &Escort97::create, "ESC97", "Escort 97 binary continuous" ), Protocol( 0, "", "" ) } Definition at line 267 of file dmmclass.h. Referenced by DMMClass::count_protocols(), DMMClass::create_protocol(), DMMClass::print_protocols(), and DMMClass::protocol(). |