Программа на processing не видит данные, пересылаемые в com-порт по радио
- Войдите на сайт для отправки комментариев
В этом топике 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 - всё работает. В чём может быть проблема?
скотость порта не великовата?
скотость порта не великовата?
это скетч исходный, я , естественно, всё настроил и переправил на 19200
Проблема как-то в том, что Processing не хочет, на мой взгляд, работать с радиомодулем. Может быть, надо писать софт на другом языке, который будет поток в файл сохранять. Но очень это всё подозрительно,
переправил на 19200
Обычный провод длинее 5ти метров часто быстрее 9600 не разограть. И надеюсь скорость вы как на передающей, так и на приёмной стороне меняли?
переправил на 19200
Обычный провод длинее 5ти метров часто быстрее 9600 не разограть. И надеюсь скорость вы как на передающей, так и на приёмной стороне меняли?
Ведь у меня н провод, а радиомодули) Да, в настройки обоих модулей прописана одинаквая скорость
Ведь у меня н провод, а радиомодули) Да, в настройки обоих модулей прописана одинаквая скорость
Думаете у радиомодуля канал такой широкий и помехозащищённый, что поставить минимальную скорость пустая трата времени? Да и как кстати процессинг должен догадаться на какой основе организован канал данных, если он отращается к стандартным системным средствам? Он даже о том какие там дрова стоят не знает. А ардуиновский то терминал у вас работает выходит, раз сразу грешите на процессинг?
Ведь у меня н провод, а радиомодули) Да, в настройки обоих модулей прописана одинаквая скорость
Думаете у радиомодуля канал такой широкий и помехозащищённый, что поставить минимальную скорость пустая трата времени? Да и как кстати процессинг должен догадаться на какой основе организован канал данных, если он отращается к стандартным системным средствам? Он даже о том какие там дрова стоят не знает. А ардуиновский то терминал у вас работает выходит, раз сразу грешите на процессинг?
Да, ардуиновский терминал работает идеально на всех скоростях . Ну не знаю, эти модули - COM-удлиннители, дрова в системе стоят.
ардуиновский терминал через радио модуль даже шьёт скетчи?
Serial.list()[
0
] - это точно тот порт? Замените эту переменную на очевидное типа "COM1"
, на всякий случай. Проверку работоспособности осуществлять простой передачей одного символа в дуину и его же обратно на тестовом скетче (а то и вовсе закороткой rx-tx). На период отладки выньте из исключений сектча процессинга блоки работы с ком-портом, всё должно работать без низ, а оборачивать можно потом, и то в крайнем случае, потому как любые ошибки в этих функциях - нарушение нормальной работы на аппаратном уровне.ардуиновский терминал через радио модуль даже шьёт скетчи?
не, не шьёт. Буду, пожалуй, как вы сказали, нащупывать, в чём проблема. Может напишу схожу по фукнционалу обрабатывающую программу на С#, там всё же ближе к системным делам
Блин, ну очевидно же что ваш удлиннитель нифига не удринняет, проблема аппаратная.
Блин, ну очевидно же что ваш удлиннитель нифига не удринняет, проблема аппаратная.
А не подозрительно ли, что любой монитор порта (Ардуиновский или PUTTY, например) работает с ним корректно даже на удалении в примерно 600м через бетонные перекрытия, а процессинговый скетч вдруг не работает?
Тогда действительно странно, гляньте в процессах, нет ли кучи поназапущенных java(TM). Оно почему то именно при при запуске через компилятор не редко на ком-портах вешается, а в готовом скомпилированном приложении отлично работает. Есть какой то косяк с библиотекой serial, вспомнил, по крайней мере под win8.