[débutant]recevoir et envoyer une chaine de caractère sur un port série en C?

makan94 Messages postés 2 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 21 février 2007 - 15 févr. 2007 à 15:17
makan94 Messages postés 2 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 21 février 2007 - 21 févr. 2007 à 14:54
bonjours à tous,sa fait déjas plusieur semaine que je recherche désespérément une solution a ma question sans avoir trouvé de réponse: Comment recevoir et envoyer une chaine de caractère sur un port série RS232C?!?(en C).

Merci.

3 réponses

cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
15 févr. 2007 à 17:04
Tu es certain d'avoir vraiment cherché ?
http://www.cppfrance.com/recherche.aspx?r=port+com&tr=source

et en plus je te donne une piste

HANDLE patate;

Patate = CreateFile("COM1", ....");
if (Patate == INVALID_HANDLE_VALUE)
{
return; //Problème monumental
}

char* Bob = "Salut bob";
char* Reception[577];
DWORD OctetLu;

WriteFile(Patate, Bob, strlen(Bob), 0); //ÉCrire ce que tu veux sur ton port et pour lire
ReadFile(Patate, Reception, 577, &OctetLu, 0);

CloseHandle(Patate);

Ensuite renseigne toi sur GetCommState et SetCommState pour pourvoir faire le setting du port.

héhé c'est pas beautiful ça ?

http://laptopgun.blogspot.com/
<
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
15 févr. 2007 à 17:06
Salut, il te faut programmer avec ce genre d'outils Win32 (en bleu) :

// CREATION


int bufferINT[4096] = {0};         // Buf lecture/ecriture
int countArrayINT = 0;               // Compteur lecture/ecriture
DWORD dwReallyWriteOrRead; // Nombre réel de lecture/ecriture


TCHAR name[] = "COM1";
HANDLE port;
COMMTIMEOUTS timeouts;
DCB dcb;


port = CreateFile(name, GENERIC_READ | GENERIC_WRITE,
    0, NULL, OPEN_EXISTING, 0, NULL);



PurgeComm(port, PURGE_TXABORT | PURGE_RXABORT | 
PURGE_TXCLEAR | PURGE_RXCLEAR);
SetupComm(port,4096, 4096);


ZeroMemory(&timeouts, sizeof(COMMTIMEOUTS));
timeouts.ReadIntervalTimeout= 0xFFFFFFFF;
SetCommTimeouts(port,&timeouts);


ZeroMemory(&dcb, sizeof(dcb));
dcb.DCBlength = sizeof(dcb);



GetCommState(port, &dcb);



BuildCommDCB("9600,n,8,1", &dcb);


// OU affecter 1 par 1 et SetCommState(port, &dcb)



// UTILISATION WRITE



WriteFile(port,(void*)bufferINT, countArrayINT, &dwReallyWriteOrRead, NULL);



// UTILISATION READ



ReadFile(port,(void*)bufferINT, countArrayINT, &dwReallyWriteOrRead, NULL);



// FERMETURE



CloseHandle(port);

Attention pour l'assyncrone il faut utiliser la structure :
OVERLAPPED etCreateEvent()
0
makan94 Messages postés 2 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 21 février 2007
21 févr. 2007 à 14:54
tout dabort je vous remercie de m'avoir répondu aussi rapidement!!!
mais di moi max12 "GetCommState et SetCommState" ce ne sont pas des fonction de C++?!?
désolé yann_lo_san j'ai oublié de préciser que je devai codé en 16bits et no en 32bits!!javascript:Insert_Emoticon('/imgs2/smile.gif');
je tien encors a vous remercier!!!
0
Rejoignez-nous