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

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

Flash連接Arduino mega的雙路藍(lán)牙高速連接成功

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

  由于要做雙無線傳感器,之前已經(jīng)搞定了雙路藍(lán)牙接收問題,但是一直都存在問題,主要是由于mega上的代碼不夠好導(dǎo)致數(shù)據(jù)經(jīng)常丟失,想了很多辦法,終于搞定了。

  首先主要是mega上的代碼的改進(jìn):
 ****************************************************************************
String comdata = "";
String shuju="#";
String shuju2="%";
int i;
char zhilin;
char sj1;
char sj2;
void setup()
 {
     Serial.begin(9600);
     Serial1.begin(9600);
     Serial2.begin(9600);
 }
void loop()
 {
  //下面語句是來發(fā)送指令給無線傳感器端的,主要是接收電腦端的指令然后轉(zhuǎn)發(fā)給傳感器端
        if (Serial.available() > 0)  
       zhilin=char(Serial.read());
         if(zhilin=='b')
         {
           Serial1.print("b");
           Serial2.print("b");
           zhilin='c';
         }
         if(zhilin=='o')
         {
          Serial1.print("o");
          Serial2.print("o");
           zhilin='c';
         }
//下面是串口1端上的藍(lán)牙接收到的數(shù)據(jù)處理
     while (Serial1.available() > 0)  
     {
        sj1= char(Serial1.read());
        if(sj1!='\n')
        shuju+=sj1;
        if(sj1=='$')
        {
          Serial.println(shuju);
       shuju="#";  
   }
     }
//下面是串口2端上的藍(lán)牙接收到的數(shù)據(jù)處理
     while (Serial2.available() > 0)
     {
       sj2= char(Serial2.read());
        if(sj2!='\n')
        shuju2+=sj2;
        if(sj2=='$')
        {
          Serial.println(shuju2);
       shuju2="%";  
     }
     }
     }
***********************************************************************
數(shù)據(jù)頭“#”或“%”來區(qū)別傳感器1和2的數(shù)據(jù)。
下面是Flash端的類文件:
***********************************************************************
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 shuanglanya extends MovieClip
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 static var  msg:String;
public static var  msg1:String;
public static var msgarray1:Array = new Array();   //新建一個(gè)名為msgarray的全局?jǐn)?shù)組
public static var ari1:Number=0;
public static var  msg2:String;
public static var msgarray2:Array = new Array();   //新建一個(gè)名為msgarray的全局?jǐn)?shù)組
public static var ari2:Number=0;
public static var  msg3:String;
var ri1:Number=0;
var ri2:Number=0;
var xsarduinotime1:TextField = new TextField();//新建一個(gè)名為xsarduinotime的文本框 
var xsarduinotime2:TextField = new TextField();//新建一個(gè)名為xsarduinotime的文本框 
var i:Number=0;
var index:int;
var index2:int;
 
//gettime主程序
public function shuanglanya()
{
 
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è)字符串緩存字符
private var buffer1:String = "";//定義一個(gè)字符串緩存字符
private var buffer2:String = "";//定義一個(gè)字符串緩存字符
private var buffer3:String = "";//定義一個(gè)字符串緩存字符
 //下面程序師接受來自arduino的數(shù)據(jù),一個(gè)字母一個(gè)字母接收的
       
private function onSocketData(event:ProgressEvent):void
{
var data:String = _socket.readUTFBytes( _socket.bytesAvailable );
buffer+=data;
while((index = buffer.indexOf(EOL_DELIMITER)) > -1)
{
i=0;
msg = buffer.substring(i, i+1);
while(msg!="#"&&msg!="%")
{
i++;
msg = buffer.substring(i, i+1);
}
 
 
if(msg=="#")
{
 msg1=buffer.substring(i+1,index);
   trace(msg1);
  xsarduinotime1.text=msg1;  
 
}
if(msg=="%")
{
msg2=buffer.substring(i+1,index);
    trace(msg2);
  xsarduinotime2.text=msg2;  
 
}
 buffer=buffer.substring(index+1);
 
  xsarduinotime1.width=400;   //文本框的寬度200
  xsarduinotime1.height=200;
  xsarduinotime1.x=100;       //文本框的位置
  xsarduinotime1.y=10;
   //顯示time from arduino
  
    xsarduinotime2.width=400;   //文本框的寬度200
  xsarduinotime2.height=200;
  xsarduinotime2.x=300;       //文本框的位置
  xsarduinotime2.y=10;
 
  var format:TextFormat = new TextFormat();    //新建文字格式format
        format.size=24;                        //文字大小24
    xsarduinotime1.setTextFormat(format);       //將文字格式賦予xsarduinotime文本框    
addChild(xsarduinotime1);
    xsarduinotime2.setTextFormat(format);       //將文字格式賦予xsarduinotime文本框    
addChild(xsarduinotime2);
}
}
    //下面就是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);
}
}
 }
**************************************************************
動(dòng)畫界面上的兩個(gè)文本框?qū)崟r(shí)顯示來自兩路藍(lán)牙的數(shù)據(jù)。
關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 中文字幕的av | 日韩三级视频 | 欧美日韩精品一区二区三区蜜桃 | 亚洲精品乱码久久久久久蜜桃 | 男女黄网站 | 国产视频91在线 | 日本免费视频 | 国产 欧美 日韩 一区 | 国产在线视频三区 | 精品久久久久久国产 | 久草成人网 | 日本天堂视频 | 九九色九九 | 中文字幕av一区二区三区 | av黄色片在线观看 | 无码日韩精品一区二区免费 | 97人人超碰 | 国产乱码久久久久久 | 国际精品鲁一鲁一区二区小说 | 一区二区中文字幕 | 免费成人在线网站 | 特级做a爱片免费69 精品国产鲁一鲁一区二区张丽 | 九色 在线 | 中文字幕在线一 | 一级毛片免费 | 二区在线视频 | 久久精品国产99国产精品亚洲 | 欧美一区二区在线观看视频 | 亚洲视频在线看 | 神马九九 | 91p在线观看 | 久久激情网| 羞羞在线观看视频 | 日本精品久久久久久久 | 第一区在线观看免费国语入口 | 免费天天干 | 啪啪网页 | 四虎成人免费电影 | 日韩性在线 | 中文在线一区 | 日韩中文字幕一区 |