在flex中显示和解析传感器数据(文本)

时间:2011-04-05 06:54:01

标签: flex flex3 flexbuilder

我是初学者。我有一个传感器,可以将数据作为文本文件发送。数据格式如下:dat = 110405120000 + 000.00 + 000.00 + 005.65 + 000.00 + 040.71 + 000.00 + 000.00 + 000.20。

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

日期:05-04-11 时间: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

2 个答案:

答案 0 :(得分: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);

希望这可能会有所帮助

P.S .: 大注:只有你有'ch01'到'ch09',上面的功能才能正常工作, 如果你有'ch10'或更多,你需要修改它。

答案 1 :(得分:0)

阅读文件:http://www.openwritings.net/content/read-text-whole-file 使用String.split()和其他字符串函数:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/String.html 您也可以随时将正则表达式添加到公式(RegExp):]

BLZ