Отправка двух массивов в Arduino из обработки - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь передать несколько переменных (n строк и n чисел) из обработки в Arduino.Я нашел это учебное пособие онлайн и смог отправить одно значение.Теперь у меня есть два массива, к которым Arduino filesTypes[] и filesSizes[] должны обращаться оба.filesTypes[] состоит из строк длиной 3 символа, а fileSizes[] - это массив различных целых чисел.

Вот мой код обработки:

import processing.serial.*;

Serial myPort;  // Create object from Serial class

String[] fileTypes;
int[] fileSizes;
String[][] lines;

void setup() 
{
  size(200,200); //make our canvas 200 x 200 pixels big
  String portName = Serial.list()[1]; //change the 0 to a 1 or 2 etc. to         
match your port
  myPort = new Serial(this, portName, 9600);

  launch( sketchPath("") + "/test.bat");

}

void draw() {
  if (mousePressed == true) 
  {     //if we clicked in the window
     txtToStrg(); 
    myPort.write('1');         //send a 1
    txtToStrg();  
  } else 
  {                           //otherwise
  myPort.write('0');          //send a 0
  }   
}

void txtToStrg(){

  String[] lines = loadStrings("list.txt");
  fileTypes = new String[lines.length];
  fileSizes = new int[lines.length];

  for (int i = 0 ; i < lines.length; i++) {
    if(lines[i] != null) {
      String[] splitLine = split(lines[i], ' ');
      fileTypes[i] = splitLine[0];
      fileSizes[i] = int(splitLine[1]);
      println(fileTypes[i] + " = " + fileSizes[i]);
    }
  }
} 

А вот мой код Arduino:

 char val; // Data received from the serial port
 int ledPin = 4 ; // Set the pin to digital I/O 13

 void setup() {
   pinMode(ledPin, OUTPUT); // Set pin as OUTPUT
   Serial.begin(9600); // Start serial communication at 9600 bps
 }

 void loop() {
   if (Serial.available()) 
   { // If data is available to read,
     val = Serial.read(); // read it and store it in val
   }
   if (val == '1') 
   { // If 1 was received
     digitalWrite(ledPin, HIGH); // turn the LED on
   } else {
     digitalWrite(ledPin, LOW); // otherwise turn it off
   Serial.print(val);
   }
   delay(10); // Wait 10 milliseconds for next reading
}

Если пасс проходит что-то кроме символа, он перестает работать.

...