数据断帧的协议处理

By admin at 23 天前 • 0人收藏 • 161人看过

一帧的数据断成了两节来接收, 还不能把后续的有效数据丢失, 那么不能用匹配了.

用下面的方法无论怎么断, 都可以正确解析出来.

blob.png

import console; 
//全帧
//var num = ">[CH1]P:-64.17dBm    [CH2]P:-37.86dBm   <"
//断帧1
//var num1 = ">[CH1]P:-64.17dBm    [CH"
//断帧2
//var num2 = "2]P:-37.86dBm   <"

//协议比对位
var func = function(i){
    return ({
        "[";
        "C";
        "H";
        "1";
        "]";
        "P";
        ":";
        "-";
        "8";
        "9";
        ".";
        "8";
        "8";
        "d";
        "B";
        "m";
    })[i]; 
}

//当前对比位
var index=1;
//通道号
var channel = 1;
//存结果
var retdata;
//模拟断帧接收
for(i=1;3;1){
    var str = console.getText( "请输入文本:" )
    var data = string.split(str) 
	do{
		if(data[1] == func(index) or index==4 or (index>=8 and index<=13)){
			if(index==4){
				channel = data[1];
			}
			if(index>=8 and index<=13){
				retdata = string.concat(retdata,data[1]);
			}
			index++;
			//连续符合
			if(index>16){
				//更新需要的值
				console.log(channel,retdata)
				retdata = null;
				index = 1;
			}
		}else {
			retdata = null;
			index = 1;
		}
		
		table.remove(data);	
	}while(#data);
	console.pause()
}


console.pause(true);


3 个回复 | 最后更新于 17 天前
23 天前   #1
//协议比对位
var func = λ(i) ("[CH1]P:-89.88dBm")[[i]];

字符串可以通过[i]取acsii码,绝对下标[[i]]取值

23 天前   #2

回复#1 @codex :

又学到了

17 天前   #3

回复#1 @codex :

总能写出这么优美简洁的代码

登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前在学aardio+halcon机器视觉.
Htmlayout界面在线学习文档
Sciter中文在线文档Sciter在线学习文档
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
C大Aardio论坛:Aar爱好者论坛
简码教程网:简码编程
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...