Accueil > Forum > > > > liaison serie dev-c++
liaison serie dev-c++
samedi 25 mars 2006 à 14:54:33 |
liaison serie dev-c++

jicez
|
Bonjour à tous ! 
Voilà, j'essaye désespérement de mettre en place une laison série sous Dev-c++. J'ai essayé plusieurs codes récupérés ici et ailleurs, et je m'y prend surement mal mais le résultat est que ça ne marche pas.
Le code ci-dessous a été récupéré ici, c'est celui qui m'a l'air le plus explicite. J'aimerais envoyé un "long int" ; Je me doute que le pointeur "*TrameRecue" pointe sur l'adresse de l'info à récupérer, mais je reçoit carrément pas l'envoi.
Je sais que j'arrive à recevoir qqch mais j'arrive pas à extraire l'info. Si vous pouviez m'aider svp, sois en me disant comment bien utiliser ces fonctions, sois en me proposant un autre code.
Merci.
//---------------------------------------------------------------------------- // FONCTION : EmissionCom //---------------------------------------------------------------------------- // DESCRIPTION : // Emission d'octets sur la liaison série // //---------------------------------------------------------------------------- // PARAMETRES : // -lpBuf Pointeur sur les octets a emettre // -nCount Nombre d'octet a emettre // //---------------------------------------------------------------------------- // RETOUR :Code d'erreur //---------------------------------------------------------------------------- e_ErrCom EmissionCom(const void* lpBuf,unsigned int nCount) { HWND hwnd; DWORD NumBytes=0; if(g_hCom!=NULL) { // On pari sur pas d'erreur g_ErrCom=e_ErrCom_None; //Emission du buffer if(WriteFile(g_hCom,lpBuf,nCount,&NumBytes,NULL)==0) { g_ErrCom=e_ErrCom_Emission; MessageBox(hwnd, "Erreur d'emission", "Erreur", MB_OK | MB_ICONEXCLAMATION); } MessageBox(hwnd, "emission marche", "Erreur", MB_OK | MB_ICONEXCLAMATION); } else //Le port n'a pas été ouvert
MessageBox(hwnd, "echec de l'ouverture du port", "Erreur", MB_OK | MB_ICONEXCLAMATION); return g_ErrCom; } //--------------------------------------------------------------------------- // FONCTION : ReceptionCom //--------------------------------------------------------------------------- // DESCRIPTION : // Reception de caractères sur la liaison série // //--------------------------------------------------------------------------- // PARAMETRES : // -lpBuf Pointeur sur le buffer de caractère a lire // -nCountMax Nombre maxi de caractère a lire // -pCountRead Pointeur sur le nombre de caractères lus //--------------------------------------------------------------------------- // RETOUR :Code d'erreur //--------------------------------------------------------------------------- e_ErrCom ReceptionCom(void *lpBuf,unsigned int nCountMax, unsigned int* pCountRead) { COMSTAT Stat; DWORD Errors; unsigned int nCarALire; unsigned long NCarLus=0; HWND hwnd;
if(g_hCom!=NULL) { //on pari sur pas d'erreur g_ErrCom=e_ErrCom_None; //Pour éviter de gérer un time out Sleep(500); //Pour connaitre le nombre d'octets dans le buffer d'entrée ClearCommError(g_hCom,&Errors,&Stat); nCarALire=Stat.cbInQue; //On effectue la lecture si il y a des caractères présents if( (nCarALire>0)&&(nCarALire<=nCountMax) ) { if(ReadFile(g_hCom,lpBuf,nCarALire,&NCarLus,NULL)==0) { g_ErrCom=e_ErrCom_Reception; MessageBox(hwnd, "erreur de reception", "Erreur", MB_OK | MB_ICONEXCLAMATION); } } *pCountRead=NCarLus; } else //Le port n a pas été ouvert MessageBox(hwnd, "echec de l'ouverture du port", "Erreur", MB_OK | MB_ICONEXCLAMATION); //Compte rendu de l'exécution return g_ErrCom; }
|
|
samedi 25 mars 2006 à 15:14:25 |
Re : liaison serie dev-c++

Tekila48
|
que te revoit la fonction ReceptionCom ?
*pCountRead est-il égal à 0 ? Comment essaies-tu de lire lpBuf ?
Comment sais-tu que tu arrives à recevoir quelquechose ? nCarALire != 0 ?
En passant : pourquoi n'utilises-tu pas directement pCountRead dans la fonction ReadFile ?
|
|
samedi 25 mars 2006 à 15:29:11 |
Re : liaison serie dev-c++

jicez
|
Ah oui, je parle du pointeur "*TrameRecue" mais je ne dit pas où je l'utilise désolé.
Pour l'émission je fais :
OuvreCom(PORT2,V9600,BITS_8,PARITE_PAIRE,BIT_DE_STOP_1);
int i = 50; unsigned char test[250]; sprintf (test , %d ,i); EmissionCom(test,1); //le 1 pour envoyer un seul octet
Pour la réception :
unsigned char* TrameRecue[100]; unsigned int NbMaxCar=100; unsigned int NbCarRecus;
OuvreCom(PORT1,V9600,BITS_8,PARITE_PAIRE,BIT_DE_STOP_1);
ReceptionCom(TrameRecue,NbMaxCar,NbCarRecus); if(TrameRecue != NULL) // je rentre bien ici { // traitement }
J'ai déjà essayé en mettant dans un "unsigned int" ce que pointe "*TrameRecue" mais je reçoit un truc pas logique.
Pour te répondre ce que renvoie les fonctions ce n'est qu'un code d'erreur qui est traité ailleurs. Le truc c'est que je n'est pas de message box qui me m'indique une erreur, donc c'est que qqch est envoyé et réceptionné. En tout cas merci de te pencher sur mon probleme.
|
|
dimanche 26 mars 2006 à 10:21:07 |
Re : liaison serie dev-c++

Tekila48
|
sprintf(test, %d, i); //==> Test = "50" donc
Test[0] = '5'
Test[1] = '0'
Test[2] = '\0'
En envoyant un seul octet, tu n'envoies que le 5.
En récupérant un unsigned int, tu vas récuperer le code ASCII de 5, soit 53 (ou 0x35).
Est-ce que ca colle avec ce que tu recois ?
|
|
dimanche 26 mars 2006 à 20:01:11 |
Re : liaison serie dev-c++
|
lundi 27 mars 2006 à 18:51:56 |
Re : liaison serie dev-c++

jicez
|
salut !!  Merci d'avoir prêter attention à mon problème. En convertissant mon "int" en "char" avec "sprintf" et en le reconvertissant en "int" à la réception, jarrive à transmettre mes données !!!!  Je sais que pour convertir mon "char" en "int" il faut que je mette un caractère de fin de chaine (\0) mais lors de l'envoie le caractère se met automatiquement puisque c'est un "char" ?? Mon programme est un petit pong que j'essaie de mettre en série. J'ai un maitre qui envoie des coordonnées et un esclave qui récupère et qui fait que afficher. Donc j'envoie que des "int" par série. En ce moment je suis bien en galère car ça plante malgrè une bonne connexion, mais le truc c'est que je ne sais pas pourquoi...lol  Est-ce à cause du temps de transmission, ou est-ce que les données se croisent... Je vais bien trouver !! En tout cas merci encore.
|
|
jeudi 26 mars 2009 à 18:25:41 |
Re : liaison serie dev-c++

phoenix_2406
|
Bonjour à tous !! Voila je viens de lire ce code et je me pose une petite question, j'aimerai pouvoir envoyer par le port série le mot binaire suivant : 01010101! Cependant comment faire pour trouver le i correspondant dans cette partie de code : int i= 50; unsigned char test[250]; sprintf (test , %d ,i); EmissionCom(test,1); //le 1 pour envoyer un seul octet J'aimerai que l'on m'explique la méthode  Merci d'avance phoenix 
|
|
Cette discussion est classée dans : erreur, hwnd, errcom, mb, lpbuf
Répondre à ce message
Sujets en rapport avec ce message
Gestion d'erreurs WinINet [ par Gab23 ]
Bonjour,Je débute en C++ et en programmation API. J'ai un petit soucis avec la librarie WinINet. Voilà, j'ai un programme qui se connecte à l'internet
port série thread [:)] [ par cheMoor ]
<img src=/imgs2/smile.gif border=0 align="a
HELP ME PLEASE!!!! PROBLEME KE JE NE COMPRENDS PAS!!!!!!! [ par bouba ]
Bonjour, je rencontre un gros problème dans mon programme que je n'arrive pas a résoudre,je ne comprends vraiment pas!!!1. std::string strcat2(LPSTR c
Ou est mon erreur.... [ par ordy ]
Bonjour, est ce que quelqu'un peut dire ou se trouve mon erreur.car dans l'execution de mon application il n'execute cette tache, mais il ne demarre p
erreur LNK2001 [ par biscot19 ]
j'ai une erreur de LNK 2001 sur la fonction suivanteSNMPAPI_STATUS CALLBACK cbFunc (HSNMP_SESSION hSession, HWND hWnd, UINT wMsg, WPARAM wParam,
Probleme de toolbar [win32 dev-cpp] [ par julien_boss ]
Bonjour,c'est pas la premiere fois que j'inclus une toolbar dans une source mais là, byzarrement, elle ne s'affiche pas, et aucun des messages d'erreu
probleme de connexion odbc [ par neofenix ]
salut tout le monde voila j'ai recupéré un code de connnexion odbc sur cppfrance mais le probleme c'est que je n'arrive pas a me connecter a ma base d
[directX] matrices de visualisation [ par SnOOpss ]
Bonjour je galere pour rendre une application compatible sur plusieurs ordis. En fait elle marche nickel sur mon ordi (celui ou j'ai le compilateur) m
Sous classer plusieurs controles dans une classe [ par julien_boss ]
Bonjour,je vous détail l'ossature de ma classe, qui crée une fenetre :jappelle une methode Create() qui va ... créer la fenetre, je fais passer dans l
MessageBox [ par jlg75 ]
Bonjour, J'utilise une MessageBox de la façon suivante: if (MessageBox(hWnd, (LPCWSTR) "Voulez vous vraiment quitter?", NULL
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|