begin process at 2010 02 10 14:34:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Périphériques

 > 

RS232 et USB


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

RS232 et USB

samedi 21 février 2004 à 23:39:00 | RS232 et USB

zinotron

Salut et Bonsoir tous (et ptet meme toutes).
Je cherche de la doc sur la programmation des ports rs232 et USB en C (pas le C++) et n'utilisant pas les MFC, ni les API ni rien ....
Voila
si quelqu'un as ...
bah ca serait gentil de faire circuler ;-)
Merci D'avance
++
dimanche 22 février 2004 à 12:46:48 | Re : RS232 et USB

Arnotic

Administrateur CodeS-SourceS
Bonjour,

Conernant le port USB tu peux utiliser des drivers génériques de type Jungo (http://www.jungo.com).
Il te fournisse des exemples de programmes très bien fait !

Concernant la RS232 sur ce site tu as un très bon exemple.
http://www.cppfrance.com/code.aspx?ID=18704

@+
Arnotic
Admin CS, MVP Visual C++
dimanche 22 février 2004 à 14:52:58 | Re : RS232 et USB

zinotron

c du win32 :-(
je voudrais tester pour Linux (debian pour etre precis)
en fait, j'ai deja fait un truc a l'aide d'un HOWTO

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>
#include <stdio.h>

/* les valeurs pour la vitesse, baudrate, sont définies dans <asm/termbits.h>, qui est inclus
dans <termios.h> */
#define BAUDRATE B38400
/* changez cette définition pour utiliser le port correct */
#define MODEMDEVICE "/dev/ttyS1"
#define _POSIX_SOURCE 1 /* code source conforme à POSIX */

#define FALSE 0
#define TRUE 1

volatile int STOP=FALSE;

main()
{
int fd,c, res;
struct termios oldtio,newtio;
char buf[255];
/*
On ouvre le périphérique du modem en lecture/écriture, et pas comme
terminal de contrôle, puisque nous ne voulons pas être terminé si l'on
reçoit un caractère CTRL-C.
*/
fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY );
if (fd <0) {perror(MODEMDEVICE); exit(-1); }

tcgetattr(fd,&oldtio); /* sauvegarde de la configuration courante */
bzero(&newtio, sizeof(newtio)); /* on initialise la structure à zéro */

/*
BAUDRATE: Affecte la vitesse. vous pouvez également utiliser cfsetispeed
et cfsetospeed.
CRTSCTS : contrôle de flux matériel (uniquement utilisé si le câble a
les lignes nécessaires. Voir la section 7 du Serial-HOWTO).
CS8 : 8n1 (8 bits,sans parité, 1 bit d'arrêt)
CLOCAL : connexion locale, pas de contrôle par le modem
CREAD : permet la réception des caractères
*/
newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;

/*
IGNPAR : ignore les octets ayant une erreur de parité.
ICRNL : transforme CR en NL (sinon un CR de l'autre côté de la ligne
ne terminera pas l'entrée).
sinon, utiliser l'entrée sans traitement (device en mode raw).
*/
newtio.c_iflag = IGNPAR | ICRNL;

/*
Sortie sans traitement (raw).
*/
newtio.c_oflag = 0;

/*
ICANON : active l'entrée en mode canonique
désactive toute fonctionnalité d'echo, et n'envoit pas de signal au
programme appelant.
*/
newtio.c_lflag = ICANON;

/*
initialise les caractères de contrôle.
les valeurs par défaut peuvent être trouvées dans
/usr/include/termios.h, et sont données dans les commentaires.
Elles sont inutiles ici.
*/
newtio.c_cc[VINTR] = 0; /* Ctrl-c */
newtio.c_cc[VQUIT] = 0; /* Ctrl-\ */
newtio.c_cc[VERASE] = 0; /* del */
newtio.c_cc[VKILL] = 0; /* @ */
newtio.c_cc[VEOF] = 4; /* Ctrl-d */
newtio.c_cc[VTIME] = 0; /* compteur inter-caractère non utilisé */
newtio.c_cc[VMIN] = 1; /* read bloquant jusqu'à l'arrivée d'1 caractère */
newtio.c_cc[VSWTC] = 0; /* '\0' */
newtio.c_cc[VSTART] = 0; /* Ctrl-q */
newtio.c_cc[VSTOP] = 0; /* Ctrl-s */
newtio.c_cc[VSUSP] = 0; /* Ctrl-z */
newtio.c_cc[VEOL] = 0; /* '\0' */
newtio.c_cc[VREPRINT] = 0; /* Ctrl-r */
newtio.c_cc[VDISCARD] = 0; /* Ctrl-u */
newtio.c_cc[VWERASE] = 0; /* Ctrl-w */
newtio.c_cc[VLNEXT] = 0; /* Ctrl-v */
newtio.c_cc[VEOL2] = 0; /* '\0' */

/*
à présent, on vide la ligne du modem, et on active la configuration
pour le port
*/
tcflush(fd, TCIFLUSH);
tcsetattr(fd,TCSANOW,&newtio);

/*
la configuration du terminal est faite, à présent on traite
les entrées
Dans cet exemple, la réception d'un 'z' en début de ligne mettra
fin au programme.
*/
while (STOP==FALSE) { /* boucle jusqu'à condition de terminaison */
/* read bloque l'exécution du programme jusqu'à ce qu'un caractère de
fin de ligne soit lu, même si plus de 255 caractères sont saisis.
Si le nombre de caractères lus est inférieur au nombre de caractères
disponibles, des read suivant retourneront les caractères restants.
res sera positionné au nombre de caractères effectivement lus */
res = read(fd,buf,255);
buf[res]=0; /* on termine la ligne, pour pouvoir l'afficher */
printf(":%s:%d\n", buf, res);
if (buf[0]=='z') STOP=TRUE;
}
/* restaure les anciens paramètres du port */
tcsetattr(fd,TCSANOW,&oldtio);
}

et quand je compile cette chose et que je l'execute, je met ma TI89 sur le port serie et je dis a la caltos d'envoyer qqch (au pif) sur le port serie, et ca deconne ...
si ta une idée ;-)
je prend :p
merci
A+


Cette discussion est classée dans : usb, rs232


Répondre à ce message

Sujets en rapport avec ce message

RS232 en USB [ par sirdeneb ] Bonjour à tous, J'ai un programme en cpp qui communique avec une carte d'acquisition sur le port série. Or étant obligé de changer de PC qui lui n'a tiroir rs232 via port usb [ par Mokhnache ] Bonjour à tous,Est ce que il y'a qulqu'un qui sait comment peut on ouvrir un tiroir caisse rs232 connecter à un ordinateur via un adaptateur USBsachan les prise et c++ [ par wordgaim ] bonjour [^^happy17] je veux depuis un mon mon créer un programme qui commende quelle que chose (par exemple allumer une petit lampe ) a partir d'une p Lire RS232 avec interface graphique [ par ltitoff1 ] Bonjour à tous, J'ai relié un microcontroleur à mon PC via une interface serie RS232. Je souhaiterais simplement visualiser mes données transmises au Attribut d'une clé USB [ par majestic3 ] Bonjour a tous je cherche a savoir comment faire en C l'attribut d'une clé usb Comment créer un périph usb [ par lacaulac ] piloter un robot lego par usb [ par wisfloski ] bonjour à tous, cette année j'ai projet de programmation qui consiste à piloter un robot lego par usb. je m'explique : je dois réaliser une applicat aide à propos d un sujet "usb" [ par castellon ] [code=cpp][/code] On désire développé une application en C++ qui permet de lire les données sur un port USB connecté sur un PC !!! je serai ravi port serie (RS232) [ par njinya ] Salut à tout le monde je m'intéresse à l'informatique industriel et j'aimerais manipuler les ports serie(ou parallèles) pour allumer une led par exemp Detecté un port USB par une application developpée en C [ par jirosak ] Bonjour tt le monde, >> bon chere Programmeurs je suis un developpeur debutant en programmation C et je demande l'aide des programmeur experts bon ma


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,842 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales