Commander le port serie avec vc++

Fermé
salah - 26 nov. 2007 à 09:32
mindslight Messages postés 87 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 29 octobre 2009 - 26 nov. 2007 à 11:04
Bonjour,
Comment programmer et utiliser de façon fiable et simple un port de communication rs232 sous interface de dévellopement visual C++?
En référence à cette discussion

3 réponses

mindslight Messages postés 87 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 29 octobre 2009 12
26 nov. 2007 à 09:43
Bonjour,

Il y avait déja un poste similaire, donc j'ai recopier mon méssage.
celon la version de visual que tu possède il se peut que tu ne possède pas
<bios.h>.

#include <bios.h>
#include <conio.h>
#define COM1 0
#define DATA_READY 0x100
#define SETTINGS ( 0x80 | 0x02 | 0x00 | 0x00)

int main(void)
{
int in, out, status;
bioscom(0, SETTINGS, COM1); /*initialize the port*/
cprintf("Data sent to you: ");
while (1)
{
status = bioscom(3, 0, COM1); /*wait until get a data*/
if (status & DATA_READY)
if ((out = bioscom(2, 0, COM1) & 0x7F) != 0) /*input a data*/
putch(out);
if (kbhit())
{
if ((in = getch()) == 27) /* ASCII of Esc*/
break;
bioscom(1, in, COM1); /*output a data*/
}
}
return 0;
}

cette source avec la documentation est dispo sur le site: http://electrosofts.com/serial/

voilà, jèspère que ca peut t'aider
0
Bonjour,

"fiable et simple" : pas possible à ma connaissance. fiable ou simple, oui.
Simple en utilisant le fichier COM1 comme un bête fichier qu'on vient lire et écrire sans se poser trop de questions. Bonjour les blocages ou les lenteurs si pernonne ne répond en face.
Plus fiable en gérant le fichier com1 dans une boucle d'un thread qui ne fait que ça, en faisant des lectures avec timeout court. Mais ça n'est pas vraiment simple.
0
mindslight Messages postés 87 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 29 octobre 2009 12
26 nov. 2007 à 11:04
Re,

Je pense que le père a raison, mieux vaut partir sur de bonne
base. Effectivement l'emploie des threads et des timeouts est
beaucoup plus fiable et plus optimisé, mais ca demande de ce
documenter un peut sur internet.

mais si tu le souhaite je peut expliquer comment utiliser les threads.
c'est vrai que le code que je t'ais donné est loin d'être parfait
déja la valeur de retour de bioscom n'est même par tester.

reseigne toi sur le protocol de communication du port serie
(qui est très simple) et écris une petite librarie objet
dans laquel tu fait appel au thread, et ou toutes les
valeurs de retour des fonctions systèmes sont verifiées.

C'est le meilleur conseil que je puisse te donner.
0