Sms via un téléphone Nokia sur un port série
-
13-09-2019 - |
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.
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!