C12Adapter Opensource C++ Interface
|
Serial port based channel, a null cable direct serial link or a link through a current loop adapter. More...
Public Member Functions | |
MChannelSerialPort () | |
Construct serial port channel. | |
virtual | ~MChannelSerialPort () |
Destructor. | |
virtual void | FlushOutputBuffer (unsigned numberOfCharsInBuffer=UINT_MAX) |
Ensure that the characters from the output buffer are sent. More... | |
virtual void | Connect () |
Establishes the connection to the meter using the serial port. More... | |
virtual void | Disconnect () |
Disconnect brings down the connection and releases the serial port resource. | |
virtual bool | IsConnected () const |
Returns the current connection state of the serial port channel. | |
virtual void | WaitForNextIncomingConnection (bool reinitialize=true) |
When GetAutoAnswer true, wait for the incoming connection without disconnecting the channel. More... | |
void | SetParameters (unsigned baud, int dataBits, char parity, int stopBits) |
SetParameters is a convenience function for setting the properties baud rate, number of data bits, parity, and number of stop bits in a single call. | |
bool | GetDCD () const |
The current state of the DCD signal of the port. More... | |
virtual MStdString | GetMediaIdentification () const |
Return a string that will identify the media through which this channel is talking to. More... | |
const MStdString & | GetPortName () const |
void | SetPortName (const MStdString &portName) |
unsigned | GetBaud () const |
void | SetBaud (unsigned baud) |
char | GetParity () const |
void | SetParity (char p) |
int | GetStopBits () const |
void | SetStopBits (int stopBits) |
int | GetDataBits () const |
void | SetDataBits (int dataBits) |
bool | GetCtsFlow () const |
void | SetCtsFlow (bool isCtsFlow) |
bool | GetDsrFlow () const |
void | SetDsrFlow (bool isDsrFlow) |
bool | GetDsrSensitivity () const |
void | SetDsrSensitivity (bool isDsrSens) |
char | GetDtrControl () const |
void | SetDtrControl (char dtrControl) |
char | GetRtsControl () const |
void | SetRtsControl (char rtsControl) |
MSerialPort & | GetPort () |
const MSerialPort & | GetPort () const |
![]() | |
virtual MChannel * | CreateClone () const |
Virtual copy constructor, creates the channel, which is a clone of current. More... | |
virtual | ~MChannel () |
The destructor is public, and virtual. More... | |
void | WriteBytes (const MByteString &buffer) |
Writes the data to the channel, and returns when the last byte has been sent by the software. More... | |
void | WriteByte (Muint8 b) |
Writes a byte to the channel, and returns when it has been sent. More... | |
void | WriteBuffer (const char *buf, unsigned len) |
Writes the data buffer to the channel, and returns when the last character has been sent by the software (but hardware might still need to do some work). More... | |
Muint8 | ReadByte () |
Read a single byte from the channel. More... | |
void | ReadBuffer (char *buf, unsigned numberToRead) |
Read an exact number of characters from the channel. More... | |
void | Unread (const MVariant &byteOrBytes) |
Return the given byte or bytes to the stream buffer so they get read at the next read operation. More... | |
void | UnreadBuffer (const char *buff, unsigned size) |
Return the given bytes to the stream buffer so they get read at the next read operation. More... | |
MByteString | ReadBytes (unsigned numberToRead) |
Read bytes directly from the communication channel. More... | |
MByteString | ReadBytesUntil (const MByteString &terminatingString) |
Read bytes from the channel until a specified sequence is read. More... | |
MByteString | ReadBytesUntilAnyByte (const char *finisher, unsigned finisherSize, unsigned headerSize, unsigned footerSize) |
Read bytes from the channel until a specified sequence is read. More... | |
MByteString | ReadAllBytes () |
Read an arbitrary number of characters from the channel, as much as available. More... | |
void | ClearInputBuffer () |
Immediately discards all the pending characters from the channel. More... | |
void | ClearInputUntilSilence (unsigned milliseconds) |
Keep reading and ignoring input until there is silence. More... | |
virtual void | CheckIfConnected () |
Throw an appropriate exception if the channel is not connected. More... | |
void | CheckIfConnectedConst () const |
Throw an appropriate exception if the channel is not connected, constant version. More... | |
unsigned | GetCountBytesSent () const |
Number of bytes sent through the channel since its creation or since the last ResetCounts(). More... | |
unsigned | GetCountBytesReceived () const |
The number of bytes received through the channel since creation or since the last ResetCounts(). More... | |
void | ResetCounts () |
Reset channel statistical data, so the counters become zeros. More... | |
virtual void | WriteToMonitor (const MStdString &message) |
Synchronously write a message to the monitor, if it is connected. More... | |
virtual void | CancelCommunication (bool callDisconnect=false) |
Request canceling of the communication. More... | |
void | EnterUninterruptibleCommunication (bool notify=true) |
Enter a communication sequence that shall not be be interrupted with CancelCommunication call. More... | |
void | LeaveUninterruptibleCommunication (bool notify=true) |
Leave a communication sequence that shall not be be interrupted with CancelCommunication call. More... | |
void | CheckIfOperationIsCancelled () |
Check if the user has requested the termination of the communication, and whether the cancel operation lock is zero. More... | |
void | Sleep (unsigned milliseconds) |
Channel version of Sleep, a delay function that is aware of cancel communication event. More... | |
unsigned | ReadWithTimeout (char *buf, unsigned size, unsigned timeout) |
Read up to size bytes into buffer using the given timeout. More... | |
bool | GetAutoAnswer () const |
void | SetAutoAnswer (bool isAutoAnswer) |
unsigned | GetAutoAnswerTimeout () const |
void | SetAutoAnswerTimeout (unsigned timeout) |
void | SetMonitor (MMonitor::Pointer monitor) |
MMonitor::Pointer | GetMonitor () const |
SHOW_INTERNAL bool | GetEcho () const |
void | SetEcho (bool echo) |
bool | GetSendEchoBytesToMonitor () const |
void | SetSendEchoBytesToMonitor (bool doSend) |
unsigned | GetIntercharacterTimeout () const |
void | SetIntercharacterTimeout (unsigned timeout) |
unsigned | GetReadTimeout () const |
void | SetReadTimeout (unsigned timeout) |
unsigned | GetWriteTimeout () const |
void | SetWriteTimeout (unsigned timeout) |
![]() | |
virtual | ~MCOMObject () |
Object destructor. | |
virtual MStdStringVector | GetAllPropertyNames () const |
Return the list of publicly available properties in MCOM syntax. More... | |
virtual MStdStringVector | GetAllPersistentPropertyNames () const |
Return the list of publicly available persistent properties in MCOM syntax. More... | |
MStdString | GetPersistentPropertyValues (bool onlyNondefaults=false, bool excludeSecurityRelated=false) const |
Get the string with the list of persistent property names and their values. More... | |
void | SetPersistentPropertyValues (const MStdString &values) |
Set the persistent properties for the object using the string with the following format: More... | |
void | SetPropertyValues (const MDictionary &values) |
Set the properties for the object using the property list object. More... | |
void | WritePropertiesToMonitor () |
Write all non-default values of protocol properties into monitor. More... | |
MStdString | DoGetPersistentPropertyValues0 () const |
Get the string with the whole list of persistent property names and their values. More... | |
MStdString | DoGetPersistentPropertyValues1 (bool onlyNondefaults) const |
Get the string with the list of persistent property names and their values. More... | |
![]() | |
virtual | ~MObject () |
Object destructor. | |
virtual const MClass * | GetClass () const =0 |
Get the final class of the object. More... | |
virtual unsigned | GetEmbeddedSizeof () const |
For embedded object types, return the size of the class. More... | |
bool | IsEmbeddedObject () const |
Tell if the object is of embedded kind. More... | |
SHOW_INTERNAL MVariant | Call (const MStdString &name, const MVariant ¶ms) |
Call the object service with parameters, given as variant. More... | |
MVariant | Call0 (const MStdString &name) |
Call the object service with no parameters. More... | |
MVariant | Call1 (const MStdString &name, const MVariant &p1) |
Call the object service with one parameter. More... | |
MVariant | Call2 (const MStdString &name, const MVariant &p1, const MVariant &p2) |
Call the object service with two parameter. More... | |
MVariant | Call3 (const MStdString &name, const MVariant &p1, const MVariant &p2, const MVariant &p3) |
Call the object service with three parameter. More... | |
MVariant | Call4 (const MStdString &name, const MVariant &p1, const MVariant &p2, const MVariant &p3, const MVariant &p4) |
Call the object service with four parameter. More... | |
MVariant | Call5 (const MStdString &name, const MVariant &p1, const MVariant &p2, const MVariant &p3, const MVariant &p4, const MVariant &p5) |
Call the object service with five parameter. More... | |
MVariant | Call6 (const MStdString &name, const MVariant &p1, const MVariant &p2, const MVariant &p3, const MVariant &p4, const MVariant &p5, const MVariant &p6) |
Call the object service with six parameter. More... | |
virtual MVariant | CallV (const MStdString &name, const MVariant::VariantVector ¶ms) |
Call the object service with parameters, given as variant vector. More... | |
virtual bool | IsPropertyPresent (const MStdString &name) const |
Tell if the property with the given name exists. | |
virtual bool | IsServicePresent (const MStdString &name) const |
Tell if the service with the given name exists. | |
virtual MVariant | GetProperty (const MStdString &name) const |
Get the property value using name of the property. More... | |
virtual void | SetProperty (const MStdString &name, const MVariant &value) |
Set the property using name of the property, and value. More... | |
virtual void | SetPersistentPropertiesToDefault () |
Set the persistent properties of the object to their default values. More... | |
virtual MVariant | GetPersistentPropertyDefaultValue (const MStdString &name) const |
Get the default value of persistent property with the name given. More... | |
virtual void | SetPersistentPropertyToDefault (const MStdString &name) |
Set the persistent property with the name given to default value. More... | |
virtual const char * | GetType () const |
Get the name of the type for the object (could be the same as class name). | |
virtual void | SetType (const MStdString &) |
Intentionally, it will set the name of the type for the object, but the service will not allow setting the name to anything other than the current name. More... | |
virtual void | Validate () |
Validate internal structures of the object. More... | |
Static Public Member Functions | |
static MStdStringVector | GetAvailablePortNames (bool addExtraInfo=false) |
Return a collection of serial port names available at this computer. More... | |
static MStdString | GetPortType (const MStdString &portName) |
Get type based on the port name. More... | |
![]() | |
static const MClass * | GetStaticClass () |
Get the declared class of this particular object. More... | |
static bool | IsClassPresent (const MStdString &name) |
Tells if the given class name is available. More... | |
Additional Inherited Members | |
![]() | |
enum | { CANCEL_COMMUNICATION_CHECK_OPTIMUM_INTERVAL = 1000 } |
![]() | |
static const MClass | s_class |
Class of MObject. | |
![]() | |
MChannel () | |
Construct the channel object from parent class. More... | |
![]() | |
MCOMObject () | |
Object constructor, protected as the class is abstract. | |
![]() | |
MObject () | |
Object constructor, protected as the class is abstract. | |
void | DoSetPersistentPropertiesToDefault (const MClass *staticClass) |
Set the persistent properties to their default values for one object provided the class for that object. More... | |
Serial port based channel, a null cable direct serial link or a link through a current loop adapter.
It forms the basic interface to the rest of the COM port based channels and MChannel Type's MChannelOpticalProbe and MChannelModem inherit their properties from MChannelSerialPort. Many properties of MChannelSerialPort are controlled by the communication protocols or by the child channels; however, an advanced user can override the values set by the protocols and children channels at any time to achieve advanced behavior for test purposes.
|
virtual |
Establishes the connection to the meter using the serial port.
Reimplemented from MChannel.
Reimplemented in MChannelOpticalProbe, and MChannelModem.
|
virtual |
Ensure that the characters from the output buffer are sent.
numberOfCharsInBuffer | If specified, should match the number of characters written into the serial port right before FlushOutputBuffer is called. If the parameter is missing, the biggest possible number of characters will be flushed. |
Implements MChannel.
|
inlinestatic |
Return a collection of serial port names available at this computer.
Names returned can be given to GetPortName. The returned names are operating system dependent.
addExtraInfo | whether to add any extra information about the port, useful for users to select the port. |
|
inline |
Get the baud rate of the channel, BAUD public attribute.
Serial data rate as defined by the RS-232 standard. The channels, MChannelSerialPort, MChannelCurrentLoop, MChannelModem, and MChannelModemCallback have full control of the value of the Baud property and their client protocols will not make any attempt to change it. When using MChannelSerialPort, make sure that the meter configuration matches the channel settings.
In contrast, MChannelOpticalProbe, child of MChannelSerialPort, this property is controlled by the protocols.
|
inline |
Flag to enable Clear To Send (CTS) flow control on the serial port.
Use caution when setting this property, as the protocols might override this value while communicating.
|
inline |
The number of Data bits in a serial data frame.
The protocols impose their own restrictions on the data bits, and they handle this property during communication. For MChannelModem and MChannelModemCallback, this property has to be set in a way that is compatible with both the modem and the protocol.
Only an advanced user would change this property for MChannelCurrentLoop, MChannelSerialPort, and MChannelOpticalProbe. For example, to ensure the proper display of the communication error code by the meter.
|
inline |
The current state of the DCD signal of the port.
|
inline |
Flag to enable Data Set Ready (DSR) flow control on the serial port.
Use caution when setting this property, as the protocols might override this value while communicating.
|
inline |
Flag to set the level sense of the Data Set Ready (DSR) signal for the serial port.
Use caution when setting this property, as the protocols might override this value while communicating.
|
inline |
Sets the Data Terminal Ready (DTR) control mode for the serial port.
Use caution when overwriting this property, as the protocols impose their own restrictions on the DTR control, and they handle this property during communication. For example, setting the value of MChannelOpticalProbe::GetBatteryState will affect the value of DtrControl.
|
virtual |
Return a string that will identify the media through which this channel is talking to.
For serial port based channels, it will return a host name, SERIAL string, and port name.
Implements MChannel.
|
inline |
Sets the parity bit mode for the serial data frame.
The protocols impose their own restrictions on the data bits, and they handle this property during communication. For MChannelModem and MChannelModemCallback, this property has to be set in a way that is compatible with both the modem and the protocol.
Only an advanced user would change this property for MChannelCurrentLoop, MChannelSerialPort, and MChannelOpticalProbe. For example, to ensure the proper display of the communication error code by the meter.
|
inline |
Access serial port system object.
|
inline |
Access serial port system object.
|
inline |
Port name is the file name which is used by the operating system to open the port, OS dependent.
Name of the communication port. The port name is determined by the operating system.
|
inlinestatic |
Get type based on the port name.
Provides information about underlying port technology. When such information is not available, for example the given port name is not present, an empty string is returned. Otherwise the string returned can be one of the following types:
All known port types will always appear in lowercase. Unknown port types will preserve the letter case defined by the operating system. The port will not be opened by the call.
This is a static method as it allows getting information without opening the port. A string is returned rather than an enumeration as it allows returning useful information even when the port type is not recognized and classified.
portName | Name of the port such as "COM11" on Windows or "/dev/ttyS0" on Linux |
|
inline |
Request To Send (RTS) control mode for the serial port.
The protocols impose their own restrictions on the data bits, and they handle this property during communication. For MChannelModem and MChannelModemCallback, this property has to be set in a way that is compatible with the modem.
|
inline |
The number of stop-bits in a serial data frame.
The protocols impose their own restrictions on the data bits, and they handle this property during communication. For MChannelModem and MChannelModemCallback, this property has to be set in a way that is compatible with both the modem and the protocol.
Only an advanced user would change this property for MChannelCurrentLoop, MChannelSerialPort and MChannelOpticalProbe. For example, to ensure the proper display of the communication error code by the meter.
|
inline |
Get the baud rate of the channel, BAUD public attribute.
Serial data rate as defined by the RS-232 standard. The channels, MChannelSerialPort, MChannelCurrentLoop, MChannelModem, and MChannelModemCallback have full control of the value of the Baud property and their client protocols will not make any attempt to change it. When using MChannelSerialPort, make sure that the meter configuration matches the channel settings.
In contrast, MChannelOpticalProbe, child of MChannelSerialPort, this property is controlled by the protocols.
|
inline |
Flag to enable Clear To Send (CTS) flow control on the serial port.
Use caution when setting this property, as the protocols might override this value while communicating.
|
inline |
The number of Data bits in a serial data frame.
The protocols impose their own restrictions on the data bits, and they handle this property during communication. For MChannelModem and MChannelModemCallback, this property has to be set in a way that is compatible with both the modem and the protocol.
Only an advanced user would change this property for MChannelCurrentLoop, MChannelSerialPort, and MChannelOpticalProbe. For example, to ensure the proper display of the communication error code by the meter.
|
inline |
Flag to enable Data Set Ready (DSR) flow control on the serial port.
Use caution when setting this property, as the protocols might override this value while communicating.
|
inline |
Flag to set the level sense of the Data Set Ready (DSR) signal for the serial port.
Use caution when setting this property, as the protocols might override this value while communicating.
|
inline |
Sets the Data Terminal Ready (DTR) control mode for the serial port.
Use caution when overwriting this property, as the protocols impose their own restrictions on the DTR control, and they handle this property during communication. For example, setting the value of MChannelOpticalProbe::GetBatteryState will affect the value of DtrControl.
|
inline |
Sets the parity bit mode for the serial data frame.
The protocols impose their own restrictions on the data bits, and they handle this property during communication. For MChannelModem and MChannelModemCallback, this property has to be set in a way that is compatible with both the modem and the protocol.
Only an advanced user would change this property for MChannelCurrentLoop, MChannelSerialPort, and MChannelOpticalProbe. For example, to ensure the proper display of the communication error code by the meter.
void MChannelSerialPort::SetPortName | ( | const MStdString & | portName | ) |
Port name is the file name which is used by the operating system to open the port, OS dependent.
Name of the communication port. The port name is determined by the operating system.
|
inline |
Request To Send (RTS) control mode for the serial port.
The protocols impose their own restrictions on the data bits, and they handle this property during communication. For MChannelModem and MChannelModemCallback, this property has to be set in a way that is compatible with the modem.
|
inline |
The number of stop-bits in a serial data frame.
The protocols impose their own restrictions on the data bits, and they handle this property during communication. For MChannelModem and MChannelModemCallback, this property has to be set in a way that is compatible with both the modem and the protocol.
Only an advanced user would change this property for MChannelCurrentLoop, MChannelSerialPort and MChannelOpticalProbe. For example, to ensure the proper display of the communication error code by the meter.
|
virtual |
When GetAutoAnswer true, wait for the incoming connection without disconnecting the channel.
A typical server application sequence that uses this call:
reinitialize | Tells if reinitialization of the channel has to be made at each new incoming connection. |
Reimplemented from MChannel.
Reimplemented in MChannelModem.