Arduino接收数据到Flash后如何创建delay/interval

How to create delay/interval after receiving data from Arduino to Flash

我同时在使用arduino和flash,我想在接收数据时创建一个延迟(如定时器功能)并将其显示在flash swf文件中。

我已经成功地显示了从arduino传来的数据到flash,但是,每次我按下压力传感器,由于没有interval/delay/timer功能,swf中的数据显示变得聚集。

我是否需要创建单独的计时器并创建一个新函数?如果需要,我如何将其与 "onTick2" 相关联?

a.addEventListener(ArduinoEvent.ANALOG_DATA, onTick2);

function onTick2(e:ArduinoEvent):void
{
  var forceValue:Number;
  var forceNum:Number;
  forceValue = a.getAnalogData(0); //this is the code to get the data from the sensor data in arduino
  forceNum = (forceValue/9.1);


  myFormat = new TextFormat();
  myFormat.font = "Arial";
  myFormat.size = 36;
  myFormat.color = 0xFFFFFF;

  myText = new TextField();
  myText.x = 250;
  myText.y = 240;
  myText.text ="\n"+forceNum.toString()+" Avg. Pressure";
  myText.height = 200;
  myText.width = 200;
  myText.defaultTextFormat = myFormat;

  addChild(myText);

}

不完全清楚你在问什么(数据是 "clustered")但有几件事 –

您正在为每个 Arduino 事件创建一个新的 TextField 并将它们添加为子项。您是希望显示所有过去的事件,还是只想在一个持久的 TextField 中显示当前的 Arduino 数据?

  • 如果是前者,您可能需要稍微移动一下它们。现在你将它们堆叠在一起。

  • 如果是后者(我猜这就是你想要的),你应该在该函数之外创建你的 TextField(例如,在你添加 eventListener 之前。一定要给 Textfield 一个名字,这样你可以参考。

    myText = new TextField();
    myText.name = "textDisplay"
    etc.
    

然后在您的函数中,您只需将数据分配给之前创建的 TextField 容器。

textDisplay.text ="\n"+forceNum.toString()+" Avg. Pressure";

(我在 Flex 中使用 AS3 类,完全忘记了 Flash 是如何处理事物的(没有 typeDef、public/private 等,但我相信代码的要点是正确的。)

哦等等 - 我看到您在每个新数据位之前添加一行 return。那是你想要的吗?如果是这样,您可能需要设置这些附加属性:

myText.multiline = true;
myText.wordWrap = true; // if you want text to wrap