2011-04-05 19 views
0

我是flex新手。我有一个传感器发送数据作为文本文件。数据格式如下:dat = 110405120000 + 000.00 + 000.00 + 005.65 + 000.00 + 040.71 + 000.00 + 000.00 + 000.20。flex中显示和解析传感器数据(文本)

我该如何解析这些数据?我想输出是:

日期:11年5月4日 时间:12:00:00 CH01:000.00 CH02:000.00 CH03:005.65 CH04:000.00 CH05:040.71 CH06:000.00 CH07:000.00 CH08:000.20

回答

1

您可以使用此功能:

private function parse_data(input:String):Array { 
    input = input.replace("\x20",""); 
    input = input.replace("dat=",""); 
    var numbers:Array = input.split("+"); 

    //get date 
    var year:String = String(numbers[0]).substr(0,2); 
    var month:String = String(numbers[0]).substr(2,2); 
    var day:String = String(numbers[0]).substr(4,2); 
    var date:String = day+"-"+month+"-"+year; 

    //get time 
    var hours:String = String(numbers[0]).substr(6,2); 
    var mins:String = String(numbers[0]).substr(8,2); 
    var secs:String = String(numbers[0]).substr(10,2); 
    var time:String = hours+":"+mins+":"+secs; 

    //output array 
    var output:Array = new Array(); 
    output["date"] = date; 
    output["time"] = time; 

    //other chxx values 
    for (var index:int=1; index<numbers.length; index++) { 
    output["ch0"+index] = numbers[index]; 
    } 

    return output; 
} 

这是如何调用上面的函数:

var result:Array = 
parse_data("dat=110405120000+000.00+000.00+005.65+000.00+040.71+000.00+000.00+000.20"); 

这是数组结果:

{ 
    date:"05-04-11", 
    time:"12:00:00", 
    ch01:"000.00", 
    ch02:"000.00", 
    ch03:"005.65", 
    ch04:"000.00", 
    ch05:"040.71", 
    ch06:"000.00", 
    ch07:"000.00", 
    ch08:"000.20" 
} 

访问此阵列:

var date:String = result["date"]; 
var time:String = result["time"]; 
var ch01:String = result["ch01"]; 
... 

上述然而CH01是一个字符串,如果你需要整数值,你必须转换:

var ch01_value:int = int(ch01); 

希望这可以帮助

PS: BIG注:上述功能效果很好只有当你有'ch01'到'ch09', 如果你有'ch10'或更多,你需要修改它。

+1

什么是input = input.replace(“\ x20”,“”);做? – Ryan 2011-04-05 10:40:30

+0

为防万一输入字符串中有不必要的空格字符,我总是对所有东西都格外小心,哈哈 – nicola 2011-04-05 10:53:29

+1

我得到了雅,只用过replace(“”,“”);我。检查出来使用as3term,很高兴知道 – Ryan 2011-04-05 11:17:09