This tutorial shows the basic steps to perform any serial port configuration through the RComm API.
Load the CSY and open a port.
Get the capabilities
of the port by calling RComm::Caps()
The capabilities of the port are in the TCommCaps structure. For example, TCommCapsV01.iStopBits specifies the number of stop bits the port can manage.
Note: Port capabilities are never exclusive. A port that can manage a speed of 50 bps may also be able to manage faster speeds as well. Most fields inTCommsCaps
are bit fields which bitmasks must be used
to determine all the capabilities. An example bitmask for the TCommCapsV01.iRate field
is KCapsBps19200.
These same fields in the configuration class TCommConfig are
enumerations. For example, TCommCapsV01.iRate is a TUint since
it is a bitfield. TCommConfigV01.iRate is an enumeration
of type TBps.
RComm::Config()
with the aConfig
parameter
set to the TCommConfigV01
object to get the port configuration.
TCommConfigV01
object.
For example, set the iSIREnable flag to enable Infrared.
RComm::Config()
with the TCommConfigV01
object
as the aConfig
parameter.
The port is now configured.
Tip: In cases where the application is written for a specific device, the application may skip the capability check since the capabilities are known at the time of manufacture.
The following code uses Caps()
to
find out if its desired port configuration of 19200 bps and 8 data bits with
no parity and one stop bit is possible:
TCommCaps ourCapabilities; commPort.Caps (ourCapabilities); if (((ourCapabilities ().iRate & KCapsBps19200) == 0)|| ((ourCapabilities ().iDataBits & KCapsData8) == 0)|| ((ourCapabilities ().iStopBits & KCapsStop1) == 0)|| ((ourCapabilities ().iParity & KCapsParityNone) == 0)) User::Leave (KErrNotSupported) ;
The following code configures the speed settings for a port.
TCommConfig portSettings; commPort.Config (portSettings); portSettings ().iRate = EBps19200; portSettings ().iParity = EParityNone; portSettings ().iDataBits = EData8; portSettings ().iStopBits = EStop1; r = commPort.SetConfig (portSettings); User::LeaveIfError (r);