#include <metexascii.h>
Inheritance diagram for MetexAscii:
Public Member Functions | |
MetexAscii (const std::string &format, const std::string &overflowString, bool poll, const std::string &pollString, int pollTime) | |
Constructor. | |
virtual | ~MetexAscii () |
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_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 multimeter responds with a ascii string
14 byte format description:
MMMVVVVVVUUUUS
M: Mode
V: Value (including sign)
U: Unit
S: Sync byte (0x0d)
Definition at line 38 of file metexascii.h.
|
Constructor.
Definition at line 24 of file metexascii.cpp. References m_length, m_syncByte, and Thread::start(). |
|
Definition at line 83 of file metexascii.cpp. References SerialPort::close(), and m_port. |
|
Definition at line 156 of file dmmclass.cpp. References DMMClass::m_value. Referenced by VC820::run(), PeakTech10Ascii::run(), M9803R::run(), GDM703::setAscii(), and setMetexAscii(). |
|
Close the port.
Implements DMMClass. Definition at line 93 of file metexascii.cpp. References SerialPort::close(), and m_port. |
|
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 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 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, m_length, DMMClass::m_numValues, m_poll, m_pollString, m_port, Thread::m_run, m_syncByte, DMMClass::readData(), 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. |
|
Definition at line 98 of file metexascii.cpp. References DMMClass::addValue(), Util::fromString(), Mutex::lock(), DMMClass::m_hasValue, DMMClass::m_mode, m_modeLen, m_modeStart, DMMClass::m_mutex, DMMClass::m_overflow, m_overflowStr, DMMClass::m_unit, m_unitLen, m_unitStart, m_valueLen, m_valueStart, Util::strip_whitespace(), Mutex::unlock(), and DMMClass::value(). Referenced by run(). |
|
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(), 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 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(), run(), M9803R::run(), GDM703::run(), GDM703::setAscii(), setMetexAscii(), and DMMClass::timeout(). |
|
Definition at line 70 of file metexascii.h. Referenced by MetexAscii(), and 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 setMetexAscii(). |
|
Definition at line 72 of file metexascii.h. Referenced by setMetexAscii(). |
|
Definition at line 72 of file metexascii.h. Referenced by 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(), 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(), 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 setMetexAscii(). |
|
Definition at line 75 of file metexascii.h. Referenced by setMetexAscii(). |
|
Definition at line 76 of file metexascii.h. Referenced by run(). |
|
Definition at line 77 of file metexascii.h. Referenced by run(). |
|
Definition at line 78 of file metexascii.h. |
|
Definition at line 69 of file metexascii.h. Referenced by close(), open_impl(), run(), Metex14BytesContinuous::~Metex14BytesContinuous(), and ~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(), 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(), and run(). |
|
The unit.
Definition at line 262 of file dmmclass.h. Referenced by VC820::run(), PeakTech10Ascii::run(), M9803R::run(), GDM703::setAscii(), setMetexAscii(), and DMMClass::unit(). |
|
Definition at line 74 of file metexascii.h. Referenced by setMetexAscii(). |
|
Definition at line 74 of file metexascii.h. Referenced by 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 setMetexAscii(). |
|
Definition at line 73 of file metexascii.h. Referenced by 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(). |