日期:2014-05-19  浏览次数:20852 次

小妹请教字符数组问题!请师哥们帮忙~
我发送一条指令给服务器,服务器给我返回的消息格式如下:
s   <
s   1,1,1,2252,8613900010001,测试-0001
s   2,3,1,2252,8613900010001,测试-0002
s   3,5,1,2252,8613900010001,测试-0003
s   4,7,1,2252,8613900010001,测试-0004
s   >

我如何把这个每一行记录保存到一个数组里,然后在从数组里把它们取
出来。

取出来的时候我只想要得到:
s   1,1,1,2252,8613900010001,测试-0001
s   2,3,1,2252,8613900010001,测试-0002
s   3,5,1,2252,8613900010001,测试-0003
s   4,7,1,2252,8613900010001,测试-0004
这几行数据就行,如何做请师哥们能代码明示。

还有我接收到的消息如下:
s   <
s   >
那我又该如何判断我没有接收到消息内容那。请师哥们能代码明示。

小妹刚刚入行不久,请各位师哥多多指教!

------解决方案--------------------
既然你的格式定义为
s <
s>
那你判断最后接收到的字符是不是 '> ' 就可以了

不过这只是最粗略的判断,更专业的做法是用正则先匹配s < s>
然后如果匹配通过,再判断总的数据长度,如果长度大于 "s < s> "长度之和,说明已经有内容了

要将内容取出来放到数组中,只需要去头去尾就好,然后简单的匹配一下就ok

好久米接分了滴说,纳分来 :)
------解决方案--------------------
看出来了是短信开发。

我发送一条指令给服务器,服务器给我返回的消息格式如下:
s <
s 1,1,1,2252,8613900010001,测试-0001
s 2,3,1,2252,8613900010001,测试-0002
s 3,5,1,2252,8613900010001,测试-0003
s 4,7,1,2252,8613900010001,测试-0004
s >


其实你被欺骗了!真正返回给你的是s <\r\ns 1,1,1,2252,8613900010001,测试-0001\r\ns 2,3,1,2252,8613900010001,测试-0002.......

就是说其实有\r\n的,

所以你可以
for (int i = 0; i < 21; i++)
{
ss_port.Write(Encoding.ASCII.GetBytes( "AT+CMGR= " + i + "\r "));//Replace( "\r\n ", " ")
string temps = " ";
temps = (Encoding.ASCII.GetString(ss_port.Read(1024))).ToString().Replace( "\r\n\r\nOK\r\n ", "* ");

这是我以前的程序供参考!

其实你可以设断点就看到“真相”!!!
if (temps.IndexOf( "s 1 ") != -1)
{
再一行行看。具体要你自己设断点调试。

有空请关注清清月儿主页 http://blog.csdn.net/21aspnet/ 700篇技术帖子