Writefile et transmition de trame en hexadécimal

gossover Messages postés 7 Date d'inscription dimanche 20 janvier 2008 Statut Membre Dernière intervention 3 septembre 2009 - 9 juin 2009 à 14:26
SebLinck Messages postés 212 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 23 juin 2011 - 4 sept. 2009 à 21:26
bonjour,

je transforme un programme de comRS232 que j'ai eu ici sur ce site il es très bien il gère les paramètres du
port, fermeture ouverture. Moi je souhaite envoyer une série de trame
en hexa pour un appareil de mesure et en retour recevoir  les hexa. J'ai vu beaucoup de commentaire la dessus mais mon probléme c'est que je doit avoir un probléme de place memoire car le programme plante dès que j'envoie la valeur.

   DWORD NumBytes;
   unsigned char trame[] ={0x2F,0x00,0x00,0x00,0x00};
   int Tailletrame=sizeof(trame);
                                                                                             //int Tailletrame= strlen(trame); 
                                                                                             // printf("\n Taille de la chaine : %d \n", Tailletrame) ;   
   if(g_hCom != NULL)
   {
      //Emission de la Chaine
      if  (WriteFile(g_hCom,trame,sizeof(trame),&NumBytes,NULL)==0)
      {
         printf ("\n Erreur emission.\n") ;
         return FALSE ;
      }
      else
      {
         printf("\n Chaine envoyee : %x.\n",Tailletrame) ;
         return TRUE ;
      }  
   }
   else
      return FALSE ;

pouriez vous me dire comment faire pour gérer cette émission de chaine ?
merci

8 réponses

SebLinck Messages postés 212 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 23 juin 2011
16 juin 2009 à 16:55
Salut,

Il plante  à quel moment ton programme ?

Cordialement,
Sébastien.
0
gossover Messages postés 7 Date d'inscription dimanche 20 janvier 2008 Statut Membre Dernière intervention 3 septembre 2009
22 juin 2009 à 13:57
j'ai trouvé l'erreur, il faut remplacer strlen par sizeof.

 char trame10[16] = {0x68,0x0A,0x0A,0x68,0x73,0x01,0x00,0xCC,0x01,0x05,0x01,0x00,0x86,0x01,0xCE,0x16};
  
   DWORD NumBytes=0;
   int TailleChaine=0;
   switch(i)
   {         
              case 10:
              TailleChaine = sizeof(trame10);
              printf("\n Taille de la chaine : %d \n", TailleChaine) ;
     
              if(g_hCom != NULL)
              {
              //Emission de la Chaine
                         if  (WriteFile(g_hCom,trame10, TailleChaine,&NumBytes,NULL)==0)
                         {
                            printf ("\n Erreur emission.\n") ;
                             return FALSE ;
                         }
                         else
                         {
                             printf("\n Chaine envoyee : %c.\n", trame10) ;
                             return TRUE ;
                         } 
     
              }
              else   return FALSE ;
            
             break;
0
weil Messages postés 3 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 3 septembre 2009
3 sept. 2009 à 12:04
Salut,

comment fais tu pour décoder ce que tu recois en ASCII ?
0
gossover Messages postés 7 Date d'inscription dimanche 20 janvier 2008 Statut Membre Dernière intervention 3 septembre 2009
3 sept. 2009 à 12:20
je reçois des hexa et pas des ascii dsl
0

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

Posez votre question
weil Messages postés 3 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 3 septembre 2009
3 sept. 2009 à 12:33
Désolé, ma question n'était pas claire.

Je recois aussi de l'héxadécimal, mais comment tu procèdes pour l'afficher par exemple.
J'ai pa pu faire fonctionner le ReadFile
Merci
0
gossover Messages postés 7 Date d'inscription dimanche 20 janvier 2008 Statut Membre Dernière intervention 3 septembre 2009
3 sept. 2009 à 12:48
je ne l'ai pas affiché je mettais mes trames au fur et a mesure dans un tableau et traitait certaines infos de la trame par des calcules et j'affichai seulement ce que j'avais besoin. Si tu me laisses ton adresse mail je peux t'envoyer mon prog j'aurai enlever certaine partie qui sont propre a mon étude et ne doive pas etre utilisé mais ce prog a été fait en tres peux de tps et est plein de bug il faudrai le retaper en C++.
0
weil Messages postés 3 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 3 septembre 2009
3 sept. 2009 à 12:58
Merci

Mon problème provient du ReadFile, car il s'arrete qd il croise un "00". Je suis sur de recevoir les trames mais je dois les consulter en entier.
Et pour le moment j'ai pas pu mettre ma trame entière dans un fichier et la visualiser.


mon mail: weilbs@hotmail.fr
0
SebLinck Messages postés 212 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 23 juin 2011
4 sept. 2009 à 21:26
Salut,

En langage C:

pour afficher un caractère ASCII a partir d'un caractère Hexadécimal,
il faut faire:
printf("Ma chaine Hexa en ASCII: %x\n",ValeurEnHexa);

pour l'écrire das un fichier:
FILE *fp;
fp = fopen(...,a);
fprintf(fp,"Ma chaine Hexa en ASCII: %x\n",ValeurEnHexa);

Cordialement,
Sébastien.
0
Rejoignez-nous