Arduino Serial Commander

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Serial Commander

Сообщение Alex » Вс мар 27, 2016 8:22 am

понятно, покопался в коде Processinga все довольно мутно, цепочка левых байт скорей всего глюк самой среды, об этом говорит ее постоянство,сомневаюсь что они возникают в контроллере или при передачи по UART, меня уже посещает мысль переписать все это на дельфи, и избавится от прокладки под названием jawa машина.
Я думаю, что у этой проблемы есть какая-то причина, которую нужно просто понять и тогда её можно будет решить. Или ввести контроль передачи.

По поводы Дельфи — насколько я понимаю, это коммерческая система и любое решение на ней будет предполагать, что пользователи должны либо платить за неё, либо нарушать закон. И вообще это выбивается из концепции свободной системы.
alexsis_76
Сообщения: 792
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: Arduino Serial Commander

Сообщение alexsis_76 » Вс мар 27, 2016 1:31 pm

Я думаю, что у этой проблемы есть какая-то причина, которую нужно просто понять и тогда её можно будет решить. Или ввести контроль передачи.
ну да, может попробовать завернуть UART в AMS?Нужно определится где она возникает, насчет контроля и именно так сделано у микрочипа , считается md5.
По поводы Дельфи — насколько я понимаю, это коммерческая система и любое решение на ней будет предполагать, что пользователи должны либо платить за неё, либо нарушать закон. И вообще это выбивается из концепции свободной системы.
Да среда вроде как не бесплатная, но исходные коды будут, если Вас смущает именно не бесплатность то, после того как отладим можно переписать на что нибудь из FREE.например PascalABC.NET.
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Serial Commander

Сообщение Alex » Пн мар 28, 2016 7:32 am

ну да, может попробовать завернуть UART в AMS?
Это как? Что-то я не понял о чём речь.
Нужно определится где она возникает, насчет контроля и именно так сделано у микрочипа , считается md5.
Можно сделать элементарно: посылается блок и его контрольная сумма — если совпадает — приходит ОК и передаётся следующий блок, если ошибка — повторная передача блока и так до 10-и попыток. Такая организация позволит поднять скорость порта и файлы будут передаваться быстро.

Как будет свободное время — реализую. Или можете вы реализовать — задача несложная.
Да среда вроде как не бесплатная, но исходные коды будут, если Вас смущает именно не бесплатность то, после того как отладим можно переписать на что нибудь из FREE.например PascalABC.NET.
Моё мнение, что нет смысла плодить сущности и лучше всего использовать Процессинг «комплиментарный» Ардуино.
alexsis_76
Сообщения: 792
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: Arduino Serial Commander

Сообщение alexsis_76 » Пн мар 28, 2016 1:39 pm

Это как? Что-то я не понял о чём речь.
принятый символ тут же заворачиваем обратно, а на приеме сверяем.
Можно сделать элементарно: посылается блок и его контрольная сумма — если совпадает — приходит ОК и передаётся следующий блок, если ошибка — повторная передача блока и так до 10-и попыток. Такая организация позволит поднять скорость порта и файлы будут передаваться быстро.
ну да, только все таки надо попытаться косяк найти.
Как будет свободное время — реализую. Или можете вы реализовать — задача несложная
сделаем.
Моё мнение, что нет смысла плодить сущности и лучше всего использовать Процессинг «комплиментарный» Ардуино.
хороше бы если бы работало, и трогать бы не стали.
alexsis_76
Сообщения: 792
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: Arduino Serial Commander

Сообщение alexsis_76 » Вт мар 29, 2016 12:40 pm

Вообщем начал пробовать утилиту, насчет порчи файлов, пока замечено не было, правда могу почему то записать их не более 5 шт, завтра будет ясно почему, по поводу скорости, можно регулировать, на 115000 скорость очень хорошая, правда на этом все и заканчивается, устройство безбожно теряет символы,виной тому я думаю опрос UART по ходу программы, пока скорость низкая все успеваем, а когда большая , не успеваем считать очередной символ,нужно использовать прерывания это в какой то мере спасет положение,крайне неудобно обновление файлов по одному, может сделать что бы записывал все скопом из данной папки?

Да и еще запись и считывание карты как я понял идет побайтно? интересно ведь карты читают зараз целый сектор 512 байт,как там библиотека устроена.

р.s. насчет скорости ,в прерывании от UART заполняем буфер принятыми символами, затем когда буфер наполнится передаем для записи на карту, пока карта записывается буфер заполняется новыми символами, таким способом мы выровняем скорости приема и записи.
alexsis_76
Сообщения: 792
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: Arduino Serial Commander

Сообщение alexsis_76 » Пт апр 01, 2016 9:53 am

Добрый день, есть жедающие потестить утилиту commandera?

предназначена для обновления файлов на cd карте, программа в архиве, замените в папке ams файл upload, запустите утилиту, выберите порт, скорость 9600, кнопка открыть файл, затем кнопка записать файл , по окончании процесса справа от надписи записано появится число записанных байт, программа писалась под windows xp поэтому на старших версиях возможны проблемы с совместимостью.
Вложения
upload.rar
(229.98 КБ) 246 скачиваний
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino Serial Commander

Сообщение serghei » Пт апр 01, 2016 11:26 pm

Здравствуйте.Очень хочу потестить.Сейчас изучаю работу карты и приходиться часто менять файлы.
Насколько я понял-можно заливать картинки? И главное-подготавливаем файл,через коммандер заливаем -он запишется с заменой файла? Если не понравится возвращаем старый?
И еще по поводу карт. Купил новую 10 класса 8 гигов,формат ФАТ32,залил-все работает,но определилась как 3,7 гига.(в ветке power monitor выкладывал скриншот).Через 2 недели понадобилась для загрузки винды,форматнул в нтфс,потом
вернул все обратно-все-АМС не видит карту(с компом все ок).Сейчас использую б.у от регистраторов
на 1 гиг в ФАТ16 по бросовой цене. При выводе содержимого СД карты в АМС файлы выводятся в строчку без пробелов.Это нормально?(в дуе проблем с памятью нет,но электромодуль придется
переделывать)
И главное-утилита для меги или дуи,или без разницы?
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
alexsis_76
Сообщения: 792
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: Arduino Serial Commander

Сообщение alexsis_76 » Сб апр 02, 2016 1:29 am

Насколько я понял-можно заливать картинки? И главное-подготавливаем файл,через коммандер заливаем -он запишется с заменой файла? Если не понравится возвращаем старый?
да , пробовал разные, doc,txt,exe,rar,картинки любых форматов, все пишется
И еще по поводу карт. Купил новую 10 класса 8 гигов,формат ФАТ32,залил-все работает,но определилась как 3,7 гига.(в ветке power monitor выкладывал скриншот).Через 2 недели понадобилась для загрузки винды,форматнул в нтфс,потом
вернул все обратно-все-АМС не видит карту(с компом все ок).

ограничение на размер тома,Максимально возможный размер файла для тома FAT32 — ~ 4 ГБ — 4 294 967 295 байт может это https://ru.wikipedia.org/wiki/FAT32
И главное-утилита для меги или дуи,или без разницы?
не знаю как для дуе у меня ее нет, для меги идет,попробуйте, на внешний вид внимания сильно не обращайте,потом доделаем, интересует целостность файлов на карте после заливки и если есть порча ее зависимость от загрузки контроллера .

P.S. Вчера добрался до библиотеки uart , оказывается не все так плохо, при инициализации разрешаются прерывания, в обработчике принятые символы складываются в буфер, размер можно регулировать по умолчанию установлен 64, функция read читает символы с этого буфера, все это скрыто в дебрях библиотеки и для разработчика недоступно ,наружу торчат только Serial.available() и Serial.read(); сам обработчик скрыт за private.
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Serial Commander

Сообщение Alex » Сб апр 02, 2016 8:40 am

устройство безбожно теряет символы,виной тому я думаю опрос UART по ходу программы, пока скорость низкая все успеваем, а когда большая , не успеваем считать очередной символ,нужно использовать прерывания это в какой то мере спасет положение
Не всё так просто. Если вы смотрели код, то там видно, что как только начинается передача, то ВСЁ блокируется, кроме приёма символов и скорость контроллера такова, что он «курит» (ничего не делает) множество циклов между приходом символов. Так что дело не в том, что он «не успевает». А вот в чём — я пока установить не могу.

Есть предположение, что контроллер по какому-то прерыванию отвлекается и пропускает символы.
Добрый день, есть жедающие потестить утилиту commandera?
Надеюсь, что после экспериментов вы всё-таки избавитесь от .exe и перепишите всё на открытом Процессинге.
alexsis_76
Сообщения: 792
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: Arduino Serial Commander

Сообщение alexsis_76 » Сб апр 02, 2016 11:13 am

Надеюсь, что после экспериментов вы всё-таки избавитесь от .exe и перепишите всё на открытом Процессинге
Да перепишу.
Не всё так просто. Если вы смотрели код, то там видно, что как только начинается передача, то ВСЁ блокируется
а в каком месте, в файле upload нет никагого намека на цикл,есть
if (Serial.available() > 0) {
incomingByte = getBuffer(Serial.read());
но они не блокирующие, вот только к сожалению я не догадался во время обновления запустить пинг и посмотреть. Т.е.Вы хотите сказать что во время прошивки устройство блокируется?
Есть предположение, что контроллер по какому-то прерыванию отвлекается и пропускает символы.
контроллер работает на частоте 16 мгц,что такого мы должны делать в обработчике что бы пропускать символы на 9600 и еще с буферизацией,попробуйте по заливайте файлы, интерерует зависимость частоты ошибок от загрузки контроллера, upload построен таким образом что за один вызов uploadWorks(); мы считываем из буфера приема 1 байт с помощью
if (Serial.available() > 0) {
incomingByte = getBuffer(Serial.read());
в прерывании используется кольцевой буфер,может быть иногда промежутки между вызовами uploadWorks(); растягиваются до такого состояния что кольцевой буфер перезаписывается, если так то в файле upload нужно будет организовать явный цикл, видите там строчка

Код: Выделить всё

while(fff==true){  }
я начал пробовать но пока не доделал, только в понедельник.

Думаю надо сделать следующим образом, на задежки между вызовам uploadWorks() мы повлиять не можем, следовательно, внедрить в утилиту прошивки маркер начала обновления char START_MARKER[4]="STR"; для более уверенного входа в режим программирования передавать символы маркера с задежкой, чтобы устройство могло их гарантированно захватить, затем при обнаружении маркера организуется цикл while, таким образом отсекаются вызовы других функций, по окончании процесса обновления цикл сворачивается и все продолжается обычным порядком, могу попробовать только в понедельник.
Ответить