Bonjour, j'ai utilis� le code fourni dans la FAQ VC++ pour �crire un programme qui lit les donn�e sur le port s�rie.
voici le lien vers la FAQ : http://c.developpez.com/faq/vc/?page...WithSerialPort
et voici le code que j'ai �crit :le projet que j'ai cr�� est un projet console avec prise en compte MFC.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 // Qtrak.cpp : définit le point d'entrée pour l'application console. // #include "SerialCom.h" #include "stdafx.h" #include "Qtrak.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // Seul et unique objet application CWinApp theApp; using namespace std; int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { int nRetCode = 0; // Initialise MFC et affiche un message d'erreur en cas d'échec if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // TODO : modifiez le code d'erreur selon les besoins _tprintf(_T("Erreur irrécupérable : l'initialisation MFC a échoué\n")); nRetCode = 1; } else { // TODO : codez le comportement de l'application à cet emplacement. cout << "Création de l'objet Com" << endl; CCom com; cout << "Objet créé à l'adresse "<< &com << endl; cout << "Ouverture du port" << endl; com.PortOpen(1,57600,'N',8,0); cout << "Port ouvert" << endl; cout << "Réglage du mode de communication Rts/Cts"<< endl; com.UseXonXoff(); cout << "Mode de communication réglé" << endl; cout << "Définition de l'événement d'attente" << endl; com.SetCommMask(EV_RXCHAR); // spécifie l'événement d'attente. cout << "Evenement d'attente spécifié" << endl; cout << "Envoi d'une commande au Fastrak" << endl; com.WriteBuffer("C\r\n"); cout << "Commande envoyée" << endl; DWORD EvtMask; com.WaitCommEvent(EvtMask);// attente réception char sz[50]; com.ReadBuffer(sz,sizeof(sz)); for (int i = 0; i<50; i++) { cout << "SZ :: " << sz[i] << endl; } AfxMessageBox(CString(sz,com.GetCountRead())); } return nRetCode; }
A l'�x�cution de ce projet, la chaine de caract�re renvoy�e est uniquement remplie de I avec un accent ������ et en console, �a donne des caract�res comme �a : ╠╠╠╠╠╠ et lorsque je fais une conversion vers un entier, �a donne -52 ( ce qui correspond � 204 = 256 + (-52), 204 �tant le code ascii pour ╠)
j'ai essay� les diff�rents modes de communications (XON/XOFF, RTC/CTS, DTR/DSR) mais le r�sultat est toujours le m�me.
La commande C qui est envoy�e par cette commandepermet la r�ception continue des donn�es.
Code : S�lectionner tout - Visualiser dans une fen�tre � part com.WriteBuffer("C\r\n");
Voici mes questions :
- Que pensez vous du code ? (erreurs d'�critures, optimisation, etc.)
- Comment configurer le port pour assurer une r�ception correcte des donn�es ?
Partager