Bonjour Diogene,
En fait je me suis rendu compte d'une chose c'est que le fait que le contenu de dest qui était vide est due au fait que la variable "char * badgeid_tab" qui est passée à la fonction "ascii2binary(badgeid_tab,lentab,dest,lendest)"
subit une modification :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for(i=0 ; i<nbtab ;i++ ) tab[i] = tab[i]-'0';
Et moi dans mon programme de call j'utilise une variable globale qui se trouve au delà du bloc main :
fichier main:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 char tab_badge_id[41]; int main(int argc, char* argv[]) { ... strcpy(tab_badge_id,argv[4]); ... }
et je fais une boucle d'envoi et passe l'adresse de ma variable tab_badge_id :
fichier main:
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 .... for(int i=0; i<repeat; ++i) //090427 { printf("\nSending configuration...\n"); printf("CARD_NUMBER = %s\n",tab_badge_id); //AFFICHE QUE LA PREMIERE FOIS .... printf("Begin sending...\n"); pCVgtS3100_interface->vgt_sendto_S3100(remote_ip,remote_port,act_doors,tab_badge_id,sequence_number,time_out_ms); ....
Dans la fonction appelé:
fichier dll:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 DLL_API(long) vgt_sendto_S3100 ( char* remote_host, int remote_port, int active_door,/* __int64 badgeid*/ char * badgeid_tab, int seq_num, int timeout_ms) { ... write_struct(active_door,/* badgeid*/badgeid_tab, seq_num);
Et Donc ma fonction write_struct appelle à son tour:
fichier dll:
la fonction ascii2binary qui lui modifie la variable globale "char tab_badge_id[41]" .
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 void write_struct(int active_door, /*__int64 badgeid*/ char * badgeid_tab, int seq_num) { unsigned char dest[41]; //test 090515 int lentab = strlen(badgeid_tab) ; int lendest = sizeof dest /sizeof *dest; // *dest=ascii2binary(badgeid_tab,lentab,dest,lendest); ascii2binary(badgeid_tab,lentab,dest,lendest); ... }
Et donc tab_badge_id n'affiche que la premier fois la valeur puis rien du tout
est ce correct le raisonnement que je fais ?
Comment pourrais je faire pour pouvoir utiliser avec répétition, en boucle ?
Merci
Partager