Bonjour à tous,

Je veux communiquer avec un modem (HUAWEI WIRELESS MODEM (153.6K)) attaché au port COM3 en utilisant les commandes AT mais je n'y arrive pas.

Paramètres du port : 9600 bauds, Pas de parité, 8 bits de donées, 1 bit de stop.

Diagnostics : D'après son constructeur, le modem supporte les commandes AT. D'ailleurs je l'ai déjà testé depuis le panneau de configuration (Gestionnaire de périphériques > Modems > HUAWEI WIRELESS MODEM (153.6K) > Diagnostics > Interroger le modem) et le modem répond très bien aux commandes envoyées par le programme de test.

Problème : Je n'arrive pas à lire, depuis mon programme, la réponse du modem lorsque je lui envoie une commande. Déjà je ne suis pas sûr s'il a bien recu la commande ...

Voici le code complet de mon programme :
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
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#include <windows.h>

#define PORT "COM3"

int main(void)
{
   HANDLE hCom = CreateFile(PORT, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);

   if (hCom != INVALID_HANDLE_VALUE) 
   {
       DWORD dwBytes;
       char commande[256] = "AT\r\n", reponse[256];

       printf("Envoi d'une commande de test au modem.\n");
       WriteFile(hCom, commande, (DWORD)strlen(commande), &dwBytes, NULL);
       printf("Reponse du modem : ");
       ReadFile(hCom, reponse, (DWORD)sizeof(reponse), &dwBytes, NULL); /* Bloque indefiniment !!! */
       printf("%s\n", reponse);

       CloseHandle(hCom);
   }
   else
       printf("Impossible d'ouvrir le port %s.\n", PORT);

   return 0;
}
J'ai déjà aussi testé CR seulement puis LF seulement à la place de CRLF. Ca ne change absolument rien.

Questions :
1. Pouvez-vous me dire pourquoi mon programme ne fonctionne pas correctement ?
2. Mon véritable but est de créer un petit numéroteur téléphonique. Existe t-il d'autres méthodes qui permettent d'y arriver sans utiliser les commandes AT ? Une API, une interface COM, ... ?

Je veux juste ordonner à mon modem de composer un numéro, pas faire communiquer deux PC entre-eux ou un autre truc compliqué ...

Merci d'avance.

Winux.