Как разобрать строку динамического размера?
- Войдите на сайт для отправки комментариев
Хочу отправлять в порт ардуины данные - двух или трехзначные номера через запятую, и количество таких номеров заранее неизвестно, но количество близкое к сотни.
Суть вот в чем - по этим данным идет отрисовка графиков на дисплее. Мне нужно разобрать эту строку, после чего в цикле перебрать каждый набор цифр.
В текущий момент у меня эти наборы цифр отправляются по одному, в итоге на пересылку и обработку всех данных уходит почти две минуты, что весьма долго, да и неудобно анализировать на дисплее данные. Вот я и захотел оптимизировать это дело, но вот как обработать строку неизвестной длины придумать не могу, да и гугл не помог, ибо нахожу информацию об обработке статических строк.
Ну и сопутствующий вопрос - какой максимальный размер строки может скушать порт ардуины?
1. Максимальный размер строки, который может скушать порт ардуины (оставим в покое идиотскую формулировку, да?) - неограниченный.
2. Разбирать вам проще всего по приходу разделителя, в вашем случае, запятой. Вот как-то так:
В порт посылать числа, после каждого числа - запятую. Код писан под положительные числа в десятичной системе, без претензий на безгрешность - просто показал вариант реализации.
1. Максимальный размер строки, который может скушать порт ардуины (оставим в покое идиотскую формулировку, да?) - неограниченный.
ну, да. а, может быть равен буферу порта?
1. Максимальный размер строки, который может скушать порт ардуины (оставим в покое идиотскую формулировку, да?) - неограниченный.
ну, да. а, может быть равен буферу порта?
А может, всего пару килограмм влезет?
оставим в покое идиотскую формулировку, да?
Так сказать - только на какую формулировку фантазии хватило :)
За код большое спасибо! То что доктор прописал. Правда около часа не мог догнать почему отрисовывается только часть отправденых данных, думал уже оперативки не хватает. А потом понял что полученные данные обработать и отрисовать ардуина попросту не успевает, пришлось понизить скорость порта до 2400 бод, на большей скорости данные начинают теряться.
оставим в покое идиотскую формулировку, да?
Так сказать - только на какую формулировку фантазии хватило :)
За код большое спасибо! То что доктор прописал. Правда около часа не мог догнать почему отрисовывается только часть отправденых данных, думал уже оперативки не хватает. А потом понял что полученные данные обработать и отрисовать ардуина попросту не успевает, пришлось понизить скорость порта до 2400 бод, на большей скорости данные начинают теряться.
Чтобы данные не терялись в СОМ порту, надо включить управления потоком аппаратное или программное. Либо читать FIFO бурер, котрый очень невелик, в свой большой буфер.