Показано с 1 по 3 из 3

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Продвинутый Аватар для Pinin
    Регистрация
    04.01.2009
    Возраст
    61
    Сообщений
    213
    Вес репутации
    261

    По умолчанию RoadRunner Plugin и Arduino

    В ветке про центрифужный плагин прозвучала просьба сбацать что-то наподобие под RR. Поскольку в рамках своего проекта мне понадобилась такая фича и нашлись добрые люди, не погнушавшиеся помочь советом чайнику от программирования - выкладываю результат.

    В аттаче - экзешник и исходники: с минимальными доработками по месту любой может заточить интерфейс под себя , внешний вид интерфейса не изменился с тех пор.

    Листинг с комментами:

    PHP код:
    import processing.serial.*;   
    Serial port;  
    int x,y,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,w1,h1,w6,h6,lock;

    PImage bs;     // Все кнопки не нажаты 
    PImage dw;     // Все кнопки не нажаты, нажата "DIM" 
    PImage dw1;    // Все кнопки не нажаты, нажата "MENU" 
    PImage dw2;    // Все кнопки не нажаты, нажата "MUTE" 
    PImage dw3;    // Все кнопки не нажаты, нажата "HW/CITY" 
    PImage dw4;    // Все кнопки не нажаты, нажата "VOL_UP" 
    PImage dw5;    // Все кнопки не нажаты, нажата "VOL_DOWN" 
    PImage dw6;    // Все кнопки не нажаты, нажата "ПИТАНИЕ" 

    void setup() 
    { 
      
    port = new Serial(this, "COM5", 115200); // Прописываем COM-порт на котором у вас сидит Carduino 
       
      
    size(800, 600);//размер окна 
         
      
    bs = loadImage("BG.jpg");             //загрузить все кнопки ненажатыми 
      
    dw = loadImage("DIM_down.jpg");       //загрузить изображение с нажатой кнопкой "DIM" 
      
    dw1 = loadImage("MENU_down.jpg");     //загрузить изображение с нажатой кнопкой "MENU" 
      
    dw2 = loadImage("MUTE_down.jpg");     //загрузить изображение с нажатой кнопкой "MUTE" 
      
    dw3 = loadImage("HW_down.jpg");       //загрузить изображение с нажатой кнопкой "HW/CITY" 
      
    dw4 = loadImage("VOL_UP_down.jpg");   //загрузить изображение с нажатой кнопкой "VOL_UP" 
      
    dw5 = loadImage("VOL_DOWN_down.jpg"); //загрузить изображение с нажатой кнопкой "VOL_DOWN" 
      
    dw6 = loadImage("7_down.jpg");        //загрузить изображение с нажатой кнопкой "ПИТАНИЕ" 
      
    w1 = 140;      // Размер малой кнопки по горизонтали 
      
    h1 = 50;       // Размер  малой кнопки по вертикали 
      
    w6 = 100;      // Размер большой кнопки по горизонтали 
      
    h6 = 90;       // Размер большой кнопки по вертикали 
      
    x = 17;        // Х начальная координата кнопки "DIM" 
      
    y = 472;       // y начальная координата кнопки "DIM" 
      
    x1= 167;       // Х начальная координата кнопки "MENU" 
      
    y1= 472;       // y начальная координата кнопки "MENU" 
      
    x2= 321;       // Х начальная координата кнопки "MUTE" 
      
    y2= 472;       // y начальная координата кнопки "MUTE" 
      
    x3= 471;       // Х начальная координата кнопки "HW/CITY" 
      
    y3= 472;       // y начальная координата кнопки "HW/CITY" 
      
    x4= 170;       // Х начальная координата кнопки "VOL_UP" 
      
    y4= 395;       // y начальная координата кнопки "VOL_UP" 
      
    x5= 321;       // Х начальная координата кнопки "VOL_DOWN" 
      
    y5= 395;       // y начальная координата кнопки "VOL_DOWN" 
      
    x6= 682;       // Х начальная координата кнопки "ПИТАНИЕ" 
      
    y6= 435;       // y начальная координата кнопки "ПИТАНИЕ" 
      
    image(bs,0,0); // Нарисовать в окне все кнопки ненажатыми 
      
    } 


    void draw() 
    {   
      if( 
    mousePressed) 
       { 
         
    // Если кнопка нажата (lock==1) грузим соответствующую картинку, пишем в порт данные и
         // выставляем lock=0 (кнопка без фиксации нажатия)
        
         // Проверка нажатия в области "DIM" 
         
    if (mousePressed && (mouseX >= x && mouseX <= x + w1 && mouseY >= y && mouseY <= y + h1)) 
         {
         if(
    lock==1){image(dw, 0, 0);port.write('1');  // Однократная посылка данных в порт
         
    }
         
    lock=0;
         }
              
         
    // Проверка нажатия в области "MENU" 
          
    if (mouseX >= x1 && mouseX <= x1 + w1 && mouseY >= y1 && mouseY <= y1 + h1) 
         {   
         if(
    lock==1){image(dw1, 0, 0);port.write('3');  // Однократная посылка данных в порт
         
    }
         
    lock=0;
         }
         
         
    // Проверка нажатия в области "MUTE" 
         
    if (mouseX >= x2 && mouseX <= x2 + w1 && mouseY >= y2 && mouseY <= y2 + h1) 
         {   
         if(
    lock==1){image(dw2, 0, 0);port.write('5');  // Однократная посылка данных в порт
         
    }
         
    lock=0;
         }  
         
         
    // Проверка нажатия в области "HW/CITY" 
         
    if (mouseX >= x3 && mouseX <= x3 + w1 && mouseY >= y3 && mouseY <= y3 + h1) 
         {   
         if(
    lock==1){image(dw3, 0, 0);port.write('7'); // Однократная посылка данных в порт
         
    }
         
    lock=0;   
         }  
         
    // Проверка нажатия в области "VOL_UP" 
         
    if (mouseX >= x4 && mouseX <= x4 + w1 && mouseY >= y4 && mouseY <= y4 + h1) 
         { 
          
    port.write('9');  // Непрерывно шлет данные в порт при нажатой кнопке
         
    delay (50); 
         if(
    lock==1){image(dw4, 0, 0);
         }
         
    lock=0;    
         }  
         
    // Проверка нажатия в области "VOL_DOWN" 
         
    if (mouseX >= x5 && mouseX <= x5 + w1 && mouseY >= y5 && mouseY <= y5 + h1) 
         {  
          
    port.write('b');  // Непрерывно шлет данные в порт при нажатой кнопке
          
    delay (50);
         if(
    lock==1){image(dw5, 0, 0);
         }
         
    lock=0;   
         }  
         
    // Проверка нажатия в области "ПИТАНИЕ" 
         
    if (mouseX >= x6 && mouseX <= x6 + w6 && mouseY >= y6 && mouseY <= y6 + h6) 
         {   
         if(
    lock==1){image(dw6, 0, 0);port.write('d');  // Однократная посылка данных в порт
         
    }
         
    lock=0;    
         }  
            
       }
    if(!
    mousePressed){
    if(
    lock==0){image(bs, 0, 0);lock=1;
    }
    }
       
    } 
    Здесь (и в экзешнике!) под Ардуину отведет 5 СОМ. Если у вас иначе - просто поправьте на нужный и перекомпилируйте *.exe
    На всякий случай - в procissing`е: File - Export Application - Export. Файл будет в папке application.windows (ежели вы, конечно, делали его под винды )

    В интерфейсе семь кнопок: пять из них без фиксации нажатия и отправкой в порт одной команды, две - тоже без фиксации, но при длительном нажатии на них долбящих в порт одну команду непрерывно (думаю, все понимают, как работают кнопки регулировки громкости - а это они и есть).

    Поизучав содержимое void setup, нетрудно разобраться в том, как можно вообще изменить графику интерфейса, камня на камне не оставив от того, что сделал я для себя (SkinEditor вам в помощь ).

    Со своей стороны еще раз выражаю искреннюю благодарность Chip`у и AlexNS за помощь в работе над проектом.

    Успехов всем!
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	Export.jpg 
Просмотров:	290 
Размер:	53.4 Кб 
ID:	7489  
    Вложения Вложения

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •