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 :
J'ai déjà aussi testé CR seulement puis LF seulement à la place de CRLF. Ca ne change absolument rien.
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; }
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.
Partager