Communiquer avec un périphérique branché sur un port série RS232 en C

Documents pareils
Systèmes d exploitation

Suivant les windows, le signal pour indiquer l imprimante par défaut est un petit rond noir ou vers avec un V à l intérieur.

ANALYSE TRAMEs LIAISON SERIE

COMMUTEL PRO VM3 INTERFACE GSM VOIX POUR EMULATION DE LIGNE RTC ET TRANSMETTEUR DE SMS D ALERTES ET TECHNIQUES.

COMMUNICATION PC/MINITEL

PocketNet SNMP/Modbus

ALERT NOTICE D UTILISATION DU DRIVER SIA

Messages d'erreurs. Redémarrez votre PC en cliquant sur Démarrer, en sélectionnant ensuite Arrêter puis en cochant Redémarrer

Programmation d un contrôleur via une liaison téléphonique Note d application

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

ENVOI EN NOMBRE DE MESSAGES AUDIO

Configurer ma Livebox Pro pour utiliser un serveur VPN

Elle supporte entièrement la gestion de réseau sans fil sous Windows 98SE/ME/2000/XP.

ALERT NOTICE D UTILISATION DU DRIVER VOCALYS. (Cesa 200 bauds / Contact-ID)

SAGEM Wi-Fi 11g USB ADAPTER Guide de mise en route rapide

But de cette présentation

ProCod. Manuel d utilisation. Software de programmation pour codeurs absolus TWK modèles CRF et DAF CRF DF 08 / 10

Transmissions série et parallèle

GUIDE D INSTALLATION DES DRIVERS

CLIP. (Calling Line Identification Presentation) Appareil autonome affichant le numéro appelant

Tutorial Terminal Server sous

NOTIONS DE RESEAUX INFORMATIQUES

Guide d installation et d utilisation

NanoSense. Protocole Modbus de la sonde Particules P4000. (Version 01F)

CARTE INTERFACE PCI PARALLÈLE

La Carte d Identité Electronique

Nb. De pages : 24 MANGO. Manuel d'utilisation. Version 1.2. décembre 2010

Matériel & Logiciels (Hardware & Software)

Connexion à distance. Pour configurer les automates Beckhoff via un PC de programmation VERSION : 1.0 / PH

COUR D APPEL DE LYON PROCEDURE INFORMATIQUE IMPRIMANTES. Imprimantes SAR de Lyon / Novembre 2007 Page 1 sur 14

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

MANUEL D INSTALLATION

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

Formateurs : Jackie DAÖN Franck DUBOIS Médiapôle de Guyancourt

Installation & Mode d emploi WL400 Adaptateur/Antenne Wifi

DIFF AVANCÉE. Samy.

Guide d installation des pilotes MF

BIND : installer un serveur DNS

Configurer l adressage des serveurs et des clients

NOTICE D UTILISATION ET D INSTALLATION. de la CARTE MONITORING DE RELAIS «IO-MONITOR»

2. Pour accéder au Prêt numérique, écrivez dans la barre d adresse de votre navigateur Web.

TD 1 - Transmission en bande de passe

Connexion sur REDLION G-308 avec le modem GSM GDW-11 pour envoi de SMS

Master d'informatique 1ère année Réseaux et protocoles. Couche physique

Ajouter de la mémoire à son ordinateur

Summary / Sommaire. 1 Install DRIVER SR2 USB01 Windows seven 64 bits / Installation du DRIVER SR2 USB01 Windows seven 64 bits 2

LE MICRO ORDINATEUR. Introduction Architecture Les supports amovibles Les composants Le système d exploitation Les portables

1/ Pré requis techniques pour l installation du logiciel complet de gestion commerciale Wingsm en version Hyper File :

Tutorial créer une machine virtuell.doc Page 1/9

LOGICIEL ALARM MONITORING

WINDOWS NT 2000: Travaux Pratiques. -Boîtier partage d'imprimante- Michel Cabaré Janvier 2002 ver 1.0

qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasd fghjklzxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcvbnmq

Guide d installation esam

How To? Sécurité des réseaux sans fils

2. Pour accéder au Prêt numérique, écrivez dans la barre d adresse de votre navigateur Web.

GESTION DE L'ORDINATEUR

LOGICIEL DC4D MONITOR

Tutorial Ophcrack. I) Ophcrack en API. (ou comment utiliser Ophcrack pour recouvrir un mot de passe sous Windows XP et Windows Vista)

GUIDE D UTILISATION ADSL ASSISTANCE

Guide d'utilisateur. Câble adaptateur USB2.0 vers IDE et SATA. Modèle : DA-70202

MANUEL UTILISATEUR DU RECEPTEUR HAICOM HI-303MMF

système sécurisé de gestion du liquide

Version janvier Manuel d'utilisation. Adaptateur Ethernet rapide 10/100 USB 2.0

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Backup Exec 2014 Management Pack for Microsoft SCOM. - Guide de l'utilisateur

Manuel d aide à la pose

CSI351 Systèmes d exploitation Instructions pour rouler Linux avec Virtual PC dans la salle de labo 2052

TAI049 Utiliser la virtualisation en assistance et en dépannage informatique TABLE DES MATIERES

Ordinateurs, Structure et Applications

L'USB et Windows XP. Tout d'abord, il faut connaître un peu de vocabulaire pour s'y retrouver par la suite :

Programmation C. Apprendre à développer des programmes simples dans le langage C

Système M-Bus NIEVEAU TERRAIN NIVEAU AUTOMATION NIVEAU GESTION. Domaines d'application

GenIP 30i : Passerelle intelligente dédiée aux applications industrielles les plus critiques

Les réseaux informatiques

Plan du Travail. 2014/2015 Cours TIC - 1ère année MI 30

Le Network File System de Sun (NFS)

Mettre Linux sur une clé USB bootable et virtualisable

Projet Robot Centaure

Linux embarqué: une alternative à Windows CE?

Windows Internet Name Service (WINS)

Utilisation du visualiseur Avermedia

Ecran programmable. Testez la différence grâce. à sa puissance, sa rapidité. et ses possibilités réseaux

Systèmes et Réseaux (ASR 2) - Notes de cours Cours 14

Accès à un coupleur/contrôleur Ethernet via une liaison téléphonique

"! "#$ $ $ ""! %#& """! '& ( ")! )*+

FICHE DE COURS RESEAU POSTE A POSTE BAC PRO SYSTEMES ELECTRONIQUES NUMERIQUES Champ Professionnel : Télécommunications et Réseaux

TCHATONS PAR LIAISON SANS FIL BLUETOOTH

Master d'informatique 1ère année. Réseaux et protocoles. Architecture : les bases

PROCÉDURE D'INSTALLATION WINDOWS 7 (32 ou 64 bit)

SOMMAIRE. Chapitre 1 - principe 3 Téléphonique 4 PC/Configuration logicielle 4 PC/Configuration matérielle: 4 Pabx 4

Prérequis techniques pour l installation du logiciel Back-office de gestion commerciale WIN GSM en version ORACLE

clé Internet 3g+ Guide d installation

Mes documents Sauvegardés

/ / / Système de distribution audio A44/A88 Logiciel PC

PRODUCTION ASSOCIEE. Le réseau de la M2L est organisé VLANs et comporte des commutateurs de niveau 2 et des routeurs.

Informatique Générale Les réseaux

La sécurité dans un réseau Wi-Fi

Transcription:

Communiquer avec un périphérique branché sur un port série RS232 en C 1. Windows en utilisant l'api Win32 Aide: MSDN (MicroSoft Developer Network, http://msdn.microsoft.com/en-us/library/, rubrique MSDN Library\Windows Development\System Services\Device Services\Communications Resources). a) Fonctions utiles CreateFile() GetCommState() (GetCommTimeouts()) SetCommState() (SetCommTimeouts()) (PurgeComm()) WriteFile() ReadFile() CloseHandle() CreateFile() b) Description rapide des fonctions importantes Nom du port série (EX: \\.\COM4 mais attention, dans une fonction en C, le caractère '\' est un caractère spécial, il faut le précéder d'un autre '\' pour qu'il soit bien pris en compte, ce qui donnerait au final "\\\\.\\COM4". De plus, on pourrait utiliser "COM4" tout simplement, mais pour les ports >= 10, il faut obligatoirement rajouter "\\.\") où est branché le périphérique avec lequel on veut communiquer. Les numéros des ports disponibles sur l'ordinateur sont visibles dans Panneau de configuration\système\matériel\gestionnaire de périphériques\ports (COM et LPT). Il reste alors à déterminer quel numéro est le bon s'il y en a plusieurs (on peut aussi modifier le numéro du port et d'autres options dans les propriétés avancées du port). Valeur de retour: une sorte d'identifiant représentant le port ouvert, que l'on doit passer par la suite en paramètre de toutes les autres fonctions (WriteFile(), CloseHandle(),...) Rôle: Ouvre le port série voulu et retourne un identifiant s'il n'y a pas de problèmes. GetCommState() Structure recevant les options actuelles du port série. Voir la documentation pour toutes les options.

Rôle: Obtient les options actuelles du port série (vitesse, nombre de bits de parité, nombre de bits de stop, taille d'une trame de données, contrôle de flux,...). Il est souvent pratique d'appeler cette fonction avant SetCommState() pour ne pas être obligé de se préoccuper aussi des options que l'on ne souhaite pas modifier. SetCommState() Structure contenant les options à appliquer au port série. Voir la documentation pour toutes les options. Rôle: Modifie les options du port série (vitesse, nombre de bits de parité, nombre de bits de stop, taille d'une trame de données, contrôle de flux,...). Les options à modifier sont souvent la vitesse (baudrate), le nombre de bits de parité et de stop. WriteFile() Tableau d'entiers 8 bits (=1 octet ou byte) contenant les données à envoyer. Il faut consulter la documentation du périphérique pour savoir ce qu'il faut envoyer selon ce qu'on veut qu'il fasse et nous renvoie. Un protocole plus ou moins compliqué peut être utilisé. Note : les bits de parité et de stop liés au protocole RS232 ne sont pas à prendre en compte (le système saura les rajouter si on a spécifié les bonnes options avec SetCommState()), seules les données utiles sont à envoyer. Par contre, le périphérique peut fonctionner avec un protocole qui lui est propre (imbriqué dans le protocole RS232), mettant en jeu des notions de bits de parité, de stop, checksums, qu il faut alors considérer. Nombre d'octets à envoyer (nécessairement inférieur ou égal à la taille du tableau). Nombre d'octets réellement envoyés. Il faut vérifier cette valeur après l'appel de la fonction car toutes les données voulues ne sont pas toujours envoyées. Il faut alors rappeler la fonction pour qu'elle envoie les données manquantes (attention à ne pas renvoyer une 2ème fois les données déjà transmises). Rôle: Envoie des données au périphérique via le port série. Attention au format des données (données constituées d'entiers entre -128 et 127, 0 et 255, sous forme de caractères, entiers hexadécimaux,...), aux temps de communication et au fait que le tableau donné en paramètre n'est pas forcément toujours envoyé entièrement en une fois. Ce comportement peut être modifié en réglant des options de timeouts appropriées. Voir la documentation pour plus d'informations. ReadFile()

Tableau d'entiers 8 bits (=1 octet ou byte) recevant les données envoyées par le périphérique. Il faut consulter la documentation du périphérique pour savoir comment analyser les données reçues et y récupérer les valeurs qui nous intéressent. Un protocole plus ou moins compliqué peut être utilisé. Note : les bits de parité et de stop liés au protocole RS232 ne sont pas visibles (le système les a déjà utilisés et effacés si on a spécifié les bonnes options avec SetCommState()), seules les données utiles sont récupérées. Par contre, le périphérique peut fonctionner avec un protocole qui lui est propre (imbriqué dans le protocole RS232), mettant en jeu des notions de bits de parité, de stop, checksums, qu il faut alors considérer. Nombre d'octets à attendre (nécessairement inférieur ou égal à la taille du tableau). Nombre d'octets réellement reçus. Il faut vérifier cette valeur après l'appel de la fonction car toutes les données attendues ne sont pas toujours reçues. Il faut alors rappeler la fonction pour qu'elle essaye de récupérer les données manquantes (attention, rappeler ReadFile() ne demande pas au périphérique de renvoyer des données, on récupère juste des données qui étaient dans la file d attente interne du port série). Rôle: Reçoit des données venant du périphérique via le port série. Attention au format des données (données constituées d'entiers entre -128 et 127, 0 et 255, sous forme de caractères, entiers hexadécimaux...), aux temps de communication et au fait que les données attendues ne sont pas toujours reçues en 1 fois. Ce comportement peut être modifié en réglant des options de timeouts appropriées. Voir la documentation pour plus d'informations. CloseHandle() Rôle: Ferme le port série. GetCommTimeouts() c) Fonctions potentiellement utiles Structure recevant les options actuelles de limite de temps d'attente d'une donnée du port série. Voir la documentation pour plus d'informations. Rôle: Obtient les options actuelles de limite de temps d'attente d'une donnée du port série. Il est souvent pratique d'appeler cette fonction avant SetCommTimeouts() pour ne pas être obligé de se préoccuper aussi des options que l'on ne souhaite pas modifier.

SetCommTimeouts() Structure contenant les options de limite de temps d'attente d'une donnée à appliquer au port série. Voir la documentation pour plus d'informations. Rôle: Modifie les options actuelles de limite de temps d'attente d'une donnée du port série. PurgeComm() Rôle: Supprime les données non envoyées ou non reçues qui sont dans la file d'attente interne du port série. d) Exemple Supposons qu'on ait un périphérique que l'on veut brancher sur un ordinateur portable. Cet ordinateur n'ayant pas de port série RS232 accessible (connecteur au format DB9), on utilise un convertisseur USB-RS232. Après avoir installé les drivers de ce convertisseur et l'avoir branché sur un port USB, on note le numéro du port COM qui apparaît dans Panneau de configuration\système\matériel\gestionnaire de périphériques\ports (COM et LPT) (EX: COM4). Ce périphérique envoie la chaîne de caractères "Hello" si on lui envoie l'entier 63 (code ASCII de '?'). Il fonctionne à une vitesse de 9600 bps, envoie des trames avec 8 bits de données (1 octet), pas de bit de parité et 1 bit d'arrêt (cette configuration est la plus classique et est parfois appelée 8N1 (8 pour 8 data bits, N pour No parity, 1 pour 1 stop bit)). Voir Win32APIRS232Device_vs2008.zip et Win32APIRS232Device_Qt.zip. 2. Linux en utilisant l'api POSIX Aide: Linux Man Pages (commande man, http://pwet.fr/man/linux, rubrique Fonctions des bibliothèques\posix). open() (fcntl()) tcgetattr() cfsetospeed() cfsetispeed() tcsetattr() (tcflush()) write() read() a) Fonctions utiles

close() Sous Linux, les ports série RS232 sont souvent nommés /dev/ttys0, /dev/ttys1 ou encore /dev/ttyusb0 si on passe par un convertisseur USB-RS232. 3. Exemples de code fonctionnant sous Windows et Linux RS232PortVirtualPairTest.zip: RS232PortTest1 et RS232PortTest2 sont 2 programmes communiquant entre eux via un port série RS232 (envoi/réception d un buffer). Pour les tester rapidement, on peut par exemple utiliser Virtual Serial Port Emulator (ou encore com0com) sous Windows ou socat (en tapant une commande du type socat -d -d pty,raw,echo=0 pty,raw,echo=0 et en regardant le nom des 2 ports attribués, par exemple /dev/pts/1 et /dev/pts/2) sous Linux pour créer une paire de ports série RS232 virtuels reliés entre eux. Il est aussi possible de faire le test entre 2 PC différents reliés par un câble série RS232 croisé (reliant la pin TX de l un sur le RX de l autre et inversement). Il faut noter aussi que si on veut tester une liaison série RS232 entre autre chose que des PC (par exemple une carte avec processeur ARM sous Linux ), il faut bien vérifier les niveaux de tensions des signaux RS232 avant de faire un branchement car il existe plusieurs variantes: ±12V (sur le port DB9 de la plupart des PC ou convertisseur USB-RS232 classiques), ±5V, ±3.3V