首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

小弟我问个AT指令操作短信猫读取所有短信的

2012-04-15 
我问个AT指令操作短信猫读取所有短信的C# codeprivate void button1_Click(object sender, EventArgs e){t

我问个AT指令操作短信猫读取所有短信的

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中接收

热点排行