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

專注電子技術學習與研究
當前位置:單片機教程網 >> Arduino >> 瀏覽文章

基于Arduino和Flash的DisLab課件制作教程—3

作者:未知   來源:不詳   點擊數:  更新時間:2014年07月31日   【字體:

                 第三節  Arduino和Flash的連接——Arduino接受來自Flash的數據

    上一節我們講到讓Flash接受來自Arduino的數據,不過有時候我們還需要在Flash端來控制一下Arduino,例如在Flash端單擊一個按鈕來告訴Arduino開始發送或者停止發送數據。當然也可以在Flash端單擊一個按鈕來控制Arduino端的一個電磁鐵,讓它開始斷電從而讓小鐵球開始運動。當然所有這些都依賴于讓Arduino接受來自Flash端的數據,下面我們就來完成一個簡單的控制實驗,在Flash端放一個按鈕,單擊按鈕時改變Arduino端的一個Led等的暗亮,為了簡單起見,Arduino端的Led等就用D13端口也就是用板載的Led等。
**********************************以下是Arduino端的程序******************************
//此段程序由“桐桐老爸”編寫,如要引用請說明出處
#define LED_PIN 13     
#define lianxi '@'   //定義一個來自Flash端的聯系字符,隨意定,與Flash端一樣就可以
#define dataover "$"      //定義一個發送字符結束標記,也隨意定
char incoming ;            //定義一個變量,用于接收數據時用
int i=0;                   //定義一個變量i,用于記錄燈的狀態
void setup()
{
pinMode(LED_PIN, OUTPUT);           //定義LED_PIN端口為輸出端口
for(int i = 0; i < 3; i++)          //接通電源后閃3下
{    digitalWrite(LED_PIN, HIGH);
    delay(500);
     digitalWrite(LED_PIN, LOW);
     delay(500);}
Serial.begin(9600);                    //串口開始,波特率9600
Serial.print("Arduino to flash ready!");  //連接上電腦時發送一個字符串
Serial.print(dataover);                   //發送結束字符
}
void loop()
{  if(Serial.available() > 0)      //如果arduino接受到電腦端來的字符
{incoming = Serial.read();         //變量incoming就等于受到的字符
if(incoming == lianxi)   //假如收到的字符與定義的字符相同
 {if(i==0)               //如果燈是滅的
   {digitalWrite(LED_PIN, HIGH);   //就點亮
   i=1;   }            //燈的狀態量變為1
   else                //否則即燈是亮的          
   {digitalWrite(LED_PIN, LOW);  //就滅燈
   i=0;                 //燈的狀態量變為0
   }   
}  }  }
**********************************************************************************
  下面我們再來編寫Flash端的程序,只在動畫中放一個按鈕,單擊按鈕來發送數據。
  同樣用Flash cs來新建一個Actionscript 3.0類文件(flashtoarduino),程序內容如下,注意.as文件名也要取名為flashtoarduino.as。
*******************************以下為Actionscript 3.0類文件*********************
package 
{
import flash.events.Event;
import flash.display.Sprite;
import flash.display.MovieClip;;
import flash.net.Socket;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;
import flash.utils.Endian;
import flash.events.MouseEvent;
import flash.text.*; 
import flash.text.TextFieldAutoSize;
public class flashtoarduino extends Sprite
private static const lianxi:String = "@";//定義一個與arduino聯系字符
private static const dataover:String = "$";//定義一個結束字符,注意與arduino上一樣
private var _socket:Socket;
private var _proxyAddress:String = "127.0.0.1";
private var _proxyPort:uint = 5333;
var xsarduinotime:TextField = new TextField();//新建一個名為xsarduinotime的文本框 
//gettime主程序
public function flashtoarduino()
{
addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);    //偵聽類是否被添加到舞臺,每次添加時運行onAddedToStage
}
 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, 50,25);
s.graphics.endFill();
addChild(s);
s.x = 200;
s.y = 200;
 //下面的程序是與arduino建立連接,如果連接上了怎么樣,如果斷了怎么樣等等
 s.addEventListener(MouseEvent.CLICK, onClick);
_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);
}
//連接上了執行
private function onConnect(event:Event):void
{
trace("Socket Connected");//連接上就發送一個消息
}
private var buffer:String = "";//定義一個字符串緩存字符
 //下面程序師接受來自arduino的數據,一個字母一個字母接收的
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(dataover)) > -1)
{
msg = buffer.substring(0, index);
buffer = buffer.substring(index + 1);
trace("Message Received from Arduino : " + msg);
  xsarduinotime.width=400;   //文本框的寬度200
  xsarduinotime.x=100;       //文本框的位置
  xsarduinotime.y=10;
  xsarduinotime.text=msg;     //顯示time from arduino
  var format:TextFormat = new TextFormat();    //新建文字格式format
        format.size=24;                        //文字大小24
    xsarduinotime.setTextFormat(format);       //將文字格式賦予xsarduinotime文本框    
addChild(xsarduinotime);
}
}
      //下面就是onclick程序,就是點擊按鈕時要做的
private function onClick(event:MouseEvent):void
{
trace("onClick");
        if(!_socket.connected)         //假如沒有連接上,發送你要連什么的
{
trace("You must be connected to send a command to the Arduino.");
return;
}
_socket.writeUTFBytes(lianxi);//如果連接上,就發聯系字符給arduino
_socket.flush();//發送
}
               //下面定義關掉arduino時,顯示Socket Closed
private function onClose(event:Event):void
{
trace("Socket Closed");
}
                //下面是出錯時顯示的消息的
private function onIOError(event:IOErrorEvent):void
{
trace("IOErrorEvent : " + event.text);
}
//下面也是出錯時的
private function onSecurityError(event:SecurityErrorEvent):void
{
trace("SecurityErrorEvent : " + event.text);
}
}
}
************************************************************************************
好了,下面在用Flash cs新建一個actionscript3.0文件,然后保存在和上面的flashtoarduino類文件flashtoarduino.as同一個文件夾內,在屬性——類中填入flashtoarduino。這樣就大功告成了。
先連上Arduino,打開serproxy.exe,然后點擊Ctrl+Enter,可以看到桌面中間有一個綠色方塊,單擊它,就可以控制arduino上的燈了,試試看!
 
關閉窗口

相關文章

主站蜘蛛池模板: 射欧美| 综合九九 | 日韩免费高清视频 | 国产精品亚洲一区二区三区在线观看 | 久久成人精品视频 | 亚洲三级在线观看 | 欧美一级片a | 毛片1| 国产欧美精品在线观看 | 国产在线视频一区二区 | 国产一区二区三区在线视频 | 三级av在线 | 一级一级毛片免费看 | 亚洲伊人久久综合 | 成人综合一区二区 | 天天射夜夜操 | 国产乱码精品一区二区三区中文 | 91麻豆产精品久久久久久 | 午夜免费看视频 | 亚洲一区三区在线观看 | 香蕉久久a毛片 | 国产成人精品免费视频大全最热 | 日本小电影在线 | 毛片免费视频 | 亚洲 欧美 另类 综合 偷拍 | 国产亚洲精品综合一区 | 亚洲免费在线观看 | 色天堂影院| 色播av | 亚洲成网站 | 国产视频一区二区 | 亚洲欧洲成人在线 | 色综合久久久久 | 羞羞的视频在线看 | 日韩在线 | 精品国产久 | 久久久一区二区三区四区 | 国产精品揄拍一区二区久久国内亚洲精 | 欧美手机在线 | 中文字幕在线观看视频一区 | 亚欧洲精品在线视频免费观看 |