免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2072 | 回复: 7

询问一个PHP SOCKET的问题 [复制链接]

论坛徽章:
0
发表于 2013-05-31 14:48 |显示全部楼层
有个gps串口转以太网的东西,这个以太口以tcp server的方式一直在发送包,格式是:所有语句均以“$”开头,以<CR><LF>结束,<CR>为0x0D<LF>为0x0A。
我现在用php取这些数据,一次取一行的数据,问题是并不是每次都能取到“$”开头的数据,有的时候是从中间开始的,请问如何控制总是以“$”开头?
举例:
正常数据扔出来这样:
$2SGGA,064324.00,3955.11933,N,11618.03183,E,G,07,1.3,50.6,M,0.0,M,,*68
$2SRMC,064324.00,A,3955.11933,N,11618.03183,E,0.0,322.5,310513,,,4*5C
$2SGGA,064325.00,3955.11933,N,11618.03185,E,G,07,1.3,50.5,M,0.0,M,,*6C
$2SRMC,064325.00,A,3955.11933,N,11618.03185,E,0.0,322.5,310513,,,4*5B
$2SGGA,064326.00,3955.11932,N,11618.03187,E,G,07,1.3,50.4,M,0.0,M,,*6D
$2SRMC,064326.00,A,3955.11932,N,11618.03187,E,0.0,322.5,310513,,,4*5B
$2SGGA,064327.00,3955.11932,N,11618.03187,E,G,07,1.3,50.4,M,0.0,M,,*6C
$2SRMC,064327.00,A,3955.11932,N,11618.03187,E,0.0,322.5,310513,,,4*5A

我想按照这种格式一行一行的取,但用php的socket_read取出来,有的时候是这样的:
RMC,144641.00,A,3955.11757,N,11618.03404,E,0.0,0.0,310513,,,4*59 $2S
或者
07,1.3,49.3,M,0.0,M,,*61 $2SRMC,064703.00,A,3955.11939,N,11618.03137,

请问如何总能按照标准格式取?谢谢

论坛徽章:
0
发表于 2013-05-31 15:20 |显示全部楼层
本帖最后由 satrun7 于 2013-05-31 16:26 编辑
  1. explode("\r \n" ,$data);
复制代码
或者是
  1. explode("\r\n" ,$data) ;
复制代码

论坛徽章:
0
发表于 2013-05-31 15:46 |显示全部楼层
本帖最后由 korx 于 2013-05-31 15:50 编辑

回复 2# satrun7


    这个函数是分割值到数组吧,我如果一开始取的值$data就不是完整的,怎么处理?

$socket=socket_create(AF_INET,SOCK_STREAM,getprotobyname("tcp"));
socket_connect($socket,"10.10.10.10",1000);
$receiveStr=socket_read($socket,70);
echo $receiveStr;

这样取出来的值有的时候就不是以$开头的,怎么限制只能取$开头的70个字符?

论坛徽章:
0
发表于 2013-05-31 16:20 |显示全部楼层
在数组里判断,如果值没有包含$字符的,就做unset。

论坛徽章:
0
发表于 2013-05-31 16:51 |显示全部楼层
回复 4# satrun7

也就是说重点在于看取到数据的合规性?搞个循环一直取?直到符合为止///
   

论坛徽章:
0
发表于 2013-05-31 17:02 |显示全部楼层
因为获取的数据流是不确定准确性,所以只能做不符合数据值做忽略处理。
放到数组里比较好处理。

论坛徽章:
0
发表于 2013-05-31 18:35 |显示全部楼层
回复 6# satrun7


    考虑了一下,还是决定多读一些数据处理后放到变量中,谢谢你的思路

论坛徽章:
0
发表于 2013-06-04 18:45 |显示全部楼层
tcp发出来的信息写文件,然后php去读文件解析这才是正解。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP