2017-08-10 2 views
1

J'essaie de communiquer avec un modem GSM via un port série en C#.Communication avec un modem GSM avec commande AT

Jusqu'ici, j'ai été en mesure de me connecter avec lui, envoyer une commande AT et envoyer des SMS.

pour l'envoi de SMS, je vous envoie la commande AT suivante

AT+CMGF=1 /* set text mode */ 

AT+CMGS=8801911xxxxxx 

"hellp msg "+ (char)26 

son travail comme prévu.

Mais pour l'envoi d'un message USSD,

im essayant

AT+CMGF=0 /* PDU mode */ 
AT+CUSD=1,*121# , 15 

Mais son retour sans réponse.

J'ai essayé avec la bibliothèque GSMCOMM, elle n'a pas non plus de réponse.

J'ai essayé de convertir le texte en PDU, toujours pas de chance.

Alors, comment puis-je envoyer un message USSD en C# dans un port série à un modem et obtenir la réponse?

Répondre

2

Vous devez envoyer la commande USSD comme ceci:

AT+CUSD=1,"*121#",15

s'il vous plaît noter également AT+CMGF affecte uniquement l'envoi de SMS, USSD pas. Vous pouvez également vérifier this answer.

+0

en fait j'envoyais exactement cela, mais toujours pas de chance. Voici comment je peux envoyer et recevoir: _serialPort.WriteLine ("AT + CUSD = 1, \" * 121 # \ ", 15"); Thread.Sleep (1000) result = _serialPort.ReadLine(); ai-je besoin de faire quelque chose de plus pour obtenir une réponse USSD? –

+0

@ShofiqulAlam Avez-vous vérifié [this] (https://stackoverflow.com/questions/42700301/atcusd-not-working-on-modem-huawei-e3131a)? – vasek

+0

Non, Le lien a résolu mon problème. pouvez-vous le poster comme réponse afin que je puisse accepter? –

0

commande Envoyer USSD comme ceci:

sp.Write("AT+CUSD=1,\"*710#\",15\r");