我试图通过诺基亚手机通过串行这是通过腻子很容易发送短信。从诺基亚工作正常文档的命令。

然而,试图从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 

有没有人有关于如何化解这些问题的任何提示?我也注意到,当我发出了一个命令,所以我怀疑问题是与连接,在最后不是那些消息的电话没有任何确认响应返回给应用程序。

有帮助吗?

解决方案

您需要写出消息前等待“>”。另外,不要用CR / LF(的WriteLine)终止该消息。

其他提示

尝试,看看是否可以读出从手机的串行通信。当您发送“AT”,手机应与“OK”回应。这可能是一个好主意,以验证串行通信正在对手机短信位之前的工作。

这是我记得,我认为AT + CMGS后,应进入和随后CTRL-Z的信息,且无需换行。你可以尝试改变的WriteLine(消息)写(消息)?

希望这有助于!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top