Программа на processing не видит данные, пересылаемые в com-порт по радио

blackhand
Offline
Зарегистрирован: 13.10.2012

В этом топике http://forum.arduino.cc/index.php/topic,124022.0.html  нашёл решение, как сохранять изображения, пересылаемы с sd-карточки на ардуине через serial. 
Программа на Processing просто сохраняет весь поток, приходящий в com-порт в jpg-файл. Вот её код:

import processing.serial.*;

Serial myPort;
OutputStream output;


void setup() {

  size(320, 240);

  //println( Serial.list() );
  myPort = new Serial( this, Serial.list()[0], 115200);
  myPort.clear();

  output = createOutput("pic02.jpg");
}


void draw() {

  try { 
    while ( myPort.available () > 0 ) {
      output.write(myPort.read());
    }
  } 
  catch (IOException e) {
    e.printStackTrace();
  }
}


void keyPressed() {

  try { 
    output.flush();  // Writes the remaining data to the file
    output.close();  // Finishes the file
  } 

  catch (IOException e) {
    e.printStackTrace();
  }
}

Она без нареканий работает, когда Arduino соединена с компьютером через USB. Но мне необходимо, чтобы картинка пересылалась через радиоканал.
Я использую беспроводные модули APC220 (http://dvrobot.ru/shop/i70.besprovodnoy_modul_apc220-43_sovmestimyy_s_arduino..htm)/ Они работают как COM-удлиннители, то есть, по сути, связь такая же точно, как и через USB, только по воздуху. 
И вот, когда я включаю ардуину и с помощью processing - проги пытаюсь считать и записать поток даных - она будто бы его не видит. Она видит порт, но не воспринимает, что туда присылается. Проверяю в Com-мониторе arduino IDE - всё работает. В чём может быть проблема?

ourlive
Offline
Зарегистрирован: 26.05.2012

скотость порта не великовата?

blackhand
Offline
Зарегистрирован: 13.10.2012

ourlive пишет:

скотость порта не великовата?

это скетч исходный, я , естественно, всё настроил и переправил на 19200
Проблема как-то в том, что Processing не хочет, на мой взгляд, работать с радиомодулем. Может быть, надо писать софт на другом языке, который будет поток в файл сохранять. Но очень это всё подозрительно,

ourlive
Offline
Зарегистрирован: 26.05.2012

blackhand пишет:

 переправил на 19200

Обычный провод длинее 5ти метров часто быстрее 9600 не разограть. И надеюсь скорость вы как на передающей, так и на приёмной стороне меняли?

blackhand
Offline
Зарегистрирован: 13.10.2012

ourlive пишет:

blackhand пишет:

 переправил на 19200

Обычный провод длинее 5ти метров часто быстрее 9600 не разограть. И надеюсь скорость вы как на передающей, так и на приёмной стороне меняли?

Ведь у меня н провод, а радиомодули) Да, в настройки обоих модулей прописана одинаквая скорость

ourlive
Offline
Зарегистрирован: 26.05.2012

blackhand пишет:

Ведь у меня н провод, а радиомодули) Да, в настройки обоих модулей прописана одинаквая скорость

Думаете у радиомодуля канал такой широкий и помехозащищённый, что поставить минимальную скорость пустая трата времени? Да и как кстати процессинг должен догадаться на какой основе организован канал данных, если он отращается к стандартным системным средствам? Он даже о том какие там дрова стоят не знает. А ардуиновский то терминал у вас работает выходит, раз сразу грешите на процессинг?

blackhand
Offline
Зарегистрирован: 13.10.2012

ourlive пишет:

blackhand пишет:

Ведь у меня н провод, а радиомодули) Да, в настройки обоих модулей прописана одинаквая скорость

Думаете у радиомодуля канал такой широкий и помехозащищённый, что поставить минимальную скорость пустая трата времени? Да и как кстати процессинг должен догадаться на какой основе организован канал данных, если он отращается к стандартным системным средствам? Он даже о том какие там дрова стоят не знает. А ардуиновский то терминал у вас работает выходит, раз сразу грешите на процессинг?

 

Да, ардуиновский терминал работает идеально на всех скоростях . Ну не знаю, эти модули - COM-удлиннители, дрова в системе стоят. 

ourlive
Offline
Зарегистрирован: 26.05.2012

ардуиновский терминал через радио модуль даже шьёт скетчи?

ourlive
Offline
Зарегистрирован: 26.05.2012

Serial.list()[0] - это точно тот порт? Замените эту переменную на очевидное типа "COM1", на всякий случай. Проверку работоспособности осуществлять простой передачей одного символа в дуину и его же обратно на тестовом скетче (а то и вовсе закороткой rx-tx). На период отладки выньте из исключений сектча процессинга блоки работы с ком-портом, всё должно работать без низ, а оборачивать можно потом, и то в крайнем случае, потому как любые ошибки в этих функциях - нарушение нормальной работы на аппаратном уровне.

blackhand
Offline
Зарегистрирован: 13.10.2012

ourlive пишет:

ардуиновский терминал через радио модуль даже шьёт скетчи?

не, не шьёт. Буду, пожалуй, как вы сказали, нащупывать, в чём проблема. Может напишу схожу по фукнционалу обрабатывающую программу на С#, там всё же ближе к системным делам

ourlive
Offline
Зарегистрирован: 26.05.2012

Блин, ну очевидно же что ваш удлиннитель нифига не удринняет, проблема аппаратная.

blackhand
Offline
Зарегистрирован: 13.10.2012

ourlive пишет:

Блин, ну очевидно же что ваш удлиннитель нифига не удринняет, проблема аппаратная.

А не подозрительно ли, что любой монитор порта (Ардуиновский или PUTTY, например) работает с ним корректно даже на удалении в примерно 600м через бетонные перекрытия, а процессинговый скетч вдруг не работает?

ourlive
Offline
Зарегистрирован: 26.05.2012

Тогда действительно странно, гляньте в процессах, нет ли кучи поназапущенных java(TM). Оно почему то именно при при запуске через компилятор не редко на ком-портах вешается, а в готовом скомпилированном приложении отлично работает. Есть какой то косяк с библиотекой serial, вспомнил, по крайней мере под win8.