Comment récupérer code IMEI d'un modem ?
Bonjour, :D
Tout d'abord, j'espère que je poste mon sujet dans la bonne rubrique du forum.
J'ai fait un petit programme qui devrait (normalement) récupérer le code IMEI d'une carte SIM intégrée dans un modem. Le modem est branché à un pc sous linux donc le petit programme tourne sous linux aussi. Avec un dialer et en tapant la commande qui va bien, j'ai récupérer ce numéro IMEI (15 chiffres) afin que je le compare avec ce que j'obtiens par mon programme mais je n'obtiens pas du tout le résultat attendu.
Je poste ici mon code afin que vous y jetiez un coup d'oeil :
Code:
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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
#include <stdio.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <signal.h>
#include <stdlib.h>
#include <termios.h>
#include <time.h>
#include <locale.h>
#include <string.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
using namespace std;
int SignalRecu;
void rien()
{
SignalRecu=1;
}
int main(int argc, char* argv[])
{
setlocale( LC_NUMERIC, "" );
struct termios oldtio,newtio;
int taille, lg;
char DemandeSerial[6];
int fd;
unsigned char Serial[20];
fd = open ("/dev/ttyACM0", O_RDWR | O_NOCTTY | O_NDELAY );
if (fd < 0)
{
printf ("Erreur ouverture port\n");
exit (EXIT_FAILURE);
}
else
{
printf ("Ouverture COM reussie\n");
}
tcgetattr(fd,&oldtio);
newtio.c_cflag = B230400 | CS8 | CREAD;
//newtio.c_lflag = ECHO;
newtio.c_oflag = OFDEL;
newtio.c_lflag = CSTOPB ;
newtio.c_cc[VMIN] = 1;
newtio.c_cc[VTIME] = 0;
newtio.c_iflag = IGNPAR | ICRNL;
newtio.c_oflag = 0;
tcsetattr(fd,TCSANOW,&newtio);
SignalRecu = 0;
while(SignalRecu==0)
{
DemandeSerial[0]='A';
DemandeSerial[1]='T';
DemandeSerial[2]='+';
DemandeSerial[3]='G';
DemandeSerial[4]='S';
DemandeSerial[5]='N';
lg = write (fd, DemandeSerial, 6);
if (lg < 0 )
{
printf ("Erreur ecriture port\n");
printf("%d\n",lg);
}
else
{
printf ("Demande Serial reussie\n");
}
taille = read(fd, Serial, sizeof(&Serial));
if (taille<0)
{
printf ("Erreur Lecture Serial IMEI\n");
//exit (EXIT_FAILURE);
}
else
{
int i = 0;
for (Serial[i]; i < sizeof(Serial); i++)
{
printf ("%d\n", Serial[i]);
SignalRecu=1;
}
//printf ("\r\n");
}
}
if(close(fd) < 0)
{
printf("probleme a la fermeture\r\n");
}
return (EXIT_SUCCESS);
} |
Merci d'avance pour votre aide et à bientôt !