2

パテを介して簡単にシリアル経由でノキアの電話を介してSMSを送信しようとしています。nokia のドキュメントのコマンドは正常に機能します。

ただし、ac# アプリケーションから同じコマンドを送信しようとすると、惨めに失敗します。Sysinternals PortMon を実行しましたが、コマンドが正常に実行されていることがわかります。唯一の違いは接続方法にありますが、それらの違いを解決するコマンドを見つけるのに苦労しています。

私が実行しているコードは、このように少し見えます

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();
                    }
                }

シリアル ポートからのトレースで見られる違いは次のとおりです。

開始時

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

そして最後に

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 

これらの問題を解決する方法についてのヒントはありますか? また、コマンドを発行したときに電話がアプリケーションに確認応答を返していないことに気付きました。そのため、問題は最後のメッセージではなく、接続にあると思われます。

4

2 に答える 2

0

メッセージを書き出す前に、>" を待つ必要があります。また、CR/LF (WriteLine) でメッセージを終了しないでください。

于 2009-12-23T23:39:45.620 に答える