2009-06-12 11 views
2

Ich versuche, eine SMS über ein Nokia Telefon über die serielle Schnittstelle zu senden, die einfach über Kitt ist. Die Befehle von der nokia documentation funktioniert gut.Sms über ein Nokia Telefon über eine serielle Schnittstelle

Der Versuch, die gleichen Befehle aus einer C# -Anwendung zu senden, schlägt jedoch kläglich fehl. Ich habe Sysinternals PortMon ausgeführt und kann sehen, dass die Befehle durch OK kommen. Der einzige Unterschied, den ich sehen kann, ist die Art, wie es sich verbindet, aber ich habe Probleme, die Befehle zu finden, die diese Unterschiede ausgleichen würden.

Der Code, den ich laufen werde wie dieses

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 Ich sehe in der Spur von der seriellen Schnittstelle sind

Zu Beginn

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

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 man diese Probleme ausbügeln kann? Ich merke auch, dass das Telefon nicht mit einer Bestätigung auf die Anwendung reagiert, wenn ich einen Befehl ausstelle, so vermute ich, dass das Problem mit der Verbindung ist, nicht diese Nachrichten am Ende.

+0

Haben Sie überprüft, ob das Telefon eine Hardware-Flusskontrolle benötigt? – toholio

+0

Der Handshake und die Flusskontrolle sind die gleichen wie der Kitt, den ich sehen kann. Um klarzustellen; der Shake: 1 Replace: 43 ist was anders ist, aber ich bin mir nicht sicher, wie ich das ändern soll. – mjallday

+0

hast du eine Antwort gefunden? Ich habe Probleme, die Antwort von meinem Telefon zu bekommen ... –

Antwort

0

Sie müssen auf das ">" warten, bevor Sie die Nachricht schreiben. Beenden Sie die Nachricht auch nicht mit einem CR/LF (WriteLine).

1

Versuchen Sie zu sehen, ob Sie die serielle Kommunikation vom Telefon auslesen können. Nachdem Sie "AT" gesendet haben, sollte das Telefon mit "OK" antworten. Es könnte eine gute Idee sein zu überprüfen, dass die serielle Kommunikation funktioniert, bevor Sie das SMS-Bit übernehmen.

Soweit ich mich erinnere, denke ich, dass nach AT + CMGS die Nachricht eingegeben werden sollte und gefolgt von Ctrl-Z, und keine neue Zeile benötigt wird. Könnten Sie versuchen, die WriteLine (Nachricht) in Write (Nachricht) zu ändern?

Hoffe, das hilft!

+0

Dies ist definitiv nicht passiert. Daher denke ich, das Problem ist die Zeile, die Shake hat, Ersetzen Sie es. Ich schätze, ich versuche weiter herauszufinden, was das Problem ist ... Danke. – mjallday

Verwandte Themen