Svp un coup de pouce pour le port serie

cs_glaive Messages postés 21 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 29 juillet 2004 - 14 juil. 2004 à 13:12
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 14 juil. 2004 à 21:24
salut les pots actuellement je travail sur un projet en visuel c++ sur la communication en port serie DB9, j'arrive à faire passer une chaine de caractaire mais mon blm c que j'y parvien seulement si je fait l'allocation tableau de type char.
je voudrais eviter cette allocation car je suis limité par le nombre de case allouées dans ce tableau .
de ma part je vous invites à voir une partie de mon source, la partie qui s'occupe de la transmition et de la reception:

------------transmition d'une chaine-----------------------

bool comserie::ecrireport(char* trame)
{

char p[129];

strcpy(p,trame);

DWORD dwNumBytesWritten;



if(!WriteFile(Com, p, 170, &dwNumBytesWritten, NULL))

return 0;
else
return 1;


}

-----------reception de la chaine----------------------

char* comserie::lectport()
{

char *e;
e = new char[129];


SetCommMask (Com,EV_RXCHAR );

// attend un evenement

WaitCommEvent (Com,&dwCommStatus,0);

ReadFile (Com,e,170,&dwBytesTransferred,0);

return e;
}

------------------------------------------------------------

j'ai associer 2 bouttons qui declanchent la lecture et l'ecriture
voici le code:

-----------------------reception-----------------------

void CPrmfcView::OnRead()
{
// TODO: Add your control notification handler code here


m_affich = k.lectport(); //m_affiche variable associée au boutton de lecture

UpdateData(false);

}

-------------------envoie--------------------------------

void CPrmfcView::OnWrite()
{
// TODO: Add your control notification handler code here
bool s;
UpdateData(true);

char p[170];//♥ c ca le problem je veu pas d'allocation ♥


sprintf(p,"%s",m_saisie);


s = k.ecrireport(p);
if (!s)
{
m_test3 = "error";
UpdateData(false);
}
else
{
m_test3 = "ok";
UpdateData(false);
}



}

si quelqun a déja travailler sur les port serie qu'in se manifeste
merci d'avance

glaive l'epée de la justice et du jeu video

6 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 juil. 2004 à 13:21
char p[170]; dans une fonction n'est pas une allocation !!!
c'est juste pris sur la pile par un retrait de ESP, le memory manager n'est pas du tout appele.

ciao...
BruNews, Admin CS, MVP Visual C++
0
cs_glaive Messages postés 21 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 29 juillet 2004
14 juil. 2004 à 14:06
y a pas moyen d'eviter ca je veux envoyer des chaine sans me soucier de la taille quelque chose comme la recuperation de la taille, en travaillant avec les CString.

j'ai denicher une fonction qui retourne le nombre d'octect envoyées par l'emetteur:

ClearCommError(Com,&Errors,&Stat); // c la fonction
nCarALire=Stat.cbInQue;// nCarALire une variable qui recupere la taille de la chaine reçue

glaive l'epée de la justice et du jeu video
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 juil. 2004 à 14:35
Tu ne veux pas d'allocation et tu parles de CString. Un CString passe son temps a faire de l'alloc desalloc, faudrait savoir.
MFC pas pour moi.

ciao...
BruNews, Admin CS, MVP Visual C++
0
cs_glaive Messages postés 21 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 29 juillet 2004
14 juil. 2004 à 15:25
je vais essayer ta proposition et j'insiste si quelq'un a deja travailler sur le port serie DB9 qu'il m'envoi un message merci les pots

glaive l'epée de la justice et du jeu video
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
xarier Messages postés 688 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 19 mai 2005
14 juil. 2004 à 15:54
y a pas moyen d'eviter ca je veux envoyer des chaine sans me soucier de la taille--> si j'ai biencompris tu veut pas te soucier a la taille de P[170]; alors si c ca re mplace la avec p [];
Life is Short 8-)
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
14 juil. 2004 à 21:24
pour envoyer une chaine de caractères (terminées par un caractère nul bien sur) :

void emmettre(const char* trame)
{
DWORD dwNbBytesWritten;
WriteFile(hComm, (void*)trame, strlen(trame), &dwNbBytesWritten, NULL);
}
0
Rejoignez-nous