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.

War es hilfreich?

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!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top