Medical Imaging Interaction Toolkit  2018.4.99-bd7b41ba
Medical Imaging Interaction Toolkit
mitk::SerialCommunication Class Reference

serial communication interface More...

#include <mitkSerialCommunication.h>

Inheritance diagram for mitk::SerialCommunication:
Collaboration diagram for mitk::SerialCommunication:

Public Types

enum  PortNumber {
  COM1, COM2, COM3, COM4,
  COM5, COM6, COM7, COM8,
  COM9, COM10, COM11, COM12,
  COM13
}
 
enum  BaudRate {
  BaudRate9600, BaudRate14400, BaudRate19200, BaudRate38400,
  BaudRate57600, BaudRate115200, BaudRate230400, BaudRate460800,
  BaudRate500000, BaudRate576000, BaudRate921600, BaudRate1000000,
  BaudRate1152000, BaudRate1500000, BaudRate2000000, BaudRate2500000,
  BaudRate3000000, BaudRate3500000, BaudRate4000000
}
 
enum  DataBits { DataBits8, DataBits7 }
 
enum  Parity { None, Odd, Even }
 
enum  StopBits { StopBits1, StopBits2 }
 
enum  HardwareHandshake { HardwareHandshakeOn, HardwareHandshakeOff }
 

Public Member Functions

 mitkClassMacroItkParent (SerialCommunication, itk::Object)
 
Pointer Clone () const
 
bool IsConnected ()
 Returns m_Connected. More...
 
int OpenConnection ()
 Opens connection to the COM port with port number m_PortNumber or the device name m_DeviceName and all port settings. More...
 
void CloseConnection ()
 Closes the connection. More...
 
int Receive (std::string &answer, unsigned int numberOfBytes, const char *eol=nullptr)
 Read numberOfBytes characters from the serial interface. More...
 
int Send (const std::string &input, bool block=false)
 Send the string input. More...
 
void SendBreak (unsigned int ms=400)
 Send the break signal for ms milliseconds. More...
 
void ClearReceiveBuffer ()
 erase the receive buffer of the serial interface More...
 
void ClearSendBuffer ()
 erase the send buffer of the serial interface More...
 
virtual PortNumber GetPortNumber () const
 Get the port number of the serial interface. More...
 
virtual void SetPortNumber (PortNumber _arg)
 Set the port number of the serial interface. More...
 
virtual const char * GetDeviceName () const
 Get the device name. More...
 
virtual void SetDeviceName (const char *_arg)
 Set the device name. More...
 
virtual BaudRate GetBaudRate () const
 Get the baud rate of the serial interface. More...
 
virtual void SetBaudRate (BaudRate _arg)
 Set the baud rate of the serial interface. More...
 
virtual DataBits GetDataBits () const
 Get the number of data bits of the serial interface. More...
 
virtual void SetDataBits (DataBits _arg)
 Set the number of data bits of the serial interface. More...
 
virtual Parity GetParity () const
 Get the parity mode of the serial interface. More...
 
virtual void SetParity (Parity _arg)
 Set the parity mode of the serial interface. More...
 
virtual StopBits GetStopBits () const
 Get number of stop bits of the serial interface. More...
 
virtual void SetStopBits (StopBits _arg)
 Set number of stop bits of the serial interface. More...
 
virtual HardwareHandshake GetHardwareHandshake () const
 returns true if hardware handshake should is used More...
 
virtual void SetHardwareHandshake (HardwareHandshake _arg)
 Set if hardware handshake should be used. More...
 
virtual unsigned int GetSendTimeout () const
 returns the send timeout in milliseconds More...
 
virtual void SetSendTimeout (unsigned int _arg)
 set the send timeout in milliseconds More...
 
virtual unsigned int GetReceiveTimeout () const
 returns the receive timeout in milliseconds More...
 
virtual void SetReceiveTimeout (unsigned int _arg)
 set the send timeout in milliseconds More...
 

Static Public Member Functions

static Pointer New ()
 

Protected Member Functions

 SerialCommunication ()
 
 ~SerialCommunication () override
 
int ApplyConfiguration ()
 configures the serial interface with all parameters More...
 
int ApplyConfigurationUnix ()
 Applies the configuration for Linux. More...
 

Protected Attributes

std::string m_DeviceName
 device name that is used to connect to the serial interface (will be used if != "") More...
 
PortNumber m_PortNumber
 port number of the device More...
 
BaudRate m_BaudRate
 baud rate of the serial interface connection More...
 
DataBits m_DataBits
 number of data bits per symbol More...
 
Parity m_Parity
 parity mode More...
 
StopBits m_StopBits
 number of stop bits per symbol More...
 
HardwareHandshake m_HardwareHandshake
 whether to use hardware handshake for the connection More...
 
unsigned int m_ReceiveTimeout
 timeout for receiving data from the serial interface in milliseconds More...
 
unsigned int m_SendTimeout
 timeout for sending data to the serial interface in milliseconds More...
 
bool m_Connected
 is set to true if a connection currently established More...
 
int m_FileDescriptor
 

Detailed Description

serial communication interface

Documentation This class allows to send and receive data over a serial communication interface (COM Port). Define the serial interface that should be used either with SetPortNumber() or SetDeviceName() Next, define communication parameters: baud rate, number of data bits, number of stop bits, parity mode, usage of hardware handshake and timeout values (in ms). Use OpenConnection() to establish a connection on the serial interface with the selected parameters. While the connection is established, changes to the parameters will not take effect. You have to close the connection using CloseConnection() and then reopen it with the new parameters with OpenConnection().

Definition at line 43 of file mitkSerialCommunication.h.

Member Enumeration Documentation

◆ BaudRate

Enumerator
BaudRate9600 
BaudRate14400 
BaudRate19200 
BaudRate38400 
BaudRate57600 
BaudRate115200 
BaudRate230400 
BaudRate460800 
BaudRate500000 
BaudRate576000 
BaudRate921600 
BaudRate1000000 
BaudRate1152000 
BaudRate1500000 
BaudRate2000000 
BaudRate2500000 
BaudRate3000000 
BaudRate3500000 
BaudRate4000000 

Definition at line 67 of file mitkSerialCommunication.h.

◆ DataBits

Enumerator
DataBits8 
DataBits7 

Definition at line 91 of file mitkSerialCommunication.h.

◆ HardwareHandshake

Enumerator
HardwareHandshakeOn 
HardwareHandshakeOff 

Definition at line 110 of file mitkSerialCommunication.h.

◆ Parity

Enumerator
None 
Odd 
Even 

Definition at line 97 of file mitkSerialCommunication.h.

◆ PortNumber

Enumerator
COM1 
COM2 
COM3 
COM4 
COM5 
COM6 
COM7 
COM8 
COM9 
COM10 
COM11 
COM12 
COM13 

Definition at line 50 of file mitkSerialCommunication.h.

◆ StopBits

Enumerator
StopBits1 
StopBits2 

Definition at line 104 of file mitkSerialCommunication.h.

Constructor & Destructor Documentation

◆ SerialCommunication()

mitk::SerialCommunication::SerialCommunication ( )
protected

Definition at line 34 of file mitkSerialCommunication.cpp.

References INVALID_HANDLE_VALUE, m_FileDescriptor, and mitk::None.

◆ ~SerialCommunication()

mitk::SerialCommunication::~SerialCommunication ( )
overrideprotected

Definition at line 47 of file mitkSerialCommunication.cpp.

References CloseConnection().

Member Function Documentation

◆ ApplyConfiguration()

int mitk::SerialCommunication::ApplyConfiguration ( )
protected

configures the serial interface with all parameters

This automatically reroutes the call to the hardware specific function

Definition at line 264 of file mitkSerialCommunication.cpp.

References ApplyConfigurationUnix(), ERROR_VALUE, HardwareHandshakeOn, INVALID_HANDLE_VALUE, m_BaudRate, m_DataBits, m_HardwareHandshake, m_Parity, m_ReceiveTimeout, m_SendTimeout, m_StopBits, and OK.

Referenced by OpenConnection().

◆ ApplyConfigurationUnix()

int mitk::SerialCommunication::ApplyConfigurationUnix ( )
protected

◆ ClearReceiveBuffer()

void mitk::SerialCommunication::ClearReceiveBuffer ( )

erase the receive buffer of the serial interface

Definition at line 490 of file mitkSerialCommunication.cpp.

References INVALID_HANDLE_VALUE, and m_FileDescriptor.

Referenced by CloseConnection().

◆ ClearSendBuffer()

void mitk::SerialCommunication::ClearSendBuffer ( )

erase the send buffer of the serial interface

Definition at line 501 of file mitkSerialCommunication.cpp.

References INVALID_HANDLE_VALUE, and m_FileDescriptor.

Referenced by CloseConnection().

◆ Clone()

Pointer mitk::SerialCommunication::Clone ( ) const

◆ CloseConnection()

void mitk::SerialCommunication::CloseConnection ( )

Closes the connection.

Definition at line 116 of file mitkSerialCommunication.cpp.

References ClearReceiveBuffer(), ClearSendBuffer(), INVALID_HANDLE_VALUE, m_Connected, and m_FileDescriptor.

Referenced by ~SerialCommunication().

◆ GetBaudRate()

virtual BaudRate mitk::SerialCommunication::GetBaudRate ( ) const
virtual

Get the baud rate of the serial interface.

◆ GetDataBits()

virtual DataBits mitk::SerialCommunication::GetDataBits ( ) const
virtual

Get the number of data bits of the serial interface.

◆ GetDeviceName()

virtual const char* mitk::SerialCommunication::GetDeviceName ( ) const
virtual

Get the device name.

SerialCommunication can either use m_PortNumber to create serial interface device names or use m_DeviceName directly. This method allows to set an arbitrary device name that will be used to connect to the device. Common names are COM1, CNCA0, CNCB9 on windows and /dev/ttyS0 or /dev/ttyUSB0 on linux.

◆ GetHardwareHandshake()

virtual HardwareHandshake mitk::SerialCommunication::GetHardwareHandshake ( ) const
virtual

returns true if hardware handshake should is used

◆ GetParity()

virtual Parity mitk::SerialCommunication::GetParity ( ) const
virtual

Get the parity mode of the serial interface.

◆ GetPortNumber()

virtual PortNumber mitk::SerialCommunication::GetPortNumber ( ) const
virtual

Get the port number of the serial interface.

Returns the port number that will be used in the connection. The port number is only used if the m_DeviceName is empty ("").

◆ GetReceiveTimeout()

virtual unsigned int mitk::SerialCommunication::GetReceiveTimeout ( ) const
virtual

returns the receive timeout in milliseconds

◆ GetSendTimeout()

virtual unsigned int mitk::SerialCommunication::GetSendTimeout ( ) const
virtual

returns the send timeout in milliseconds

◆ GetStopBits()

virtual StopBits mitk::SerialCommunication::GetStopBits ( ) const
virtual

Get number of stop bits of the serial interface.

◆ IsConnected()

bool mitk::SerialCommunication::IsConnected ( )

Returns m_Connected.

Definition at line 52 of file mitkSerialCommunication.cpp.

References m_Connected.

◆ mitkClassMacroItkParent()

mitk::SerialCommunication::mitkClassMacroItkParent ( SerialCommunication  ,
itk::Object   
)

◆ New()

static Pointer mitk::SerialCommunication::New ( )
static

◆ OpenConnection()

int mitk::SerialCommunication::OpenConnection ( )

Opens connection to the COM port with port number m_PortNumber or the device name m_DeviceName and all port settings.

Definition at line 57 of file mitkSerialCommunication.cpp.

References ApplyConfiguration(), ERROR_VALUE, INVALID_HANDLE_VALUE, m_Connected, m_DeviceName, m_FileDescriptor, m_PortNumber, and OK.

◆ Receive()

int mitk::SerialCommunication::Receive ( std::string &  answer,
unsigned int  numberOfBytes,
const char *  eol = nullptr 
)

Read numberOfBytes characters from the serial interface.

This method tries to read numberOfBytes characters from the serial interface or until an eol byte is received, whichever comes first. If The ReceiveTimeout is set to 0, the Receive() method will wait indefinetly until all characters are received or an eol character is received. If the ReceiveTimeout is set to another value, it will return after m_ReceiveTimeout milliseconds (or after all characters are read or an eol character is received).

Parameters
[out]answerString that stores the received characters. Note that this will overwrite the content of answer!
[in]numberOfBytesThe number of bytes to read. When an eol character is used this is interpretted as the maximum number of bytes to read.
[in]eolPointer to an End-of-Line character. If this is nullptr (the default) then no End-of-Line character is used.

Definition at line 144 of file mitkSerialCommunication.cpp.

References ERROR_VALUE, INVALID_HANDLE_VALUE, m_Connected, m_FileDescriptor, and OK.

◆ Send()

int mitk::SerialCommunication::Send ( const std::string &  input,
bool  block = false 
)

Send the string input.

Parameters
[in]inputThe string to send to the serial interface. The string termination character \0 is not sent.
[in]blockIf false, the this method will return immediately. If true, this method will block until all bytes have been physically transmitted over the serial interface.

Definition at line 222 of file mitkSerialCommunication.cpp.

References ERROR_VALUE, INVALID_HANDLE_VALUE, m_Connected, m_FileDescriptor, and OK.

◆ SendBreak()

void mitk::SerialCommunication::SendBreak ( unsigned int  ms = 400)

Send the break signal for ms milliseconds.

Definition at line 471 of file mitkSerialCommunication.cpp.

References INVALID_HANDLE_VALUE, and m_FileDescriptor.

◆ SetBaudRate()

virtual void mitk::SerialCommunication::SetBaudRate ( BaudRate  _arg)
virtual

Set the baud rate of the serial interface.

◆ SetDataBits()

virtual void mitk::SerialCommunication::SetDataBits ( DataBits  _arg)
virtual

Set the number of data bits of the serial interface.

◆ SetDeviceName()

virtual void mitk::SerialCommunication::SetDeviceName ( const char *  _arg)
virtual

Set the device name.

if the device name is set (!=""), OpenConnection() will try to open the serial device on that device name. Normally, the serial interfaces are named COM1-COM9 on windows and /dev/ttyS0 to /dev/ttyS9 on linux, but other names are possible too (e.g. /dev/ttyUSB0).

◆ SetHardwareHandshake()

virtual void mitk::SerialCommunication::SetHardwareHandshake ( HardwareHandshake  _arg)
virtual

Set if hardware handshake should be used.

◆ SetParity()

virtual void mitk::SerialCommunication::SetParity ( Parity  _arg)
virtual

Set the parity mode of the serial interface.

◆ SetPortNumber()

virtual void mitk::SerialCommunication::SetPortNumber ( PortNumber  _arg)
virtual

Set the port number of the serial interface.

SerialCommunication can either use PortNumber to create serial interface device names COM1 to COM9 for windows and /dev/ttyS0 to /dev/ttyS8 on linux (SetPortNumber(COM1) is mapped to /dev/ttyS0 and so on). Alternatively, use SetDeviceName() to set the device name directly (e.g. "CNCA0" for a com0com virtual com port or "/dev/ttyUSB0" for a USB to serial adapter on linux. If a device name is set (m_DeviceName != "") then OpenConnection() will try to open that device. Otherwise, it will build the device name using the port number

◆ SetReceiveTimeout()

virtual void mitk::SerialCommunication::SetReceiveTimeout ( unsigned int  _arg)
virtual

set the send timeout in milliseconds

Specify the receive timeout in milliseconds. Setting this value to 0 will cause the Receive() method to wait until all expected characters are received.

◆ SetSendTimeout()

virtual void mitk::SerialCommunication::SetSendTimeout ( unsigned int  _arg)
virtual

set the send timeout in milliseconds

Only applies to WIN32, not POSIX

◆ SetStopBits()

virtual void mitk::SerialCommunication::SetStopBits ( StopBits  _arg)
virtual

Set number of stop bits of the serial interface.

Member Data Documentation

◆ m_BaudRate

BaudRate mitk::SerialCommunication::m_BaudRate
protected

baud rate of the serial interface connection

Definition at line 327 of file mitkSerialCommunication.h.

Referenced by ApplyConfiguration(), and ApplyConfigurationUnix().

◆ m_Connected

bool mitk::SerialCommunication::m_Connected
protected

is set to true if a connection currently established

Definition at line 335 of file mitkSerialCommunication.h.

Referenced by CloseConnection(), IsConnected(), OpenConnection(), Receive(), and Send().

◆ m_DataBits

DataBits mitk::SerialCommunication::m_DataBits
protected

number of data bits per symbol

Definition at line 328 of file mitkSerialCommunication.h.

Referenced by ApplyConfiguration(), and ApplyConfigurationUnix().

◆ m_DeviceName

std::string mitk::SerialCommunication::m_DeviceName
protected

device name that is used to connect to the serial interface (will be used if != "")

Definition at line 325 of file mitkSerialCommunication.h.

Referenced by OpenConnection().

◆ m_FileDescriptor

int mitk::SerialCommunication::m_FileDescriptor
protected

◆ m_HardwareHandshake

HardwareHandshake mitk::SerialCommunication::m_HardwareHandshake
protected

whether to use hardware handshake for the connection

Definition at line 331 of file mitkSerialCommunication.h.

Referenced by ApplyConfiguration(), and ApplyConfigurationUnix().

◆ m_Parity

Parity mitk::SerialCommunication::m_Parity
protected

parity mode

Definition at line 329 of file mitkSerialCommunication.h.

Referenced by ApplyConfiguration(), and ApplyConfigurationUnix().

◆ m_PortNumber

PortNumber mitk::SerialCommunication::m_PortNumber
protected

port number of the device

Definition at line 326 of file mitkSerialCommunication.h.

Referenced by OpenConnection().

◆ m_ReceiveTimeout

unsigned int mitk::SerialCommunication::m_ReceiveTimeout
protected

timeout for receiving data from the serial interface in milliseconds

Definition at line 332 of file mitkSerialCommunication.h.

Referenced by ApplyConfiguration(), and ApplyConfigurationUnix().

◆ m_SendTimeout

unsigned int mitk::SerialCommunication::m_SendTimeout
protected

timeout for sending data to the serial interface in milliseconds

Definition at line 333 of file mitkSerialCommunication.h.

Referenced by ApplyConfiguration().

◆ m_StopBits

StopBits mitk::SerialCommunication::m_StopBits
protected

number of stop bits per symbol

Definition at line 330 of file mitkSerialCommunication.h.

Referenced by ApplyConfiguration(), and ApplyConfigurationUnix().


The documentation for this class was generated from the following files: