[Clos]Envoyer des sms à un téléphone portable via un modem
Fermé
mbbnp
-
3 juin 2013 à 12:18
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023
-
3 juin 2013 à 14:10
Voici mon fameux programme
#include <windows.h>
#include <winbase.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
/* .................Définition de constantes............................*/
#define RX_SIZE 4096 /* taille tampon d'entrée */
#define TX_SIZE 4096 /* taille tampon de sortie */
#define MAX_WAIT_READ 5000 /* temps max d'attente pour lecture (en ms) */
#define CMD_SIM_OK "AT + CPIN=(CODE_PIN)"
#define CODE_PIN 1524
#define REPONSE_SIM_OK "(+CPIN : READY)"
#define CMD_DEMANDE_ENVOI "AT + CGREG ?"
#define REPONSE_DEMANDE_ENVOI "(+CGREG:0,1 0F8D 0000 2135)" /* Le modem est attaché en GPRS à l'opérateur local*/
#define CMD_ENVOI_DE_MESSAGE "AT + CMGF = 1"
#define REPONSE_ENVOI_DE_MESSAGE "OK"
#define CMD_ECRIRE_NUMERO "AT + CMGS=(NUMERO)"
#define CMD_VALIDATION "CRTL + Z"
#define CMD_MESSAGE_RECU "+CMGS:"
#define VALEUR "167"
//#define NUMERO [10];
/* Handle du port COM ouvert , ici le handle sert de pont entre le programme et les applications*/
HANDLE g_hCOM = NULL;
/* Délais d'attente sur le port COM */
COMMTIMEOUTS g_cto =
{
MAX_WAIT_READ, /* ReadIntervalTimeOut */
0, /* ReadTotalTimeOutMultiplier */
MAX_WAIT_READ, /* ReadTotalTimeOutConstant */
0, /* WriteTotalTimeOutMultiplier */
0 /* WriteTotalTimeOutConstant */
};
/* construction du nom du port, tentative d'ouverture */
sprintf(szCOM, "COM%d", nId);
g_hCOM = CreateFile(szCOM, GENERIC_READ|GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL);
if(g_hCOM == INVALID_HANDLE_VALUE)
{
printf("Erreur lors de l'ouverture du port COM%d\n", nId);
return FALSE;
}
/* affectation taille des tampons d'émission et de réception */
SetupComm(g_hCOM, RX_SIZE, TX_SIZE);
/* configuration du port COM */
if(!SetCommTimeouts(g_hCOM, &g_cto) || !SetCommState(g_hCOM, &g_dcb))
{
printf("Erreur lors de la configuration du port COM%d\n", nId);
CloseHandle(g_hCOM);
return FALSE;
}
/* on vide les tampons d'émission et de réception, mise à 1 DTR */
PurgeComm(g_hCOM, PURGE_TXCLEAR|PURGE_RXCLEAR|PURGE_TXABORT|PURGE_RXABORT);
EscapeCommFunction(g_hCOM, SETDTR);
return TRUE;
}
int main()
{
/* variables locales */
char buffer[256], numero[10];
int nId; /* entrée : nId : Id du port COM à ouvrir*/
int nChoice, nBytesWritten, nBytesRead;
int commande=0;
/* demande du numéro du port COM */
printf("Entrez le numero du port COM : ");
scanf("%d", &nId);
/* Tentative d'ouverture */
printf("Ouverture et configuration du port COM%d...\r\n", nId);
/* boucle tant que l'on n'a pas exécuter les commandes*/
do
{
/* Menu du choix sur les différentes compmandes à envoyer */
printf("\r\n");
printf("1 : Verification carte sim.\r\n");
printf("2 : Demande d'envoi.\r\n");
printf("3 : Envoi de message.\r\n");
printf("4 : Ecrire numero.\r\n");
printf("5 : Reponse correcte.\r\n");
printf("6 : Message recu.\r\n");
printf("Choix : ");
scanf("%d", &nChoice);
/* Vérification carte sim*/
if(nChoice == 1)
{
printf("1 : Verification carte sim.\r\n");
if(WriteCOM(CMD_SIM_OK, strlen(CMD_SIM_OK), &nBytesWritten)) // Vérification de la compatibilité de la carte sim
{
if(ReadCOM(buffer, sizeof(buffer)-1, &nBytesRead)){ // Une fois la commande écrite il faut la comparer avec la valeur qui est contenue dans le buffer
if ( strcmp(buffer, REPONSE_SIM_OK) == 0 ) {
printf("%d écrits.\r\n", nBytesWritten);
puts("ok");
}
else {
puts("erreur: La carte sim est invalide");
}
}
}
commande=1;
}
if(nChoice == 2)
{
printf("2 : Demande d'envoi.\r\n");
if(WriteCOM(CMD_DEMANDE_ENVOI, strlen(CMD_DEMANDE_ENVOI), &nBytesWritten)) // Envoi de la commande CMD_SIM_OK
{
if(ReadCOM(buffer, sizeof(buffer)-1, &nBytesRead)){ // Une fois la commande écrite il faut la comparer avec la valeur qui est contenue dans le buffer
if ( strcmp(buffer, REPONSE_DEMANDE_ENVOI) == 0 )
{
puts("ok");
}
}
else {
puts("erreur: La commande n'a pas pu s'executer");
}
}
commande=1;
}
if(nChoice == 3)
{
printf("3 : Possibilite d'envoi de message.\r\n");
if(WriteCOM(CMD_ENVOI_DE_MESSAGE, strlen(CMD_ENVOI_DE_MESSAGE), &nBytesWritten)) // Envoi de la commande CMD_ENVOI_DE_MESSAGE
{
if(ReadCOM(buffer, sizeof(buffer)-1, &nBytesRead)){ // Une fois la commande écrite il faut la comparer avec la valeur qui est contenue dans le buffer
if ( strcmp(buffer, REPONSE_SIM_OK ) == 0 )
{
puts("ok");
}
}
else {
puts("erreur: L'envoi du message est impossible");
}
}
commande=1;
}
if(nChoice == 4)
{
printf("4 : Saisi du numero.\r\n");
if(WriteCOM(CMD_ECRIRE_NUMERO, strlen(CMD_ECRIRE_NUMERO), &nBytesWritten)) // Envoi de la commande CMD_ECRIRE_NUMERO
{
if(ReadCOM(buffer, sizeof(buffer)-1, &nBytesRead)) { // Une fois la commande écrite il faut la comparer avec la valeur qui est contenue dans le buffer
if ( strcmp(buffer, numero) == 0 )
{
puts("ok");
}
}
else {
puts("erreur: Le numéro ne peut ètre saisi");
}
}
commande=1;
}
if(nChoice == 5)
{
printf("5 : Reponse correcte.\r\n");
if(WriteCOM(CMD_VALIDATION, strlen(CMD_VALIDATION), &nBytesWritten)) { // Envoi de la commande CMD_VALIDATION
if(ReadCOM(buffer, sizeof(buffer)-1, &nBytesRead)) { // Une fois la commande écrite il faut la comparer avec la valeur qui est contenue dans le buffer
if ( strcmp(buffer, CMD_VALIDATION) == 0 )
{
puts("ok");
}
}
else {
puts("erreur: La validation ne peut-ètre effectuée");
}
}
commande=1;
}
if(nChoice == 6)
{
printf("6 :Confirmation de la reception du message.\r\n");
if(WriteCOM(CMD_MESSAGE_RECU , strlen(CMD_MESSAGE_RECU ), &nBytesWritten)) { // Envoi de la commaande CMD_MESSAGE_RECU
if(ReadCOM(buffer, sizeof(buffer)-1, &nBytesRead)) { // Une fois la commande écrite il faut la comparer avec la valeur qui est contenue dans le buffer
if ( strcmp(buffer, VALEUR) == 0 )
{
puts("ok");
}
}
else {
puts("erreur: Le message a bien été envoyé");
}
}
commande=1;
}
if (strcmp(CMD_SIM_OK ,"+CPIN:READY") 0) // si CMD_SIM_OK "+CPIN..." alors répondre que la carte sim est opérationnelle.
{
printf("Ok\n");
}
if (strcmp(CMD_DEMANDE_ENVOI , "+CGREG:0,1 0F8D 0000 2135") 0) // si CMD_DEMANDE_ENVOI "+CGREG:0,1 0F8D 0000 2135" alors répondre que l'envoi peut s'effectuer
{
printf("Ok\n");
}
if (CMD_ENVOI_DE_MESSAGE == REPONSE_SIM_OK ) // La réponse étant 1 alors il peut recevoir le sms
{
printf("Ok\n");
}
printf("CMD_ECRIRE_NUMERO =<<%s>> \n", numero); // Le numéro peut-ètre saisi
printf("> Texte a envoyer + "CMD_VALIDATION" \n"); // Saisi du message et envoi en tapant sur la combinaison CTRL + Z
if (CMD_MESSAGE_RECU == VALEUR) // Réponse confirmant l'envoi correct du message
{
printf("Ok\n");
}
}while(commande==0);
}
A voir également:
[Clos]Envoyer des sms à un téléphone portable via un modem
NHenry
Messages postés15102Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention27 mars 2024159 3 juin 2013 à 13:15
Bonjour,
Si c'est du C/C++, pourquoi avoir posté dans la catégorie VB ? Je déplace
Est-ce une source ou une question ?
Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).
v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list ---
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 3 juin 2013 à 14:10
- Titre à rallonge (que j'ai rénommé).
- Pas de question.
- Code sans indentation.
- Code sans coloration syntaxique.
- Posté dans la mauvaise section.
> Aucun effort ! C'est n'importe quoi... Y a vraiment des gens sans respect.
Il n'y aura donc aucune réponse à ta question, et j'en profite pour clore ce sujet.
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question