Последовательный вывод не переносится в файл (используется обработка) - PullRequest
0 голосов
/ 29 мая 2018

У меня проблемы с сохранением данных датчика Arduino в текстовый файл.Я записываю данные датчика в последовательный порт и использую программу обработки, которая считывает эти данные из последовательного порта и записывает их в файл.

Это код, который я использую для обработки.

import processing.serial.*;
Serial mySerial;
PrintWriter output;
void setup() {
   mySerial = new Serial( this, Serial.list()[0], 9600 );
   output = createWriter( "data.txt" );
}
void draw() {
    if (mySerial.available() > 0 ) {
         String value = mySerial.readString();
         if ( value != null ) {
              output.println( value );
         }
    }
}

void keyPressed() {
    output.flush();  // Writes the remaining data to the file
    output.close();  // Finishes the file
    exit();  // Stops the program
}

Данные не передаются с моего последовательного монитора Arduino в файл .txt.После того, как я собрал довольно много данных от датчика Arduino, файл все еще пуст.Существует ли определенный порядок запуска кода Arduino или кода обработки в первую очередь?В чем еще может быть проблема?

1 Ответ

0 голосов
/ 29 мая 2018

Как вы говорите, что:

После того, как я собрал довольно много данных от датчика Arduino, файл все еще пуст.

Я полагаючто вы контролируете последовательный выход Arduino через последовательную консоль Arduino IDE.Но последовательный протокол не может «кормить» консоль Arduino IDE и сценарий обработки.

Итак, вы пытались запустить сценарий Arduino и обработки, не открывая последовательную консоль?

РЕДАКТИРОВАТЬ:

И, конечно, ваша скорость передачи данных ( 9600 ) между вашим Arduino и вашим сценарием обработки?

mySerial = new Serial( this, Serial.list()[0], 9600 );

EDIT # 2: В части кода setup () вы определяете, какой последовательный порт вы не хотите слушать: (Первый элемент массива Serial.list())

mySerial = new Serial( this, Serial.list()[0], 9600 );

Но на Os X, например, Serial.list () [0] является входящим портом bluetooth.

Я выполнил печать полного массива Serial.list(), добавив

print(Serial.list());

сразу после void setup() {

В консоли обработки вы можете прочитать список портов, мой был:

/dev/cu.Bluetooth-Incoming-Port /dev/cu.usbmodem1411 /dev/tty.Bluetooth-Incoming-Port /dev/tty.usbmodem1411

Поскольку вы хотите слушать изArduino (cu.usbmodem1411), вам нужно установить modify mySerial для адресации второго элемента массива следующим образом:

mySerial = new Serial( this, Serial.list()[1], 9600 );
...