2015-07-26 2 views
1

J'essaie d'exécuter une commande USSD en utilisant un modem GSM.Exécution d'une commande USSD sur un modem GSM (mauvais encodage peut-être)

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

et le résultat que je reçois est illisible

"+ CUSD: 0," Æ · ÜNÓu9XŽt¤å1: - u0Œtši7è, Óëizy®ƒ5ÓnÔL »Ai7½, w ‡ éé ·; Ì.ÏAòòœvÓËsÖL » », 15"

lorsque je tente le même code USSD sur le téléphone mobile en utilisant la même sim j'obtenir un résultat correct qui est

"Forfait: 909DA. Recharchege: 0.0DA Min gratuit: 0Min. Min Restantes: 0min internationales »

changeant le jeu de caractères AT + CSCS du GSM à l'IRA ou PCCP, PCDN, 8859-1 ne marche pas changer la réponse est la même réponse exactement

et le changement AT + CSCS à six pans me donne une erreur:

AT+CSCS="HEX" 
AT+CUSD=1,"*200#",15 

OK 
+CUSD: 2,"Unexpected Data Value",15 
+CUSD: 2,"Unexpected Data Value",15 
ERROR 

et changer à UCS2 et d'appeler la USSD faire mon redémarrage du modem

AT+CSCS="UCS2" 
AT+CUSD=1,"*200#",15 
+1

Les deux erreurs de valeur de données inattendues sont pour le '*' et ' # 'car ils ne sont pas des caractères hexadécimaux. Lorsque vous modifiez le codage de caractères avec AT + CSCS, il s'applique à ** toutes ** les chaînes suivantes, comme je l'ai mentionné dans ma réponse. Voir [cette réponse] (http://stackoverflow.com/a/18672278/23118) pour un exemple de réglage UTF-8 avec codage UCS2 actif.La même erreur s'applique dans le second cas avec UCS2, bien que le comportement du redémarrage ne soit pas aussi bon que l'impression d'un message d'erreur utile "Valeur de données inattendue". – hlovdal

Répondre

3

La commande AT+CUSD est spécifiée dans 27.007 et le format du code de résultat non sollicité est défini comme +CUSD: <m>[,<str>,<dcs>].

De votre réponse reçue vous pouvez voir que <m> est 0 et <dcs> est 15 en plus du charabia pour <str> qui, par ailleurs ne pas simplement la carte directement à l'encodage des caractères AT+CSCS; il y a une section entière consacrée à expliquer sa présentation que vous devez regarder plus loin.

la norme Recherche 23,038 référencé dans les 27.007 <dcs> valeur 15 cartes pour Langue non précisée mais la lecture du texte ci-dessus, il semble aussi être identique à alphabet par défaut bit GSM 7. Donc oui, votre suspicion sur les problèmes d'encodage est correcte et malheureusement les standards ne sont pas très intuitifs, vous devez plonger profondément. Pour déboguer cela, je commencerais par définir AT+CSCS="HEX" et vérifier que les données reçues ont un sens au décodage, puis travailler soit sur le présenter dans un format utilisable ou éventuellement le décoder explicitement à partir de hex dans le logiciel vous-même (mais soyez conscient ce changement AT+CSCS s'applique ensuite à toutes les chaînes à partir de ce moment, y compris le <chset> paramètre de AT+CSCS lorsque vous voulez changer l'encodage à quelque chose d'autre plus tard ...)

+0

D'abord, merci pour la réponse très utile. Je commence à penser que le est crypté cela peut-il être possible? parce que j'ai essayé de nourrir le charabia que j'ai eu en réponse dans un décodeur GSM 7bit mais sans chance. rien qui ressemble à un message clair n'a été trouvé. – Ayoub