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 :
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;
}
le projet que j'ai cr�� est un projet console avec prise en compte MFC.
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 commande
Code : S�lectionner tout - Visualiser dans une fen�tre � part
com.WriteBuffer("C\r\n");
permet la r�ception continue des donn�es.

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 ?