Actionscript 3 并对来自 arduino 的传入字节进行排序

Actionscript 3 and sorting incoming bytes from an 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....

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

谢谢

如果您预先知道每个项目将包含多少个字符,您可以将所有内容读取为字符串并像这样获取每个单独的项目:

//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 代码并在每个项目之间放置某种标记。比如逗号 (,)。然后你的字符串看起来像这样:"item1,item2,longerItem3"。你可以像这样将该字符串拆分成数组:

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。