Question

Je suis en train d'envoyer un sms via un téléphone Nokia sur série qui est assez facile par l'intermédiaire du mastic. Les commandes de la documentation nokia fonctionne très bien.

Cependant, en essayant d'envoyer les mêmes commandes d'une application c # échoue lamentablement. J'ai couru Sysinternals PortMon et peut voir les commandes passent par OK, la seule différence que je peux voir est la façon dont il se connecte, mais je vais avoir du mal à trouver les commandes qui ces différences à aplanir.

Le code que je suis en cours d'exécution ressemble un peu comme ça

using (SerialPort port = new SerialPort(comPort, 9600, Parity.None, 8, StopBits.One))
            {
                port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
                port.ErrorReceived += new SerialErrorReceivedEventHandler(port_ErrorReceived);

                //port.ReceivedBytesThreshold = 1;
                port.DtrEnable = true;
                port.RtsEnable = true;
                port.ReadTimeout = 1;
                port.Handshake = Handshake.XOnXOff;


                try
                {
                    port.Open();

                    port.WriteLine("AT");

                    port.WriteLine("AT+CMGF=1");

                    port.WriteLine("AT+CMGS=\"" + number + "\"");

                    port.WriteLine(message);

                    port.Write(new byte[] { (byte)26 }, 0, 1);
                }
                finally
                {
                    if (port.IsOpen)
                    {
                        port.Close();
                    }
                }

Les différences que je vois dans la trace du port série sont

Au début

0.00001844  aspnet_wp.exe   IOCTL_SERIAL_SET_HANDFLOW   USBSER001   SUCCESS Shake:1 Replace:43 XonLimit:4096 XoffLimit:4096 

Et à la fin

0.00061153  aspnet_wp.exe   IOCTL_SERIAL_PURGE  USBSER001   SUCCESS Purge: RXABORT RXCLEAR  
0.00004442  aspnet_wp.exe   IOCTL_SERIAL_PURGE  USBSER001   SUCCESS Purge: TXABORT TXCLEAR 

Quelqu'un at-il des conseils sur la façon de fer sur ces questions? Je remarque aussi que le téléphone ne répond pas à l'application avec un accusé de réception lorsque j'envoie une commande donc je suppose que le problème est lié à la connexion, pas ces messages à la fin.

Était-ce utile?

La solution

Vous avez besoin d'attendre le « > » avant d'écrire le message. De plus, ne se termine pas le message avec un CR / LF (WriteLine).

Autres conseils

Essayez de voir si vous pouvez lire la communication série du téléphone. Après avoir envoyé « AT », le téléphone doit répondre par « OK ». Il pourrait être une bonne idée de vérifier que la communication série fonctionne avant de prendre le bit SMS.

D'après ce que je me souviens, je pense que, après AT + CMGS le message doit être saisi et suivi par ctrl-z, et aucun saut de ligne est nécessaire. Pourriez-vous essayer de changer le WriteLine (message) écrire (message)?

Hope this helps!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top