HELP ! String PROCESSING
- Войдите на сайт для отправки комментариев
Чт, 02/12/2021 - 19:05
Добрый вечер ! Просьба такая))
передаю с Ардуино примерно такие данные и получаю их правильно на стороне
Processing'a
40,BF,E6,19. 40,BF,E6,19. 40,BF,E6,19. C0,3F,E6,19. 40,BF,E6,19. 40,BF,E6,19. 40,BF,E6,19. 40,BF,E6,19. C0,3F,E6,19. 40,BF,E6,19. 40,BF,E6,19.
код Processing
import processing.serial.*;
String bufer="";
Serial myPort;
void setup()
{
myPort = new Serial(this, "COM5", 4800);
size (500,500);
}
void draw()
{
while (myPort.available() > 0)
{
char inByte = myPort.readChar();
bufer=bufer+inByte;
println(bufer);
}
}
Вопрос в том что хотеться получить массив с данными
iint massve [] = {40, BF, E6, 19};
Пока результат такой....
// Example by Tom Igoe import processing.serial.*; Serial myPort; // The serial port void setup() { // List all the available serial ports printArray(Serial.list()); // Open the port you are using at the rate you want: myPort = new Serial(this, Serial.list()[1], 4800); } void draw() { // Expand array size to the number of bytes you expect byte[] inBuffer = new byte[7]; while (myPort.available() > 0) { inBuffer = myPort.readBytes(); myPort.readBytes(inBuffer); if (inBuffer != null) { String myString = new String(inBuffer); String st = myString; String ADDR = ""; String OSTATOC = ""; for (int j = 0; j < st.length(); j++) { if ( j < st.length() /4) { ADDR += st.charAt(j); }else OSTATOC += st.charAt(j); } //println(ADDR); println("Значение ADDR : " + ADDR); //------------------------------------------------------------------------- String st1 = OSTATOC; String ADDR_inv = ""; String OSTATOC1 = ""; for (int j = 0; j < st1.length(); j++) { if ( j < st1.length() /3) { ADDR_inv += st1.charAt(j); }else OSTATOC1 += st1.charAt(j); } // println(ADDR_inv); println("Значение ADDR_inv : " + ADDR_inv); //------------------------------------------------------------------------- String st2 = OSTATOC1; String DATA = ""; String OSTATOC2 = ""; for (int j = 0; j < st2.length(); j++) { if ( j < st2.length() /2) { DATA += st2.charAt(j); }else OSTATOC2 += st2.charAt(j); } // println(DATA); println("Значение DATA : " + DATA); //println(OSTATOC2); println("Значение DATA_inv : " + OSTATOC2); println("---------------------------------------"); } } }Тут лежит рабочая версия передачи данных с Ардуино в Процессинг и отображение данных в графике, может что то пригодится.
ого спасибо ata3d ща гляну!
Короче говоря все ответы найдены)) гуглить тоже надо уметь!
//PROCESSING---------------------------------------------------------------- // Example by Tom Igoe import processing.serial.*;//библиотека сериал Serial myPort; // сериал порт void setup() { // список портов printArray(Serial.list()); // номер порта и битрейт myPort = new Serial(this, Serial.list()[1], 4800); } void draw() { while (myPort.available() > 0) {// если данные пришли String inBuffer = myPort.readString(); // пишем в буффер (Строка) if (inBuffer != null) {// если принятые данные не равны null println(inBuffer);// печатаем данные в порт //ВАРИАНТ 1 ----------------------------------------------------------------- // String inBuffer = $;36;AA;01;A2;2F;0F;GD;. // разделить строку по разделтелю (тип данных String ) String[] list = split(inBuffer, ';'); // list[0] в " $", list[1] в "36".. //Функция split () разбивает строку на части*(Parsing!) print("StartBit: ");print(list[0]);print(" "); // разделить строку по разделтелю (тип данных int ) int[] listNEW=int(split(inBuffer, ';')); //ПЕЧАТАЕМ В ПОРТ НОВЫЕ ДАННЫЕ----------------------------------------------------- int ADDR=listNEW[1];// сохраняем данные адреса,в ADDR как тип данных (int) // печатаем в порт значение ADDR с указателем типа данных (dec,hex,bin) print("ADDR: ");print(hex(ADDR));print(" "); // печатаем в порт данные (String) print("X: ");print(list[2]);print(" "); // печатаем в порт данные (String) print("Y: ");println(list[3]); // ... print("Calor_R: ");print(list[4]);print(" "); // ... print("Calor_G: ");print(list[5]);print(" "); // ... print("Calor_G: ");println(list[6]);// ... print("saturation: ");println(list[7]); // ... //ВАРИАНТ 2------------------------------------------------------------------- //String ADDR = inBuffer.substring(2,4); //String X = inBuffer.substring(5,7); //String Y = inBuffer.substring(8,10); //String Calor_R = inBuffer.substring(11,13); //String Calor_G = inBuffer.substring(14,16); //String Calor_B = inBuffer.substring(17,19); //String saturation = inBuffer.substring(20,22); //ПЕЧАТАЕМ В ПОРТ НОВЫЕ ДАННЫЕ------------------------------------------------ //print("ADDR: ");print(ADDR);print(" "); //print("X: ");print(X);print(" "); //print("Y: ");println(Y); //print("Calor_R: ");print(Calor_R);print(" "); //print("Calor_G: ");print(Calor_G);print(" "); //print("Calor_G: ");println(Calor_B); //print("saturation: ");println(saturation); } } } //PROCESSING---------------------------------------------------------------- //ARDUINO------------------------------------------------------------------ /* [$][ADDR][;][X,HEX][;][Y,HEX][;][Calor_R,HEX][;][Calor_G,HEX][;][Calor_B,HEX][;][saturation,HEX][.] Начало посылки(StartMark)-[$] Адрес(36)-[ADDR] Координаты-[X,HEX][Y,HEX] Цвет-[Calor_R,HEX][Calor_G,HEX][Calor_B,HEX] Насыщенность-[saturation,HEX] Разделитель-[;] Конец посылки-[.] */ //ПРИМЕР ВЫВОДА В ПОРТ /* $;36;AA;01;A2;2F;0F;GD;. $;36;A9;01;A2;2F;0F;GD;. $;36;A6;01;A2;2F;0F;GD;. $;36;A6;01;A2;2F;0F;GD;. $;36;A6;01;A2;2F;0F;GD;. $;36;A6;01;A2;2F;0F;GD;. $;36;A6;01;A2;2F;0F;GD;. $;36;A6;01;A2;2F;0F;GD;. $;36;A6;01;A2;2F;0F;GD;. $;36;A6;01;A2;2F;0F;GD;. $;36;A6;01;A2;2F;0F;GD;. $;36;A6;01;A2;2F;0F;GD;. $;36;A7;01;A2;2F;0F;GD;. $;36;A7;01;A2;2F;0F;GD;. $;36;A7;01;A2;2F;0F;GD;. */ int coordinates_X;// Координаты по Х char StartMark= '$';// старт бит char Delimiter=';';// разделитель char EndOfLine ='.';// конец String ADDR="36";// адрес String coordinates_Y="01";// Координаты по Y String calorRGB[]={"A2","2F","0F"};// цвет rgb String saturation="GD";// Насыщенность #include <SoftSerial.h> /* Allows Pin Change Interrupt Vector Sharing */ #include <TinyPinChange.h> /* Ne pas oublier d'inclure la librairie <TinyPinChange> qui est utilisee par la librairie <RcSeq> */ SoftSerial mySerial(2, 3); // RX, TX пины порта int analogInput = A0; float vout = 0.0; int value = 0; int DATA; void setup() { pinMode(analogInput, INPUT); Serial.begin(57600);//порт на прием открыть на скорости 57600 //while (!Serial) {;} // дождитесь подключения последовательного порта. mySerial.begin(4800);//порт на отправку открыть на скорости 57600 delay(100); } void loop() // run over and over { value = analogRead(analogInput); float X=(value*2.25)/10.24;//158.8-diol poteri int coordinates_X=X; //ПАКЕТ ПОСЫЛКА ТЕСТ mySerial.print(StartMark);mySerial.print(Delimiter); mySerial.print(ADDR);mySerial.print(Delimiter); mySerial.print(coordinates_X,HEX);mySerial.print(Delimiter); mySerial.print(coordinates_Y);mySerial.print(Delimiter); mySerial.print(calorRGB[0]);mySerial.print(Delimiter); mySerial.print(calorRGB[1]);mySerial.print(Delimiter); mySerial.print(calorRGB[2]);mySerial.print(Delimiter); mySerial.print(saturation);mySerial.println(EndOfLine); delay(500); } //ARDUINO------------------------------------------------------------------результат в Processing то что мне и нужно было
Я уже почти неделю наблюдаю эту странную активность и все же спрошу:
Ты зачем силы и время тратишь на мертворожденный проект "Процессинг"? Для взаимодействия с Ардуино на ПК можно использовать все что угодно. И Питон и Яву и C# и даже просто С. Можно MATLAB в его свободной версии - GNU Oktave, если хочется много мат обработки. Но не это "поделие", навыки использования которого тебе потом нигде и никогда не пригодятся.
Я бы посоветовал Python или Java. И тот и другой навыки - ценны для будущего трудоустройства, если ты молод, и просто очень полезны, если ты пенсионер и осваиваешь новое хобби.
Иногда использую процессинг для небольших проектов под андроид, когда надо быстренько сваять какой нибудь обмен данными и управление с телефоном, и чтобы удобное и более менее красивое было оформление картинки. Там все проще, чем использовать громоздкие андроидовские сдк.
wdrakula Ты может и прав в целом, поясню я человек новенький в языках пр. вот и выбрал PEOCESSING так как он показался ближе к Ардуине и к изучению в целом а синтаксис и основной базис как я понимаю везде схож.
Спасибо за приведенные примеры Питон, и Яву, и C#, MATLAB ,GNU Oktave пытаюсь параллельно С# изучать
Иногда использую процессинг для небольших проектов под андроид, когда надо быстренько сваять какой нибудь обмен данными и управление с телефоном, и чтобы удобное и более менее красивое было оформление картинки. Там все проще, чем использовать громоздкие андроидовские сдк.
SAB наверно через некоторое время и я стану пользоваться PROCESSING'ом только
в редких случаях
Я уже почти неделю наблюдаю эту странную активность и все же спрошу:
Ты зачем силы и время тратишь на мертворожденный проект "Процессинг"? Для взаимодействия с Ардуино на ПК можно использовать все что угодно. И Питон и Яву и C# и даже просто С. Можно MATLAB в его свободной версии - GNU Oktave, если хочется много мат обработки. Но не это "поделие", навыки использования которого тебе потом нигде и никогда не пригодятся.
Я бы посоветовал Python или Java. И тот и другой навыки - ценны для будущего трудоустройства, если ты молод, и просто очень полезны, если ты пенсионер и осваиваешь новое хобби.
И подскажи я правильно понимаю что для С# среда IDE хорошо подходит Visul Studio
Я не из мира Windows совершенно. Использую Винду только для проверок, как на ней работает код. Поэтому про C# ничего не скажу. Я написал, что с моей точки зрения нужно изучать платформо-независимые инструменты - Python и Java. Да и спрос на них гораздо больше, чем на C#.
С C# работает Дет Симен - к нему обращайся.
С C# работает Дет Симен - к нему обращайся.
работал. 3 года взат. счас я вапще безработный.
Upd. А так-то да, Шарп это мощь и сила. :) Синтаксис, максимально приближенный к Си + идеология Delphi. Причем, разрабоччики не оглядывались на пыльные тома замшелых С++ стандартов, и вводили в язык те конструкции, которые считали необходимыми (свойства, foreach, делегаты и т.д). Получилось не без шероховатостей, канеш, но красиво. :)
Иногда использую процессинг...
А можно сделать альтернативу "монитор-порту", что бы не только букво-цифры, но и графики, диаграммы, картинки, иконки по ним и т.д. :-)
С C# работает Дет Симен - к нему обращайся.
и еще программисты пишущие сервиcную программу для TESLA )))
Иногда использую процессинг...
А можно сделать альтернативу "монитор-порту", что бы не только букво-цифры, но и графики, диаграммы, картинки, иконки по ним и т.д. :-)
Да вполне можно в библиотеке есть много примеров http://www.sojamo.de/libraries/controlP5/