Table des Matières du Kit de Périphérique | Index du Kit de Périphérique |
Hérite de: aucun
Déclaré dans: be/device/SerialPort.h
Bibliothèque: libdevice.so
Un objet BSerialPort représente une connexion série RS-232 pour l'ordinateur. A travers les fonctions de BSerialPort, vous pouvez lire les données reçues par un port série et écrire les données à travers la connexion. Vous pouvez aussi configurer la connexion pour, par exemple, initialiser le nombre de données et bits d'arrêt, déterminer la fréquence à laquelle les données seront envoyées et reçues, et sélectionner le type de contrôle de flux (matériel ou logiciel) qui devra être utilisé.
Pour lire et écrire les données, un objet BSerialPort doit d'abord ouvrir un des ports série par nom. Pour trouver les noms de tous les ports série sur l'ordinateur, utilisez les fonctions: CountDevices() et GetDeviceName()
BSerialPort serial; char devName[B_OS_NAME_LENGTH]; int32 n = 0; for (int32 n = serial.CountDevices()-1; n >= 0; n--) { serial.GetDeviceName(n, devName); if ( serial.Open(devName) > 0 ) .... }
L'objet BSerialPort communique avec le driver pour le port qu'il a d'ouvert. Le driver gère un tableau d'entrées pour collecter les données entrantes et un petit tableau de sorties pour conserver les données sortantes. Quand l'objet lira et écrira des données, il lira à partir de, et écrira vers, ces tableaux.
Les drivers de port série, et donc les objets BSerialPort, envoient et reçoivent seulement des données asynchrones.
|
Initialise l'objet BSerialPort avec les valeurs par défaut suivantes:
Le nouvel objet ne représente pas de port série particulier. Après la construction, il est nécessaire d'ouvrir un des ports par nom.
Le type de flux de contrôle doit être choisi avant qu'un port ne soit ouvert. Mais les autres initialisations par défaut listées ci-dessus peuvent être changées avant ou après l'ouverture d'un port.
Voir aussi: Open()
|
S'assure que le port est fermé avant que l'objet ne soit détruit.
|
Ces fonctions vident les tableaux d'entrées et de sorties du driver de port série, de façon à ce que le contenu du tableau d'entrées ne soit pas lu (par la fonction Read() ) et que le contenu du tableau de sorties (après avoir été écrit par Write()) ne soit pas transmis à travers la connexion.
Les tableaux sont effacés automatiquement quand un port est ouvert.
Voir aussi: Read(), Write(), Open()
|
Retourne true si la broche Clear to Send (CTS) (Effacer à Envoyer) est validée, et false sinon.
|
Retourne true si la broche Data Carrier Detect (DCD) (Détection de Retenue de Donnée) est validée, et false sinon.
|
Retourne true si la broche Data Set Ready (DSR) (Prêt pour Initialisation de Donnée) est validée, et false sinon.
|
Retourne true si la broche Ring Indicator (RI) (Indicateur d'Anneau) est validée, et false sinon.
|
Ces fonctions ouvrent le port série name et le ferme aussitôt. Pour obtenir un nom de port de série, utilisez la fonction GetDeviceName(); un exemple est montré dans l'introduction .
Pour être capable de lire et d'écrire une donnée, l'objet BSerialPort doit avoir un port ouvert. Il peut ouvrir d'abord un port puis un autre, mais il ne peut pas avoir plus d'un port ouvert en même temps. S'il a déjà un port ouvert quand Open() est appelée, ce port est fermé avant qu'un essai ne soit effectué pour ouvrir le port name. (Ainsi, à la fois Open() et Close() ferment le port ouvert courant.)
Open() ne peut ouvrir le port name si une autre entité l'a déjà ouvert. (Si BSerialPort lui-même a déjà name ouvert, Open() le ferme d'abord, puis le réouvre à nouveau.)
Quand un port série est ouvert, ses tableaux d'entrées et sorties sont vidés et la broche Data Terminal Ready (DTR) (Terminal de Donnée Prêt) est validée.
CODES DE RETOUR
entiers positifs (pas 0). Succès.
|
Read() prend la donnée entrante depuis le driver de port série et la place dans le tableau de données buffer fourni. En aucun cas il ne sera lu plus de maxBytes—une valeur qui devra refléter la capacité du tableau buffer. Le tableau d'entrées du driver, à partir duquel Read() prend les données, contient un maximum de 2,024 octets (2048 sur le matériel Mac). Cette fonction échoue si l'objet BSerialPort n'a pas de port ouvert.
Le nombre d'octets que Read() lira avant de se terminer ne dépend pas seulement de maxBytes, mais aussi du drapeau shouldBlock et du timeout initialisé par les deux autres fonctions.
L'initialisation par défaut de shouldBlock est true.
Il n'y a pas de temps limite si timeout est initialisé à B_INFINITE_TIMEOUT — Read() (et WaitForInput()) bloquera indéfiniment. Autrement, timeout est exprimé en microsecondes et peut aller d'un minimum de 100,000 (0.1 second) jusqu'à un maximum de 25,500,000 (25.5 secondes); les différences de moins de 100,000 microsecondes ne sont pas reconnues; elles sont arrondies au centième de seconde le plus proche.
CODES DE RETOUR
Read() retourne...
CODES DE RETOUR
SetTimeout() retourne...
|
Ces fonctions intialisent et retournent les caractéristiques de l'unité série utilisée pour envoyer et recevoir des données.
|
Ces fonctions initialisent et retournent la fréquence (en bits par seconde) à laquelle les données sont à la fois transmises et reçues.
La fréquence de données par défaut est B_19200_BPS. Si la fréquence est initialisée à 0 (B_0_BPS), les données seront envoyées et reçues en un nombre indéterminé de bits par seconde.
CODES DE RETOUR
SetDataRate() retourne...
|
Valide la broche Data Terminal Ready (DTR) (Terminal de Données Prêt) si le drapeau pinAsserted est true, et l'invalide si le drapeau est false. La fonction devrait toujours retourner B_OK.
|
Ces fonctions initialisent et retournent le type de contrôle de flux que le driver doit utiliser.Il y a quatre possibilités:
SetFlowControl() devrait être appelé avant qu'un port série spécifique ne soit ouvert. Vous ne pouvez pas changer le type de flux de contrôle que le driver utilise en milieu de (transmission de) flot.
|
Valide la broche Request to Send (RTS)(Demander pour Envoyer) si le drapeau pinAsserted est true, et l'invalide si le drapeau est false. La fonction retourne toujours B_OK.
|
Attend que la donnée en entrée arrive sur le port série et retourne le nombre d'octets disponibles pour être lus. Si la donnée attend déjà, la fonction se termine immédiattement.
Cette fonction ne tient pas compte du drapeau initialisé par SetBlocking(); elle bloque même si blocking et mis à off pour la fonction Read() . Cependant, elle tient compte de timeout initialisé par SetTimeout(). Si le délai expire avant que les données soient arrivées au port série, elle retourne 0.
|
Ecrit jusqu'à numBytes de données data dans le tableau de sortie du port série. Cette fonction réussira à écrire la donnée seulement si l'objet BSerialPort a un port ouvert. Le tableau de sortie contient un maximum de 512 ctets (1024 sur le matériel Mac).
CODES DE RETOUR
entier positif ou nul. Succés; la valeur est le nombre d'octets qui ont été écrits.
Table des Matières du Kit de Périphérique | Index du Kit de Périphérique |
Copyright © 2000 Be, Inc. All rights reserved..