【问题标题】:Sms via a nokia phone over a serial port通过串行端口通过诺基亚手机发送短信
【发布时间】:2010-08-14 23:54:59
【问题描述】:

我正在尝试通过诺基亚手机通过串口发送短信,这很容易通过腻子。 nokia documentation 的命令运行良好。

但是,尝试从 c# 应用程序发送相同的命令失败了。我已经运行了 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 

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

【问题讨论】:

  • 你检查过手机是否需要硬件流控吗?
  • 握手和流量控制与我所看到的腻子相同。澄清; Shake:1 Replace:43 是不同的,但我不知道如何改变它。
  • 你找到答案了吗?我正在努力从我的手机获得送货响应......
  • 抱歉,没能更进一步。

标签: c# sms serial-port nokia


【解决方案1】:

试试看能不能读出手机上的串口通讯。发送“AT”后,手机应回复“OK”。在接收 SMS 位之前验证串行通信是否正常工作可能是个好主意。

据我的记忆,我认为在AT+CMGS之后应该输入消息,然后按ctrl-z,并且不需要换行。您可以尝试将 WriteLine(message) 更改为 Write(message) 吗?

希望这会有所帮助!

【讨论】:

  • 这绝对不会发生。因此我想问题是有 Shake, Replace 的那条线。我想我最好继续尝试找出问题所在。谢谢。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多