SysIo  1.9.0
Embedded Library and tools
Liaison série

Detailed Description

Ce module fournit les fonctions permettant de contrôler une liaison série.

Collaboration diagram for Liaison série:

Modules

 Interface C++
 

Classes

struct  xSerialIos
 

Functions

bool bSerialFdIsValid (int fd)
 Vérifie si le descripteur de fichier est valide. More...
 
double dSerialFrameDuration (int fd, size_t ulSize)
 
double dSerialTermiosFrameDuration (const struct termios *ts, size_t ulSize)
 
eSerialDataBits eSerialGetDataBits (int fd)
 
eSerialFlow eSerialGetFlow (int fd)
 
eSerialParity eSerialGetParity (int fd)
 
eSerialStopBits eSerialGetStopBits (int fd)
 
speed_t eSerialIntToSpeed (int baud)
 
int iSerialDataAvailable (int fd)
 
int iSerialGetAttr (int fd, xSerialIos *xIos)
 
int iSerialGetBaudrate (int fd)
 
int iSerialOpen (const char *device, xSerialIos *xIos)
 
int iSerialPoll (int fd, int timeout_ms)
 
int iSerialSetAttr (int fd, const xSerialIos *xIos)
 
int iSerialSetBaudrate (int fd, int iBaudrate)
 
int iSerialSetDataBits (int fd, eSerialDataBits eDataBits)
 
int iSerialSetFlow (int fd, eSerialFlow eNewFlow)
 
int iSerialSetParity (int fd, eSerialParity eParity)
 
int iSerialSetStopBits (int fd, eSerialStopBits eStopBits)
 
int iSerialSpeedToInt (speed_t speed)
 
int iSerialTermiosGetAttr (const struct termios *ts, xSerialIos *xIos)
 
int iSerialTermiosGetBaudrate (const struct termios *ts)
 
int iSerialTermiosGetDataBits (const struct termios *ts)
 
int iSerialTermiosGetFlow (const struct termios *ts)
 
int iSerialTermiosGetParity (const struct termios *ts)
 
int iSerialTermiosGetStopBits (const struct termios *ts)
 
int iSerialTermiosSetAttr (struct termios *ts, const xSerialIos *xIos)
 
int iSerialTermiosSetBaudrate (struct termios *ts, int iBaudrate)
 
int iSerialTermiosSetDataBits (struct termios *ts, eSerialDataBits eDataBits)
 
int iSerialTermiosSetFlow (struct termios *ts, eSerialFlow eFlow)
 
int iSerialTermiosSetParity (struct termios *ts, eSerialParity eParity)
 
int iSerialTermiosSetStopBits (struct termios *ts, eSerialStopBits eStopBits)
 
const char * sSerialAttrStr (int fd)
 
const char * sSerialAttrToStr (const xSerialIos *xIos)
 
const char * sSerialDataBitsToStr (eSerialDataBits eDataBits)
 
const char * sSerialFlowToStr (eSerialFlow eFlow)
 
const char * sSerialGetFlowStr (int fd)
 
const char * sSerialParityToStr (eSerialParity eParity)
 
const char * sSerialStopBitsToStr (eSerialStopBits eStopBits)
 
const char * sSerialTermiosToStr (const struct termios *ts)
 
void vSerialClose (int fd)
 
void vSerialFlush (int fd)
 

Macros

#define EBADBAUD   (-2)
 Erreur de baudrate.
 

Typedefs

typedef struct xSerialIos xSerialIos
 

Enumerations

enum  eSerialDataBits {
  SERIAL_DATABIT_5 = 5, SERIAL_DATABIT_6 = 6, SERIAL_DATABIT_7 = 7, SERIAL_DATABIT_8 = 8,
  SERIAL_DATABIT_UNKNOWN = -1
}
 Nombre de bits de données.
 
enum  eSerialFlow {
  SERIAL_FLOW_NONE = ' ', SERIAL_FLOW_RTSCTS = 'H', SERIAL_FLOW_XONXOFF = 'S', SERIAL_FLOW_RS485_RTS_AFTER_SEND = 'R',
  SERIAL_FLOW_RS485_RTS_ON_SEND = 'r', SERIAL_FLOW_UNKNOWN = -1
}
 Type de contrôle de flux. More...
 
enum  eSerialParity {
  SERIAL_PARITY_NONE = 'N', SERIAL_PARITY_EVEN = 'E', SERIAL_PARITY_ODD = 'O', SERIAL_PARITY_SPACE = 'S',
  SERIAL_PARITY_MARK = 'M', SERIAL_PARITY_UNKNOWN = -1
}
 Parité
 
enum  eSerialStopBits { SERIAL_STOPBIT_ONE = 1, SERIAL_STOPBIT_TWO = 2, SERIAL_STOPBIT_ONEHALF = 3, SERIAL_STOPBIT_UNKNOWN }
 Nombre de bits de stop.
 

Typedef Documentation

typedef struct xSerialIos xSerialIos

#include <serial.h>

Configuration d'un port série

Enumeration Type Documentation

#include <serial.h>

Type de contrôle de flux.

Warning
Les modes RS485 ne sont pas gérés par termios (spécifiques à linux)
Enumerator
SERIAL_FLOW_NONE 

Pas de contrôle de flux

SERIAL_FLOW_RTSCTS 

Contrôle de flux matériel RTS/CTS

SERIAL_FLOW_XONXOFF 

Contrôle de flux logiciel XON/XOFF

SERIAL_FLOW_RS485_RTS_AFTER_SEND 

RS485 half-duplex, RTS au niveau logique 0 après transmission

SERIAL_FLOW_RS485_RTS_ON_SEND 

RS485 half-duplex, RTS au niveau logique 0 pendant transmission

Definition at line 78 of file include/sysio/serial.h.

Function Documentation

bool bSerialFdIsValid ( int  fd)

#include <serial.h>

Vérifie si le descripteur de fichier est valide.

Parameters
fdle descripteur de fichier du port
Returns
true si valide
double dSerialFrameDuration ( int  fd,
size_t  ulSize 
)

#include <serial.h>

Durée d'une trame de ulSize octets en secondes

Parameters
fdle descripteur de fichier du port
double dSerialTermiosFrameDuration ( const struct termios *  ts,
size_t  ulSize 
)

#include <serial.h>

Durée d'une trame de ulSize octets en secondes

eSerialDataBits eSerialGetDataBits ( int  fd)

#include <serial.h>

Lecture du nombre de bits de données

Parameters
xPortPointeur sur le port
Returns
la valeur, -1 si erreur.
eSerialFlow eSerialGetFlow ( int  fd)

#include <serial.h>

Lecture du type de contrôle de flux en cours

Parameters
xPortPointeur sur le port
Returns
la valeur, -1 si erreur.
eSerialParity eSerialGetParity ( int  fd)

#include <serial.h>

Lecture de la parité

Parameters
xPortPointeur sur le port
Returns
la valeur, -1 si erreur.
eSerialStopBits eSerialGetStopBits ( int  fd)

#include <serial.h>

Lecture du nombre de bits de stop

Parameters
xPortPointeur sur le port
Returns
la valeur, -1 si erreur.
speed_t eSerialIntToSpeed ( int  baud)

#include <serial.h>

Constante speed_t associée à une valeur en baud

int iSerialDataAvailable ( int  fd)

#include <serial.h>

Retourne le nombre d'octets en attente de lecture

Parameters
fdle descripteur de fichier du port
Returns
le nombre d'octets en attente de lecture, -1 si erreur
int iSerialGetAttr ( int  fd,
xSerialIos xIos 
)

#include <serial.h>

Lecture de configuration d'un port série

Parameters
fdle descripteur de fichier du port
xIosconfiguration du port lue
Returns
0, -1 si erreur
int iSerialGetBaudrate ( int  fd)

#include <serial.h>

Lecture de la vitesse de transmission

Parameters
xPortPointeur sur le port
Returns
la valeur, -1 si erreur.
int iSerialOpen ( const char *  device,
xSerialIos xIos 
)

#include <serial.h>

Ouverture d'un port série

Le port est ouvert en lecture/écriture non bloquante, 8 bits sans parité, 1 bit de stop.

Parameters
devicele nom du port à ouvrir (/dev/tty...)
xIosconfiguration du port
Returns
le descripteur de fichier du port ou une valeur négative sur erreur
Examples:
serial/rs485/sysio_demo_rs485.c, and serial/serial/sysio_demo_serial.c.
int iSerialPoll ( int  fd,
int  timeout_ms 
)

#include <serial.h>

Scrutation en réception du port série

Parameters
fdle descripteur de fichier du port
timeout_mstemps d'attente maximal, une valeur négative pour l'infini
Returns
le nombre d'octets en attente de lecture, -1 si erreur
int iSerialSetAttr ( int  fd,
const xSerialIos xIos 
)

#include <serial.h>

Modification de configuration d'un port série

Parameters
fdle descripteur de fichier du port
xIosconfiguration du port
Returns
0, -1 si erreur
int iSerialSetBaudrate ( int  fd,
int  iBaudrate 
)

#include <serial.h>

Modification de la vitesse de transmission

Parameters
xPortPointeur sur le port
Returns
0, -1 si erreur.
int iSerialSetDataBits ( int  fd,
eSerialDataBits  eDataBits 
)

#include <serial.h>

Modification du nombre de bits de données

Parameters
xPortPointeur sur le port
Returns
0, -1 si erreur.
int iSerialSetFlow ( int  fd,
eSerialFlow  eNewFlow 
)

#include <serial.h>

Modification du type de contrôle de flux

Parameters
xPortPointeur sur le port
Returns
0, -1 si erreur.
int iSerialSetParity ( int  fd,
eSerialParity  eParity 
)

#include <serial.h>

Modification de la parité

Parameters
xPortPointeur sur le port
Returns
0, -1 si erreur.
int iSerialSetStopBits ( int  fd,
eSerialStopBits  eStopBits 
)

#include <serial.h>

Modification du nombre de bits de stop

Parameters
xPortPointeur sur le port
Returns
0, -1 si erreur.
int iSerialSpeedToInt ( speed_t  speed)

#include <serial.h>

Baudrate associée à une constante speed_t

int iSerialTermiosGetAttr ( const struct termios *  ts,
xSerialIos xIos 
)

#include <serial.h>

Lecture de configuration d'un port série d'une structure termios

Parameters
tsstructure termios
xIosconfiguration du port lue
Returns
0, -1 si erreur
int iSerialTermiosGetBaudrate ( const struct termios *  ts)

#include <serial.h>

Baudrate d'une structure termios

int iSerialTermiosGetDataBits ( const struct termios *  ts)

#include <serial.h>

Data bits d'une structure termios

int iSerialTermiosGetFlow ( const struct termios *  ts)

#include <serial.h>

Contrôle de flux d'une structure termios La fonction retourne SERIAL_FLOW_NONE si un mode RS485 est en fonction (RS485 non géré par termios).

int iSerialTermiosGetParity ( const struct termios *  ts)

#include <serial.h>

Parité d'une structure termios

int iSerialTermiosGetStopBits ( const struct termios *  ts)

#include <serial.h>

Stop bits d'une structure termios

int iSerialTermiosSetAttr ( struct termios *  ts,
const xSerialIos xIos 
)

#include <serial.h>

Modification de configuration d'un port série d'une structure termios

Parameters
tsstructure termios
xIosconfiguration du port
Returns
0, -1 si erreur
int iSerialTermiosSetBaudrate ( struct termios *  ts,
int  iBaudrate 
)

#include <serial.h>

Modification du baudrate d'une structure termios

int iSerialTermiosSetDataBits ( struct termios *  ts,
eSerialDataBits  eDataBits 
)

#include <serial.h>

Modification data bits d'une structure termios

int iSerialTermiosSetFlow ( struct termios *  ts,
eSerialFlow  eFlow 
)

#include <serial.h>

Modification du contrôle de flux d'une structure termios La fonction règle ts à SERIAL_FLOW_NONE si un mode RS485 est demandé (RS485 non géré par termios).

int iSerialTermiosSetParity ( struct termios *  ts,
eSerialParity  eParity 
)

#include <serial.h>

Modification du parité d'une structure termios

int iSerialTermiosSetStopBits ( struct termios *  ts,
eSerialStopBits  eStopBits 
)

#include <serial.h>

Modification du stop bits d'une structure termios

const char* sSerialAttrStr ( int  fd)

#include <serial.h>

Chaîne de caractère décrivant la configuration du port

Le format est BBBBBB-DPSF avec :

  • BBBBBB Baudrate
  • D Data bits (5, 6, 7 ,8)
  • P Parité (N, E, O)
  • S Stop (1, 2)
  • F Flow (H, S, R, r)
Parameters
fdle descripteur de fichier du port
Returns
la représentation de la configuration sous forme de string, NULL si erreur.
Examples:
serial/rs485/sysio_demo_rs485.c, and serial/serial/sysio_demo_serial.c.
const char* sSerialAttrToStr ( const xSerialIos xIos)

#include <serial.h>

Chaîne de caractère décrivant la configuration correspondant aux paramètres

Le format est BBBBBB-DPSF avec :

  • BBBBBB Baudrate
  • D Data bits (5, 6, 7 ,8)
  • P Parité (N, E, O)
  • S Stop (1, 2)
  • F Flow (H, S, R, r)
Returns
la représentation de la configuration sous forme de string, NULL si erreur.
const char* sSerialDataBitsToStr ( eSerialDataBits  eDataBits)

#include <serial.h>

Chaîne de caractère correspondant à une valeur de bits de données

const char* sSerialFlowToStr ( eSerialFlow  eFlow)

#include <serial.h>

Chaîne de caractère correspondant à une valeur de contrôle de flux

const char* sSerialGetFlowStr ( int  fd)

#include <serial.h>

Lecture du type de contrôle de flux en cours sous forme "lisible"

Parameters
fdle descripteur de fichier du port
const char* sSerialParityToStr ( eSerialParity  eParity)

#include <serial.h>

Chaîne de caractère correspondant à une valeur de parité

const char* sSerialStopBitsToStr ( eSerialStopBits  eStopBits)

#include <serial.h>

Chaîne de caractère correspondant à une valeur de bits de stop

const char* sSerialTermiosToStr ( const struct termios *  ts)

#include <serial.h>

Chaîne de caractère correspondant à une structure termios

La fonction affiche SERIAL_FLOW_NONE si un mode RS485 est en fonction (RS485 non géré par termios). Le format est BBBBBB-DPSF avec :

  • BBBBBB Baudrate
  • D Data bits (5, 6, 7 ,8)
  • P Parité (N, E, O)
  • S Stop (1, 2)
  • F Flow (H, S)
void vSerialClose ( int  fd)

#include <serial.h>

Fermeture du port série

Equivaut à un appel de close() en ignorant la valeur retournée, il est donc préférable d'utiliser close() en vérifiant la valeur retournée (c.f. page man 2 close)!

Parameters
fdle descripteur de fichier du port
void vSerialFlush ( int  fd)

#include <serial.h>

Vide les buffers de réception et de transmission

Le buffer de transmission est transmis, celui de réception est vidé.

Parameters
fdle descripteur de fichier du port