Actionscript 3并从arduino中排序传入的字节

时间:2015-02-27 08:25:30

标签: arrays actionscript-3 flash arduino

我是使用动作脚本的新手,所以我道歉,如果这没有意义,我遇到的问题是来自我的arduino的传入字节没有正确存储在数组中。字节从我的arduino一次一个地存在,并将存储在as3中的数组中。

我有两个值SF-F8-001,SF-F8-002和SF-F8-003等......当我跟踪输入的字节时,我得到这个:

S
F
-
F
8
-
0
0
1

所以当我看到我意识到我需要一个数组存储字节,因为他们进来但是我尝试了很多不同的东西,但它没有工作 但是下面的代码似乎让我接近我想要的结果

    import flash.events.*;
import flash.net.Socket;
import flash.utils.ByteArray;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLVariables;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequestMethod;




var ary:Array = new Array();
var bar_grab:Array = new Array();
var array:Array = new Array();




trace("__AS3 Example__");
var socket:Socket = new Socket("localhost",5331);
socket.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);




function socketDataHandler(event:ProgressEvent):void
{

var str:String = String(socket.readUTFBytes(socket.bytesAvailable));

var b:String;

bar_grab.push(str);

b = bar_grab.join("");

boxtwo.text = b;


}

这段代码让我这个

SF-F8-001SF-F8-002SF-F8-003 etc...

然而,我想要的结果就是这个

SF-F8-001,SF-F8-002,SF-F8-003 etc....

所以,如果有人能帮助我解决这个问题,我将不胜感激

谢谢

1 个答案:

答案 0 :(得分:0)

如果您事先知道每个项目将包含多少个字符,您可以阅读所有字符串并获取每个单独的项目:

//Main string containing all items
var allString:String = "123456789";
//Number of chars in of item
var charsInItem = 3;
var item:String;
var index:int;
var resultArray:Array = new Array();
for(var i:int = 0; i < allString.length/charsInItem; i++)
{
    index= i*charsInItem;
    //traces name of one item
    item = allString.slice(index, index+charsInItem);
    resultArray.push(item);
    trace(item);
}

//Output:
//123
//456
//789

如果你不知道一个项目中的多个字符或者它有所不同,我建议调整Arduino代码并在每个项目之间添加某种标记。就像说逗号(,)。然后你的字符串看起来像这样:&#34; item1,item2,longerItem3&#34;。您可以将该字符串拆分为数组:

var array:Array = new Array();
var allString:String = "item1,item2,longerItem3";

//This splts string into array items using comma (,) as a seperator
array = allString.split(",");
for(var i:int = 0; i < array.length; i++)
{
    //trace every array element
    trace(array[i]);
}
//Output:

//item1
//item2
//longerItem3

我应该补充一点,即使你知道一个项目中有多个字符,我仍然建议使用方法nr.2。