久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> Arduino >> 瀏覽文章

Arduino與Flash的As3連接

作者:未知   來源:互聯(lián)網(wǎng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年07月31日   【字體:

 終于搞定了Arduino和Flash的As3連接,真應(yīng)該慶祝一下,呵呵。

下面程序?qū)崿F(xiàn)的功能是點(diǎn)擊flash上的按鈕,arduino上就會開始閃燈,并接受arduino上發(fā)來的數(shù)據(jù)。再點(diǎn)擊flash上的按鈕,閃燈結(jié)束,并接受arduino上發(fā)來的數(shù)據(jù)。
——————————————————————————————————————————————
首先放上Arduino端代碼:
#define LED_PIN 13
#define TOGGLE_LED_STATE 't'   //定義一個(gè)來自Flash端的聯(lián)系字符,隨意定,與Flash端一樣就可以
#define EOL_DELIMITER "$"      //定義一個(gè)發(fā)送字符結(jié)束標(biāo)記,也隨意定
int incoming = 0;            //定義一個(gè)變量,用于接收數(shù)據(jù)時(shí)用
boolean shouldBlinkLED = false;      //是否閃燈值,初始為不閃
void setup()
{
Serial.begin(9600);
      Serial.print("INITIALIZING");  //連接上電腦時(shí)發(fā)送一個(gè)字符串
      Serial.print(EOL_DELIMITER);
 
pinMode(LED_PIN, OUTPUT);   
 
blinkLED(5);                     //arduino剛連上電腦時(shí)閃燈5下
 
      Serial.print("READY");             //發(fā)送“ready”到電腦端
    Serial.print(EOL_DELIMITER);
}
void loop()
{
if(shouldBlinkLED)           //如果閃燈,就閃燈一下
{
          blinkLED(1);               
}
 
if(Serial.available() > 0)          //如果arduino接受到電腦端來的字符
{
incoming = Serial.read();         //變量incoming就等于受到的字符
 
if(incoming == TOGGLE_LED_STATE)   //假如收到的字符與定義的字符相同
{
    shouldBlinkLED = !shouldBlinkLED;//轉(zhuǎn)變閃燈值,如果閃燈就變不閃,不然相反
 
Serial.print("LED BLINK STATE: "); //同時(shí)發(fā)送字符串"led blink state:"
if(shouldBlinkLED)                 //假如正在閃,發(fā)“on”
{
Serial.print("ON");
}
        else
        {
          Serial.print("OFF");                //否則發(fā)"off"
        }
Serial.print(EOL_DELIMITER);
   }
}
}
//下面是閃燈程序,這就不解釋了
void blinkLED(int count)
{ for(int i = 0; i < count; i++)
{
    digitalWrite(LED_PIN, HIGH);
    delay(500);
     digitalWrite(LED_PIN, LOW);
     delay(500);
}
}
————————————————————————————————————————————————
下面是Flash端代碼,建一個(gè)FlashBlink.as文件
package 
{
import flash.events.Event;
import flash.display.Sprite;
import flash.net.Socket;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;
import flash.utils.Endian;
import flash.events.MouseEvent;
 
public class FlashBlink extends Sprite
{ private static const TOGGLE_LED_STATE:String = "t";//定義一個(gè)與arduino聯(lián)系字符
private static const EOL_DELIMITER:String = "$";//定義一個(gè)結(jié)束字符,注意與arduino上一樣
 
private var _socket:Socket;
private var _proxyAddress:String = "127.0.0.1";
private var _proxyPort:uint = 5333;
public function FlashBlink()
{
addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}
               //下面代碼是在畫一個(gè)方塊按鈕,并且定義點(diǎn)擊按鈕時(shí)運(yùn)行程序onclick
private function onAddedToStage(event:Event):void
{
removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
var s:Sprite = new Sprite();
s.graphics.beginFill(0x00FF00);
s.graphics.drawRect(0,0, 200,100);
s.graphics.endFill();
addChild(s);
s.x = 50;
s.y = 50;
s.addEventListener(MouseEvent.CLICK, onClick);//點(diǎn)擊時(shí)運(yùn)行onclick程序           //下面的程序是與arduino建立連接,如果連接上了怎么樣,如果斷了怎么樣等等
                       _socket = new Socket();
       _socket.addEventListener( Event.CONNECT, onConnect );
_socket.addEventListener( Event.CLOSE, onClose );
_socket.addEventListener( ProgressEvent.SOCKET_DATA, onSocketData );
_socket.addEventListener( IOErrorEvent.IO_ERROR, onIOError );
_socket.addEventListener( SecurityErrorEvent.SECURITY_ERROR, onSecurityError );
_socket.endian = Endian.LITTLE_ENDIAN;
_socket.connect(_proxyAddress, _proxyPort);
}
//連接上了執(zhí)行
private function onConnect(event:Event):void
{
trace("Socket Connected");//連接上就發(fā)送一個(gè)消息
}
private var buffer:String = "";//定義一個(gè)字符串緩存字符
              //下面程序師接受來自arduino的數(shù)據(jù),一個(gè)字母一個(gè)字母接收的
private function onSocketData(event:ProgressEvent):void
{
var data:String = _socket.readUTFBytes( _socket.bytesAvailable );
buffer += data;
var msg:String;
var index:int;
                       //下面是把接受到的字符拼起來
while((index = buffer.indexOf(EOL_DELIMITER)) > -1)
{
msg = buffer.substring(0, index);
buffer = buffer.substring(index + 1);
trace("Message Received from Arduino : " + msg);
}
}
            //下面就是onclick程序,就是點(diǎn)擊按鈕時(shí)要做的
private function onClick(event:MouseEvent):void
{
trace("onClick");
              if(!_socket.connected)         //假如沒有連接上,發(fā)送你要連什么的
{
trace("You must be connected to send a command to the Arduino.");
return;
}
_socket.writeUTFBytes(TOGGLE_LED_STATE);//如果沒有不連接上,就發(fā)聯(lián)系字符給arduino
_socket.flush();//發(fā)送
}
               //下面定義關(guān)掉arduino時(shí),顯示Socket Closed
private function onClose(event:Event):void
{
trace("Socket Closed");
}
                //下面是出錯(cuò)時(shí)顯示的消息的
private function onIOError(event:IOErrorEvent):void
{
trace("IOErrorEvent : " + event.text);
}
//下面也是出錯(cuò)時(shí)的
private function onSecurityError(event:SecurityErrorEvent):void
{
trace("SecurityErrorEvent : " + event.text);
}
}
}
 
關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 天天夜夜人人 | 国内久久精品 | 91av在线电影 | 亚洲欧美日韩成人在线 | 久久精品国产亚洲夜色av网站 | 婷婷色国产偷v国产偷v小说 | 久久亚洲综合 | 偷拍亚洲色图 | 亚洲国产精品久久久久 | 欧美精品乱码久久久久久按摩 | 国产久视频 | 久久99精品久久久久久国产越南 | 一级毛片在线播放 | 国产视频一区在线 | 精品日韩一区二区三区 | 91精品久久 | 日韩精品免费 | 五月天国产 | 日韩1区 | 欧美在线综合 | 在线免费观看黄视频 | 久久久久久久久久久久久久国产 | 欧美精品一区二区在线观看 | 国产精品无码久久久久 | 久久专区| 久久99精品久久 | 日韩欧美一级精品久久 | 99久久久国产精品 | 国产乱码精品1区2区3区 | 亚洲美乳中文字幕 | 伊人av在线播放 | 性高湖久久久久久久久3小时 | 亚洲色欧美另类 | 中文字幕高清av | 精品在线视频播放 | 国产美女自拍视频 | 午夜影晥 | 久久久黄色 | 九九免费| 国产在线视频一区二区 | 久久久精品久 |