Заготовка Меню с выбором номера и скорости порта PROCESSING
- Войдите на сайт для отправки комментариев
Вс, 05/12/2021 - 00:11
//PROCESSING sketch------------------------------------------------------------------
import processing.serial.*;
import controlP5.*;
Serial serial;
ControlP5 cp5;
Textarea myTextarea;//text окно
String portName;
boolean TheRec;
int speed = 9600;
int horizonTXT;
int verticalTXT;
String SostREC;
String inBuffer;
//--------------------------------------------------------------------------------
void setup() {
// List all the available serial ports:
printArray(Serial.list());//выводим список портов
serial = new Serial(this, Serial.list()[0], 9600);
size(960, 512, P3D);// P3D=во весь экран
cp5 = new ControlP5(this);
cp5.setFont(createFont("Calibri", 16)); // сделаем шрифт побольше
// кнопки
cp5.addToggle("Rec")
.setPosition(330, 80)
.setSize(20, 20)
.setValue(false);//true-on false-off
// кнопки --------------------------------------------------------------------------------
cp5.addButton("open").setPosition(170, 10).setSize(80, 20);
cp5.addButton("close").setPosition(250, 10).setSize(80, 20).linebreak();
//отправка--------------------------------------------------------------------------------
cp5.addTextfield("input").setPosition(330, 30).setSize(160, 20);
cp5.addButton("send").setPosition(330, 10).setSize(160, 20);
// выпадающий список--------------------------------------------------------------------------------
cp5.addScrollableList("com")
.setPosition(10, 10)
.setSize(80, 100)
.setBarHeight(20)
.setItemHeight(30)
.close()
.addItems(Serial.list()); // добавляем список портов
;
// ТЕКСТОВОЕ ОКНО--------------------------------------------------------------------------------
myTextarea = cp5.addTextarea("txt")
.setPosition(0,121)
.setSize(500,140)
.setFont(createFont("arial",12))
.setLineHeight(14)
.setColor(color(150))//цвет текста
.setColorBackground(color(155,80))
.setColorForeground(color(155,80));
;
myTextarea.setColor(0xffffffff);//цвет текста (белый)
// ТЕКСТОВОЕ СЛАЙДЕРЫ--------------------------------------------------------------------------------
cp5.addSlider("horizonTXT")
.setRange(100,400)
.setValue(200)
.setPosition(10,95)//позиция
.setSize(100,19)//размер
.setMin(0)//минимальное значение
.setMax(960)//максимальное значение
;
cp5.addSlider("verticalTXT")
.setRange(100,400)
.setValue(200)
.setPosition(10,75)//позиция
.setSize(100,19)//размер
.setMin(0)//минимальное значение
.setMax(512)//максимальное значение
;
// выпадающий список--------------------------------------------------------------------------------
cp5.addScrollableList("Speed")
.setPosition(90, 10)
.setSize(80, 100)
.setBarHeight(20)
.setItemHeight(30)
.close()
.addItem("300",1)
.addItem("1200",2)
.addItem("2400",3)
.addItem("4800",4)
.addItem("9600",5)
.addItem("19200",6)
.addItem("38400",7)
.addItem("57600",8)
.addItem("74880",9)
.addItem("115200",10)
.addItem("230400",11)
.addItem("250000",12)
;
}
//------------------------------------------
void Speed(int TheSpeed) {
//print(TheSpeed);print(" ");println(speed);
if(TheSpeed==0){speed=300;}
if(TheSpeed==1){speed=1200;}
if(TheSpeed==2){speed=2400;}
if(TheSpeed==3){speed=4800;}
if(TheSpeed==4){speed=9600;}
if(TheSpeed==5){speed=19200;}
if(TheSpeed==6){speed=38400;}
if(TheSpeed==7){speed=57600;}
if(TheSpeed==8){speed=74880;}
if(TheSpeed==9){speed=115200;}
if(TheSpeed==10){speed=230400;}
if(TheSpeed==11){speed=250000;}
}
//РАЗМЕР ТЕКСТОВОГО ОКНА------------------------------------------
void horizonTXT (int TheHtxt) {
//println(horizonTXT);
myTextarea.setWidth(TheHtxt);//назначаем горизот текст. окна
horizonTXT=TheHtxt;
}
void verticalTXT (int TheVtxt) {
//println(verticalTXT);
myTextarea.setHeight(TheVtxt);//назначаем вертикаль текст. окна
verticalTXT=TheVtxt;
}
//------------------------------------------
void Rec (boolean TheRec) {
if(TheRec==true){
//println("ON");
//ПРИЕМ ДАННЫХ С ПОРТА------------------------------------------
SostREC="ВКЛ.";
}else{
//println("OFF");
SostREC="ВЫКЛ.";}
}
//------------------------------------------
void com(int n) {
portName = Serial.list()[n];
}
//------------------------------------------
void open() {
serial = new Serial(this, portName, speed);
}
//------------------------------------------
void close() {
serial.stop();
}
//------------------------------------------
void send() {
serial.write("5,"+ cp5.get(Textfield.class, "input").getText() +";");
}
//------------------------------------------
void draw() {
if(SostREC=="ВКЛ."){
while (serial.available() > 0) {
inBuffer = serial.readString();
if (inBuffer != null) {
println(inBuffer);
}
}}
background(10,30,90);
LINE();TEXT();
cp5 = new ControlP5(this);
//TEXT----------------------------------------
myTextarea.setText(" Вы можете здесь выводить какую либо"
+" информацию\n"
+" Скорость Порта ровна : "+speed+"\n"
+" Выбранный ПОРТ : # "+portName+"\n"
+" Прием Данных ВКЛ.-ВЫКЛ. : "+SostREC+"\n"
+" Размер текстового окна : \n"
+" по горизонтали : "+ horizonTXT+"\n"
+" по вертикали : "+ verticalTXT+"\n"
+"\n"
+"Buffer >> "+inBuffer+"\n"
);
}
//------------------------------------------
void TEXT(){
textSize(18);
fill(0, 152, 253);
text("Port: ", 10, 50);
fill(0, 102, 153);
text(""+portName, 100, 50);
//------------------------------------------
if(speed==9600){
fill(0, 152, 253);
text("SpeedPort: ", 10, 70);
fill(0, 102, 153);
text(""+speed, 100, 70);
fill(0, 152, 253);
text( " Default", 140, 70);
}else
{fill(0, 152, 253);
text("SpeedPort: ", 10, 70);
fill(0, 102, 153);
text(""+speed, 100, 70);
fill(0, 152, 253);
text( "", 140, 70);}
//------------------------------------------
if(SostREC=="ВКЛ."){
textSize(32);
fill(50, 255, 053);
text("Receive", 355, 100);
}
//------------------------------------------
}
//------------------------------------------
void LINE(){
fill(10, 20, 70);//цвет прямоугольника
rect( 0, 0, 500, 120 );//прямоугольник меню 500х120
line(0, 120, 500, 120);//горизонтальная линия от0 - до 500
line(500, 120, 500, 0);//вертикальная от500 - до 500
}
//PROCESSING sketch------------------------------------------------------------------
Немного обновил ,добавил настроек по usb port'у
вроде неплохо...
Да, сама идея выкладывать базовые примеры практического использования хороша.
:-)
Не хотите написать "процессинге" симулятор экранчика для ардуино, например на SSD1306 (128 * 64)?
Да, сама идея выкладывать базовые примеры практического использования хороша.
:-)
Не хотите написать "процессинге" симулятор экранчика для ардуино, например на SSD1306 (128 * 64)?
Чуть подробнее !,дисплеи обычно продаются в виде I2C- или SPI-модулей !
как эмулировать ? как подключать? Увы я сам изучаю Arduino Processing недавно .
Да идея простая. Пишите-рисуете в "процессинге" экранчик и соединяете ардуино с ПК. Ну и шлёте с неё данные для отображения на рисованом экранчике.
набросал заставку пока))
Да идея простая. Пишите-рисуете в "процессинге" экранчик и соединяете ардуино с ПК. Ну и шлёте с неё данные для отображения на рисованом экранчике.
будем пробовать!
задумка такая может создать каждый пиксель чтоб отображал именно так же как и оригинальный прибор
задумка такая может создать каждый пиксель чтоб отображал именно так же как и оригинальный прибор
Ну, да. В природе пока китайцы создали их 3 моноцветов - синий (ближе к голубому), жёлтый и белый.
задумка такая может создать каждый пиксель чтоб отображал именно так же как и оригинальный прибор
Ну, да. В природе пока китайцы создали их 3 моноцветов - синий (ближе к голубому), жёлтый и белый.
ПОКА ДУМАЮ КАК ПИКСЕЛИ ВЫВОДИТЬ
ПОКА ДУМАЮ КАК ПИКСЕЛИ ВЫВОДИТЬ
В виде квадратиков в поле экрана 128*64 квадратика.
Результат по МЕНЮХЕ добавил логику обработки ИК сигнала