входящие данные ИЛИ волшебники страны консольные OS
- Войдите на сайт для отправки комментариев
Пнд, 07/11/2016 - 15:32
Всем доброго дня, недавно я с этой ардуинкой знаком и собственно вопрос следующий:
Как научить ардуино понимать входящие данные???
Сам хочу сдклать из ардуино подобие консольной операционной систем аля dos...в том планечто вводишь комманду (по последовательному порту, воздуху или еще как) она ее принемает и делает что просят.
Тут вопрос в понимании... НЕ могу заставиьт ее понимать комманды, с символами все просто ввел и вуаля, а вот с коммандами разобраться не выходит... вроде бы все просто - засунь все в массив и готово, но вот засунуть данные из буфера в массив не могу (знаний не хватает).
подскажите как это реальзовать?как сделать чтобы Ардовина отличала комманды?
Прописываешь команды в массив, после получения пакета перебором (whie) ищешь совпадение с принятой командой и взводишь соответствующий флаг. Затем в зависимости от флага выполняешь команду. Я бы так сделал.
подскажите как это реальзовать?как сделать чтобы Ардовина отличала комманды?
Делай интерпретатор , но для одной команды. Не знаешь как делать интерпретатор? Гугл в помощь.
Тут вопрос в понимании... НЕ могу заставиьт ее понимать комманды, с символами все просто ввел и вуаля, а вот с коммандами разобраться не выходит...
публикуй код, где у тебя что-то получается и что-то не получается.
ну, не получается - попробуй иначе
http://we.easyelectronics.ru/AVR/komandnaya-obolochka-dlya-avr.html
http://we.easyelectronics.ru/AVR/komandnaya-obolochka-dlya-avr.html
не обязательно далеко ходить #76
fotorobot, основой операционной системы (OS) является файловая система (FS). Если Вы не планируете делать FS, то и речи об OS быть не может.
Вы проясните, что Вам нужно: OS или процессор консольных команд (CCP).
мне нужно, что бы ардуино выполняла определенные функциии после получеия комманд по средствам каналов передачи данных
Так а в чем пгоблема-то? Принимаете код команды, проверяете и выполняете команду. Усё. :)
Принимать, что символ, что команду - пофиг. Байт - он и в африке байт. Проверить не можете? Так Клапауций за вас это уже сделал .. или не знаете как команду выполнить? Вызовите как процедуру или функцию типа void .. делов -то.
Дел в том что скетч Калапуция не работает... я побовал так...
Разобрался... Спасибо)
Дел в том что скетч Калапуция не работает... я побовал так...
ок.
это #5 - твой скетч, который компилится.
это #76 - мой скетч, который работает.
Спасибо за помощь)))
Разобрался в чем была проблема, но теперь у меня другой вопрос - Почему вся эта лабуда перестает работать как только я выношу функции сравнения за "if(serial.available > 0)???
Короче ребята опять все сдохло... ничего не понимаю(((, что не так то?
уже и так побовал
толку 0(((
Короче ребята опять все сдохло... ничего не понимаю(((, что не так то?
у меня всё работает. что не так то, ёпте?
он даннные в порт передает,а сравнение почему то не проходит...
он даннные в порт передает,а сравнение почему то не проходит...
ты смотрел мой код, как я делаю, что бы работало?
твой код напмсан под DIGIUSB... а под Сериалом он не поет...
твой код напмсан под DIGIUSB... а под Сериалом он не поет...
и, что, заменить дидиюсб, на сериал религия запрещает заменить?
ну начнем с того что замена под Srial нчегоне дала... и к ттому же очень грамостко получилось...
Я решил прибегнуть к помощи класса String...
Собственнно была моя ошибка...
Прекратив как сумасшедший искать помощи из вне я решил открыть по шире глаза и проанализировать данные из терминала и увидел что после "эха" отправленных данных у меня всегда пропускается две строки ( как я Б***Ь сразу внимания не оратил)... вобщем пошурстив по функциям класса я наткнулся на trim() которая подчищает все пробелы в String и вуалявсе работает))) Всем спасибо... простие новичка есль достал кого))) но я ведь не со зла)))
А вот и рабочий код)))
P.S.Может кто подскажет откуда лишние данные взялись? хотя я пологаю что это setTimeout();
P.S.Может кто подскажет откуда лишние данные взялись? хотя я пологаю что это setTimeout();
ты их туда(в сериал) отправил
не... у меня в потоке "данные" а в приемник приходит что то наверно такое "данные " и я не могу понять до конца откуда лишнее бедется... вот и подумал что после передачи данных до таймаута он всю "тишину" записывает в буфер... надо попробовать сосчитать за сколько по времени заполнится буфер в 64кб на скорости 9600 и вбить в таймаут, может чего и выйдет)))
попробовал Serial.setTimeout(ms); вещь хороша только от проблемы не избавляет)))