2009-08-31 27 views
2

J'ai un modem GSM auquel est associé un ensemble de commandes spécifique. Je veux invoquer ces commandes en utilisant mon code C#. Est-il possible de faire cela?Accès au modem GSM en C#

modèle modem GSM: MOD 9001 BENQ GSM/GPRS Modem

Je n'ai pas de bibliothèque pour interagir avec ce modem

+0

Pourriez-vous fournir un peu plus de détails? Plus précisément quel modèle GSM (marque/modèle), quelles interfaces vous avez à travers le code (bibliothèque .NET/COM Interop) etc. –

Répondre

1

Sans connaître tous les détails pour le modem spécifique que vous mentionnez, l'approche générale de la communication avec modems est d'ouvrir une connexion de port série et de parler au modem en texte brut. Généralement en utilisant une variante du Hayes command set. Pour .NET, vous pouvez vous référer à System.IO.Ports.SerialPort (voir MSDN). Les paramètres de connexion (débit en bauds, bits de données, bits d'arrêt, parité, contrôle de flux) dépendent du modem mais un bon départ est d'essayer 57600, 8 bits de données, 1 bit d'arrêt, pas de parité et contrôle de flux matériel; ce sont des paramètres typiques. Le nom du port dépend fortement de la façon dont il est connecté à votre système, mais un bon endroit pour regarder si vous ne connaissez pas est le Gestionnaire de périphériques Windows sous les ports COM.

1

Je vois cette question est plutôt ancienne, mais je me bats avec mon propre modem avec les mêmes raisons. J'utilise C# atm pour accéder à mon propre modem.

Leur façon dont je me suis connecté au modem était comme mentionné précédemment System.IO.Ports.SerialPort. Vous devez indiquer à quel port COM se connecter.

En supposant que vous avez des pilotes standard pour le modem installé et il est connecté à l'ordinateur, vous pouvez obtenir une liste arrière des ports COM ouverts à l'aide:

string[] com_ports = SerialPort.GetPortNames(); 

En supposant que vous souhaitez vous connecter au premier port COM à partir du tableau ci-dessus. L'ouverture d'un port est un simple:

SerialPort port = new SerialPort(); 
port.portname = com_ports[0]; 
// ... Insert other port parameters 
port.Open(); 

commandes d'écriture au modem est aussi SIMPLES que:

port.write("some command"); 

Et la réponse est comming retour sur:

String response = port.ReadExisting(); 

.. Rappelez-vous juste ajoutez "\r" à la fin de toutes les commandes au modem. Il m'a fallu un jour pour savoir, pourquoi-o-pourquoi mon modem ne répondait pas à ma commande ... :-)