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

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

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

作者:未知   來源:不詳   點(diǎn)擊數(shù):  更新時(shí)間:2014年07月31日   【字體:

                   第二節(jié)  Arduino和Flash的連接——Flash接受來自Arduino的數(shù)據(jù)

    上那一節(jié)講到了Arduino和Flash連接的基本設(shè)置,這節(jié)就來做個(gè)實(shí)驗(yàn),讓FLash接收來自Arduino的數(shù)據(jù)。整個(gè)實(shí)驗(yàn)分為兩部分,Arduino端的編程和Flash端的編程。沒有任何的硬件電路,只是做一個(gè)數(shù)據(jù)傳輸?shù)臏y(cè)試。
    首先對(duì)Arduino進(jìn)行編程,目的是讓Arduino每隔一定的時(shí)間由串口發(fā)送一個(gè)數(shù)據(jù),這里每個(gè)1秒發(fā)送一個(gè)Arduino的計(jì)時(shí)數(shù)據(jù)。
*************************以下為Arduino端的程序*******************************
unsigned long ntime;    //定義一個(gè)長(zhǎng)整形數(shù)ntime
void setup()
{
  Serial.begin(9600);    //開始一個(gè)串口通信,波特率9600
}
void loop()
{
    ntime=millis();         //讓ntime等于此刻Arduino的時(shí)間
   Serial.print(ntime);    //串口發(fā)送ntime
   Serial.println("$");    //發(fā)送一個(gè)結(jié)束字符“$”;  
delay(1000);             //等待1秒
}
**************************************************************************
下面編寫Flash端的程序,我用的是Flash professional cs5.5軟件
先新建一個(gè)Actionscript3.0類文件,類名稱就取為gettime,寫入以下程序
***************************以下actionscript3.0類文件(gettime)程序********
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 gettime extends Sprite
private static const dataend:String = "$";//定義一個(gè)結(jié)束字符,注意與arduino上一樣
private var _socket:Socket;
private var _proxyAddress:String = "127.0.0.1";
private var _proxyPort:uint = 5333;
 
var xsarduinotime:TextField = new TextField();//新建一個(gè)名為xsarduinotime的文本框 
 
 
//gettime主程序
public function gettime()
{
addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);    //偵聽類是否被添加到舞臺(tái),每次添加時(shí)運(yùn)行onAddedToStage
}
            
private function onAddedToStage(event:Event):void
{
removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);    //移除偵聽
 
 //下面的程序是與arduino建立連接,如果連接上了怎么樣,如果斷了怎么樣等等
_socket = new Socket();
_socket.addEventListener( Event.CONNECT, onConnect );
_socket.addEventListener( Event.CLOSE, onClose );
_socket.addEventListener( ProgressEvent.SOCKET_DATA, onSocketData );  //偵聽有無來自端口的數(shù)據(jù)
_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;       //把來自串口緩存的一個(gè)個(gè)字符拼接起來
var msg:String;       //再定義一個(gè)字符串變量來msg
var index:int;        //一個(gè)整形變量index來讀取結(jié)束字符在buffer字符串中的位置
while((index = buffer.indexOf(dataend)) > -1)  //如果讀到了結(jié)束字符,也就是"$"
{
msg = buffer.substring(0, index);         //msg就等于去掉了“$”后的字符串
buffer = buffer.substring(index + 1);     //另buffer等于結(jié)束字符串的后一位,以便下一個(gè)字符串的接受
trace("Message Received from Arduino : " + msg);  //測(cè)試時(shí)候用,輸出以下msg的值
//下面我們讓它顯示在文本框中  
xsarduinotime.width=200;   //文本框的寬度200
  xsarduinotime.x=100;       //文本框的位置
  xsarduinotime.y=100;
  xsarduinotime.text=msg;     //顯示time from arduino
  var format:TextFormat = new TextFormat();    //新建文字格式format
        format.size=24;                        //文字大小24
    xsarduinotime.setTextFormat(format);       //將文字格式賦予xsarduinotime文本框    
addChild(xsarduinotime);
}
}
//下面定義關(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);
}
}
}
******************************************************************************
好了,下面在用Flash cs新建一個(gè)actionscript3.0文件,然后保存在和上面的gettime類文件gettime.as同一個(gè)文件夾內(nèi),在屬性——類中填入gettime。這樣就大功告成了。下面來試一下具體的使用。
首先連接Arduino和電腦,然后雙擊serproxy.exe文件,然后再flash cs軟件中按Ctrl+Enter,怎么樣,受到來自Arduino的數(shù)據(jù)了吧。那么如果不在Flash CS軟件下怎么運(yùn)行呢。
  差不多,先雙擊serproxy.exe文件,然后用Flash Player打開你剛生成的SWF文件......居然打不開?不要急,如果直接用Flash Player來打開的話,需要一些簡(jiǎn)單的設(shè)置,因?yàn)镕lash Player默認(rèn)是不允許讀取數(shù)據(jù)的。
在Flash Player窗口中右鍵——高級(jí)——受信任位置設(shè)置,把你的SWF所在的位置加進(jìn)去。這樣就成了。
 
關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 91不卡 | 欧美日韩亚洲国产综合 | 亚洲国产精品久久 | 精品网 | 男女爱爱福利视频 | 中文字幕91 | 亚洲欧美激情国产综合久久久 | 色本道 | 7777在线视频 | 操人网站 | 超碰在线播 | 91在线视频精品 | 日韩五月天 | 影音先锋中文字幕在线观看 | 最新黄色在线观看 | 亚洲一区二区三区免费视频 | 欧美日韩一区二区三区在线观看 | 91成人精品 | 国产精品美女久久久久久久久久久 | 日韩中文字幕 | 免费视频一区二区 | 在线观看亚洲精品视频 | 91亚洲国产成人久久精品网站 | 亚洲成人国产精品 | 国产小视频在线 | 国产在线播放av | 国产99视频精品免费播放照片 | 国产精品视频网址 | 国产一级毛片精品完整视频版 | 亚洲人在线观看视频 | 国产精品久久久久aaaa | 亚洲在线看 | 欧美一级免费观看 | 第四色播日韩第一页 | 日韩精品一区二区三区视频播放 | av一级| 国产欧美一区二区三区久久人妖 | 欧美激情在线精品一区二区三区 | 天天射网站 | 91精品久久久久久久久久入口 | 亚洲高清在线视频 |