极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11932|回复: 1

Arduino与Flash动画的互动

[复制链接]
发表于 2014-4-28 20:02:54 | 显示全部楼层 |阅读模式
本帖最后由 宁静以致远 于 2014-4-28 20:02 编辑

本人想通过Flash cs6做上位机程序,用来控制arduino的4个led,但是Flash中有发送数据,因为每点击4个按钮都有在串口通信的TX led灯会闪烁一下。大神看下神马问题
//////////////////////////////////////Flash段代码///////////////////////////////
  1. import flash.events.IOErrorEvent;
  2. import flash.events.ProgressEvent;
  3. import flash.events.SecurityErrorEvent;
  4. import flash.utils.Endian;
  5. import flash.events.MouseEvent;
  6. import flash.text.*;  
  7. import flash.text.TextFieldAutoSize;
  8. public class flashToLED extends Sprite
  9. {  

  10. private static const lianxia:String = "aa";//定义一个与arduino联系字符
  11. private static const lianxib:String = "bb";//定义一个与arduino联系字符
  12. private static const lianxic:String = "cc";//定义一个与arduino联系字符
  13. private static const lianxid:String = "dd";//定义一个与arduino联系字符
  14. private static const dataover:String = "$$$$";//定义一个结束字符,注意与arduino上一样

  15. private var _socket:Socket;
  16. private var _proxyAddress:String = "127.0.0.1";
  17. private var _proxyPort:uint = 5333;
  18. var xsarduinotime:TextField = new TextField();//新建一个名为xsarduinotime的文本框  
  19. //gettime主程序
  20. public function flashToLED()
  21. {
  22. addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);    //侦听类是否被添加到舞台,每次添加时运行onAddedToStage
  23. }
  24. private function onAddedToStage(event:Event):void
  25. {
  26. removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);    //移除侦听
  27. ///////////////////////按钮绘制 /////////////////////////////////
  28. var a:Sprite = new Sprite();
  29. a.graphics.beginFill(0x00FF00);
  30. a.graphics.drawRect(0,0, 50,10);
  31. a.graphics.endFill();
  32. addChild(a);
  33. a.x = 200;
  34. a.y = 200;

  35. var b:Sprite = new Sprite();
  36. b.graphics.beginFill(0x00FF00);
  37. b.graphics.drawRect(0,0, 50,10);
  38. b.graphics.endFill();
  39. addChild(b);
  40. b.x = 200;
  41. b.y = 200+40;

  42. var c:Sprite = new Sprite();
  43. c.graphics.beginFill(0x00FF00);
  44. c.graphics.drawRect(0,0, 50,10);
  45. c.graphics.endFill();
  46. addChild(c);
  47. c.x = 200;
  48. c.y = 200+80;

  49. var d:Sprite = new Sprite();
  50. d.graphics.beginFill(0x00FF00);
  51. d.graphics.drawRect(0,0, 50,10);
  52. d.graphics.endFill();
  53. addChild(d);
  54. d.x = 200;
  55. d.y = 200+120;
  56. //下面的程序是与arduino建立连接,如果连接上了怎么样,如果断了怎么样等等
  57. a.addEventListener(MouseEvent.CLICK, onClickA);
  58. b.addEventListener(MouseEvent.CLICK, onClickB);
  59. c.addEventListener(MouseEvent.CLICK, onClickC);
  60. d.addEventListener(MouseEvent.CLICK, onClickD);
  61. _socket = new Socket();
  62. _socket.addEventListener( Event.CONNECT, onConnect );
  63. _socket.addEventListener( Event.CLOSE, onClose );
  64. _socket.addEventListener( ProgressEvent.SOCKET_DATA, onSocketData );  //侦听有无来自端口的数据
  65. _socket.addEventListener( IOErrorEvent.IO_ERROR, onIOError );
  66. _socket.addEventListener( SecurityErrorEvent.SECURITY_ERROR, onSecurityError );
  67. _socket.endian = Endian.LITTLE_ENDIAN;
  68. _socket.connect(_proxyAddress, _proxyPort);
  69. }
  70. //连接上了执行
  71. private function onConnect(event:Event):void
  72. {
  73. trace("Socket Connected");//连接上就发送一个消息
  74. }
  75. private var buffer:String = "";//定义一个字符串缓存字符
  76. //下面程序师接受来自arduino的数据,一个字母一个字母接收的
  77. private function onSocketData(event[img]http://www.arduino.cn/static/image/smiley/default/tongue.gif[/img]rogressEvent):void
  78. {
  79. var data:String = _socket.readUTFBytes( _socket.bytesAvailable );
  80. buffer += data;
  81. var msg:String;
  82. var index:int;
  83. //下面是把接受到的字符拼起来
  84. while((index = buffer.indexOf(dataover)) > -1)
  85. {
  86. msg = buffer.substring(0, index);
  87. buffer = buffer.substring(index + 1);
  88. trace("Message Received from Arduino : " + msg);
  89.   xsarduinotime.width=400;   //文本框的宽度200
  90.   xsarduinotime.x=100;       //文本框的位置
  91.   xsarduinotime.y=10;
  92.   xsarduinotime.text=msg;     //显示time from arduino
  93.   var format:TextFormat = new TextFormat();    //新建文字格式format
  94.         format.size=24;                        //文字大小24
  95.     xsarduinotime.setTextFormat(format);       //将文字格式赋予xsarduinotime文本框     
  96. addChild(xsarduinotime);
  97. }
  98. }
  99. ////////////////////////////////////////////////////////////////////////////////////////////////////////////
  100.       //下面就是onclick程序,就是点击按钮时要做的
  101. private function onClickA(event:MouseEvent):void
  102. {
  103.        trace("onClick-A");
  104.         if(!_socket.connected)         //假如没有连接上,发送你要连什么的
  105.           {
  106.             trace("You must be connected to send a command to the Arduino.");
  107.              return;
  108.            }
  109.       //_socket.writeUTFBytes(lianxi);//如果连接上,就发联系字符给arduino
  110.         _socket.writeUTFBytes(lianxia);
  111.            _socket.flush();//发送
  112. }

  113. private function onClickB(event:MouseEvent):void
  114. {
  115.        trace("onClick-B");
  116.         if(!_socket.connected)         //假如没有连接上,发送你要连什么的
  117.           {
  118.             trace("You must be connected to send a command to the Arduino.");
  119.              return;
  120.            }
  121.       //_socket.writeUTFBytes(lianxi);//如果连接上,就发联系字符给arduino
  122.         _socket.writeUTFBytes(lianxib);
  123.            _socket.flush();//发送
  124. }
  125.                //下面定义关掉arduino时,显示Socket Closed

  126. private function onClickC(event:MouseEvent):void
  127. {
  128.        trace("onClick-C");
  129.         if(!_socket.connected)         //假如没有连接上,发送你要连什么的
  130.           {
  131.             trace("You must be connected to send a command to the Arduino.");
  132.              return;
  133.            }
  134.       //_socket.writeUTFBytes(lianxi);//如果连接上,就发联系字符给arduino
  135.         _socket.writeUTFBytes(lianxic);
  136.            _socket.flush();//发送
  137. }
  138.                         
  139. private function onClickD(event:MouseEvent):void
  140. {
  141.        trace("onClick-D");
  142.         if(!_socket.connected)         //假如没有连接上,发送你要连什么的
  143.           {
  144.             trace("You must be connected to send a command to the Arduino.");
  145.              return;
  146.            }
  147.       //_socket.writeUTFBytes(lianxi);//如果连接上,就发联系字符给arduino
  148.         _socket.writeUTFBytes(lianxid);
  149.            _socket.flush();//发送
  150. }
  151. private function onClose(event:Event):void
  152. {
  153. trace("Socket Closed");
  154. }
  155.                 //下面是出错时显示的消息的
  156. private function onIOError(event:IOErrorEvent):void
  157. {
  158. trace("IOErrorEvent : " + event.text);
  159. }
  160. //下面也是出错时的
  161. private function onSecurityError(event:SecurityErrorEvent):void
  162. {
  163. trace("SecurityErrorEvent : " + event.text);
  164. }
  165. }
  166. }

复制代码
//////////////////////////////////////////////arduino段的代码、、、、、、、、、、、、、、、、、、、、、、、
[#define LED_PIN4 4
#define LED_PIN5 5
#define LED_PIN6 6
#define LED_PIN7 7

#define lianxia 'aa'
#define lianxib 'bb'
#define lianxic 'cc'
#define lianxid 'dd'
int a1=0;
int b1=0;
int c1=0;
int d1=0;
#define dataover "$"      //定义一个发送字符结束标记,也随意定
char incoming ;  

void setup()
{
   
pinMode(LED_PIN4, OUTPUT);
pinMode(LED_PIN5, OUTPUT);
pinMode(LED_PIN6, OUTPUT);
pinMode(LED_PIN7, OUTPUT);
//pinMode(LED_PIN, OUTPUT);           //定义LED_PIN端口为输出端口
    for(int i = 0; i < 1; i++)          //接通电源后4个led分别闪下
    {    digitalWrite(LED_PIN4, HIGH);
        delay(500);
         digitalWrite(LED_PIN4, LOW);
         delay(500);
          digitalWrite(LED_PIN5, HIGH);
        delay(500);
         digitalWrite(LED_PIN5, LOW);
         delay(500);
          digitalWrite(LED_PIN6, HIGH);
        delay(500);
         digitalWrite(LED_PIN6, LOW);
         delay(500);
          digitalWrite(LED_PIN7, HIGH);
        delay(500);
         digitalWrite(LED_PIN7, LOW);
         delay(500);
    }
      Serial.begin(9600);                    //串口开始,波特率9600
      Serial.print("Arduino to flash ready!");  //连接上电脑时发送一个字符串
      Serial.print(dataover);                   //发送结束字符
}
void loop()
{  
  while(Serial.available() > 0)
    {
         
      incoming = Serial.read();
   
         
      switch(incoming)
       {
      
         case lianxia  : if(a1==0){
                                   digitalWrite(LED_PIN4, HIGH);
                                 a1=1;}
                         else{
                                   digitalWrite(LED_PIN4, LOW);
                                 a1=0;}
                 break;
        case lianxib  : if(b1==0){
                                  digitalWrite(LED_PIN5, HIGH);
                                b1=1;}
                        else{
                                 digitalWrite(LED_PIN5, LOW);
                               b1=0;}
                 break;
         case lianxic  : if(c1==0){
                                 digitalWrite(LED_PIN6, HIGH);
                               c1=1;}
                        else{
                               digitalWrite(LED_PIN6, LOW);
                               c1=0;}
                break;
         case lianxid  : if(d1==0){
                                digitalWrite(LED_PIN7, HIGH);
                              d1=1;}
                       else{
                            digitalWrite(LED_PIN7, LOW);
                              d1=0;}
             break;     
       }


    }


}
现在的问题是在Flash端口点击后led闪烁一下马上就灭啊


           

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2015-6-9 10:37:15 | 显示全部楼层
多谢分享,终于看到flash的编程了,额,这是c++么?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-16 20:05 , Processed in 0.047376 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表