Комментарии 17
Небольшого пояснения и внимательности требует лишь проверка условий (b == 49) и (b == 48)
Вы видели вот эту статью: www.arduino.cc/en/Reference/Char?
Язык Си позволяет записать упомянутые вами проверки так:
(b == '1') и (b == '0')
А разве последовательные порты com / serial нельзя просто открыть как файл в системах Windows или Linux? Зачем эти библиотеки?
Затем, чтобы не разбираться во всех особенностях работы с серийными портами как с файлами, а сосредоточиться на решаемой проблеме: зажечь светодиод с клавиатуры. Вы же не будете писать свой http сервер для того чтобы создать сайт.
Конечно, можно. :)
Вот этот момент что-то я не понимаю. Вы подали питание на плату вашей Arduino. Прошла инициализация регистров контроллера. Всё, он готов работать по UART. Это занимает миллисекунды, не более. О какой задержке в таком случае идёт речь?
Arduino Nano оказался настоящим тугодумом по сравнению со Strela, отправлять данные которой можно было сразу же после установки соединения.
Вот этот момент что-то я не понимаю. Вы подали питание на плату вашей Arduino. Прошла инициализация регистров контроллера. Всё, он готов работать по UART. Это занимает миллисекунды, не более. О какой задержке в таком случае идёт речь?
Насколько я помню, ардуино автоматически перезагружается по сигналу DTR, который поднимается, когда открывается порт. Это сделано, для того, чтобы можно было в ардуиновской IDE ткнуть на кнопку «загрузить скетч» и она сработала бы без дополнительных телодвижений.
Поскольку прошивкаскетча требует, чтобы в данный момент выполнялся загрузчик, контроллер необходимо перезагрузить, что и достигается сбросом по DTR по открытию порта. Потом, видимо, он какое-то время сидит в загрузчике и ожидает прошивки, а если прошивка не пришла — запускает скетч.
Вот для того, чтобы дождаться, когда запустится скетч, автор и вставил задержку, видимо.
Поскольку прошивкаскетча требует, чтобы в данный момент выполнялся загрузчик, контроллер необходимо перезагрузить, что и достигается сбросом по DTR по открытию порта. Потом, видимо, он какое-то время сидит в загрузчике и ожидает прошивки, а если прошивка не пришла — запускает скетч.
Вот для того, чтобы дождаться, когда запустится скетч, автор и вставил задержку, видимо.
Скорее всего, прав DmitriyN, изначально было ощущение, что он перезагружается.
При общении с Arduino через COM-порт столкнулся с тем, что этот самый COM-порт периодически отваливался и появлялся в /dev/ под другим номером. Подозреваю, что виной тому был китайский кабель, который шел в комплекте с ардуиной.
Однако все же решил отказаться от этой нестабильной идеи и передаю данные через enc28j60 модули.
P.S: Либа EtherCard для них очень сыра, но альтернативы лучше не нашел.
Однако все же решил отказаться от этой нестабильной идеи и передаю данные через enc28j60 модули.
P.S: Либа EtherCard для них очень сыра, но альтернативы лучше не нашел.
А кто-нибудь юзал родную либу www.wch.cn/download/CH341SER_ANDROID_ZIP.html для китайских ардуин на чипе CH340?
>>добавить скаченные jar-архивы
в Java обществе принято использовать что-то типо Maven/Gradle и выкладывать сразу весь проект на github, чтобы не делать подобного рода манипуляции.
О чем собственно статья? о том, что есть библиотека jar Arduino?
если открыть ее — там всего пара-тройка классов, которые даже wrapperом назвать сложно, несколько методов вызывающих jSerialComm
а это вообще ужас, зачем внутри библиотеки делать графический вывод ошибки.
в Java обществе принято использовать что-то типо Maven/Gradle и выкладывать сразу весь проект на github, чтобы не делать подобного рода манипуляции.
О чем собственно статья? о том, что есть библиотека jar Arduino?
если открыть ее — там всего пара-тройка классов, которые даже wrapperом назвать сложно, несколько методов вызывающих jSerialComm
public boolean openConnection(){
if(comPort.openPort()){
try {Thread.sleep(100);} catch(Exception e){}
return true;
}
else {
AlertBox alert = new AlertBox(new Dimension(400,100),"Error Connecting", "Try Another port");
alert.display();
return false;
}
}
а это вообще ужас, зачем внутри библиотеки делать графический вывод ошибки.
Да, Maven приянят, Graddle принят, но мне теперь изъяснятся с помощью понятных для вас технологий, или как? Я сделал статью для начинающих, о чем упомянул в самом начале. Или мне надо было еще over 10500 скроллов вниз объяснять новичкам, что такое Maven, Graddle, и как добавить «дипэнденси» в свой проект? Данная статья- quick start, поэтом если ваш уровень upperintermidiate, то можете смело проходить мимо. Мне, в свое время, очень не хватило такой статьи, и если хоть одному она покажется полезной, и заставит копнуть немного глубже- то я буду только рад.
P.S. А графический вывод ошибки нужен для того, чтобы «особо внимательные начинающие» сразу поняли, в чем проблема, а не доставали таких как вы, просветленных гуру.
P.S. А графический вывод ошибки нужен для того, чтобы «особо внимательные начинающие» сразу поняли, в чем проблема, а не доставали таких как вы, просветленных гуру.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Работа с COM-портом Arduino из Java-приложения