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

我正试图通过串口发送短信,这很容易通过腻子。 诺基亚文档中的命令工作正常。

但是,尝试从ac#应用程序发送相同的命令失败了。 我已经运行了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’。 在接受SMS位之前validation串行通信是否正常可能是个好主意。

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

希望这可以帮助!