Sms über ein Nokia-Telefon über einen seriellen Anschluss
-
13-09-2019 - |
Frage
Ich versuche, eine SMS über ein Nokia-Handy über serielle zu senden, die über Kitt ist einfach genug. Die Befehle aus der nokia Dokumentation funktioniert.
Allerdings versucht die gleichen Befehle von einer C # -Anwendung kläglich versagt zu senden. Ich habe Sysinternals PortMon laufen und können die Befehle kommen durch OK sehen, der einzige Unterschied, den ich in der Art und Weise sehen sie verbindet, aber ich habe Probleme, die Befehle zu finden, die diese Unterschiede ausbügeln würde.
Der Code, den ich laufen sieht ein bisschen wie diese
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();
}
}
Die Unterschiede, die ich in der Spur von der seriellen Schnittstelle bin zu sehen sind
Zu Beginn
0.00001844 aspnet_wp.exe IOCTL_SERIAL_SET_HANDFLOW USBSER001 SUCCESS Shake:1 Replace:43 XonLimit:4096 XoffLimit:4096
Und ganz am Ende
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
Hat jemand irgendwelche Tipps, wie diese Probleme auszubügeln? Ich merke auch, dass das Telefon nicht mit einer Bestätigung zurück an die Anwendung reagiert, wenn ich einen Befehl ausgeben, damit ich das Problem mit der Verbindung, nicht die Nachrichten am Ende vermuten.
Lösung
Sie müssen sich für die „>“ warten, bevor die Nachricht auszuschreiben. Auch nicht beendet die Nachricht mit einer CR / LF (Console.WriteLine).
Andere Tipps
Versuchen Sie, um zu sehen, ob Sie die serielle Kommunikation vom Telefon auslesen können. Nachdem Sie ‚AT‘ zu senden, sollte das Telefon mit ‚OK‘ antworten. Es könnte eine gute Idee sein, um sicherzustellen, dass die serielle Kommunikation funktioniert, bevor auf der SMS-Bit nehmen.
Von dem, was ich mich erinnere, ich denke, dass nach AT + CMGs sollte die Nachricht eingegeben und durch Strg-Z folgen, und kein Newline benötigt wird. Könnten Sie die Writeline (Meldung) versuchen Wechsel zu schreiben (Nachricht)?
Hope, das hilft!