短信通过串口连接诺基亚手机

时间:2009-06-12 01:33:29

标签: c# sms serial-port nokia

我正试图通过串口通过诺基亚手机发送短信,这很容易通过腻子。来自nokia documentation的命令工作正常。

然而,尝试从c#应用程序发送相同的命令失败了。我已经运行了Sysinternals PortMon并且可以看到命令通过OK,我能看到的唯一区别在于它连接的方式,但我找不到可以解决这些差异的命令。

我正在运行的代码看起来有点像这样

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 

有没有人知道如何解决这些问题?我还注意到,当我发出命令时,手机没有响应应用程序并且没有任何确认,因此我怀疑问题出在连接上,而不是最后的那些消息。

2 个答案:

答案 0 :(得分:1)

尝试查看是否可以通过手机读取串行通信。发送'AT'后,手机应响应'OK'。在接受SMS位之前验证串行通信是否正常可能是个好主意。

根据我的记忆,我认为在AT + CMGS之后应输入消息,然后输入ctrl-z,不需要换行符。你能尝试将WriteLine(消息)改为Write(消息)吗?

希望这有帮助!

答案 1 :(得分:0)

您需要等待“>”在写出信息之前。另外,请勿使用CR / LF(WriteLine)终止消息。