小弟我问个AT指令操作短信猫读取所有短信的
我问个AT指令操作短信猫读取所有短信的
我用这个代码想先得到短信列表,但是只得到了第一条,有时候竟然为空字符串。
可是我用超级终端执行这个命令总共是有三条数据的,你知道只是为什么吗?
下面是超级终端的结果:
下面是调试的时候的结果:
------解决方案--------------------
实在不行,你试下sp.Write的参数中传数组,接收也用数组
------解决方案--------------------
ReadExisting就是你读串口的方法怎么写的?
------解决方案--------------------
都是高人
------解决方案--------------------
个人觉得应该一直读,不要想象调用一次read方法,就能得到完整的想要的内容,一定要根据结束的字符来判断。
------解决方案--------------------
哦,看到了。要不你把超时设置长点,先跟踪下程序?
------解决方案--------------------
DataReceived中接收
- C# code
private void button1_Click(object sender, EventArgs e) { this.GetSMS(); } public string GetSMS() { System.IO.Ports.SerialPort sp = new System.IO.Ports.SerialPort("COM1", 9600); sp.Open(); sp.DiscardInBuffer(); sp.Write("at+cmgl=\"ALL\"\r"); sp.DiscardInBuffer(); int tick = Environment.TickCount; int timeout = 60000; bool at_finish = false; StringBuilder sb = new StringBuilder(); while (Environment.TickCount - tick < timeout && !at_finish) { sb.Append(sp.ReadExisting()); } sp.Close(); string result = sb.ToString(); return result; }
我用这个代码想先得到短信列表,但是只得到了第一条,有时候竟然为空字符串。
可是我用超级终端执行这个命令总共是有三条数据的,你知道只是为什么吗?
下面是超级终端的结果:
- C# code
at+cmgl="ALL" +CMGL: 1,"REC READ","10658830",,"10/11/07,17:49:46+32" (一些内容,略) +CMGL: 2,"REC READ","10658300",,"10/11/07,17:49:11+32" (一些内容,略) +CMGL: 3,"REC READ","10086",,"10/11/07,17:50:36+32" (一些内容,略) OK
下面是调试的时候的结果:
- C# code
at+cmgl="ALL" +CMGL: 1,"REC READ","10658830",,"10/11/07,17:49:46+32" (一些内容,略)
------解决方案--------------------
实在不行,你试下sp.Write的参数中传数组,接收也用数组
------解决方案--------------------
ReadExisting就是你读串口的方法怎么写的?
------解决方案--------------------
都是高人
------解决方案--------------------
个人觉得应该一直读,不要想象调用一次read方法,就能得到完整的想要的内容,一定要根据结束的字符来判断。
------解决方案--------------------
哦,看到了。要不你把超时设置长点,先跟踪下程序?
------解决方案--------------------
DataReceived中接收