ну тут такая у тебя ошибка: ты наполняешь массив длиной в размер буфера как раз в тот момент, когда буфер пополняется, вместо, того, чтобы при переполнении буфера записывать значение буфера в строку двумерного массива и обнулять буфер. эти операции по скорости выполнения существенно быстрее, нежели ожидание поступления данных из serial. и да, избавься в коде от delay.

Комментарии: 8

  1. Elektrougli

    так разве read не стирает за собой буфер?

    • Argentina

      смотри, если available ничего не получила, этот код не будет выполняться это даже в первой строке кода старательно отмечено через == 0

      • Elektrougli

        да, и как тогда очистить буфер после его заполнения? какая-то хитрая команда на регистрах? serial.flush очищает вроде исходящие данные

        • Argentina

          к тому же что мешает вообще это хранить в String

          • Elektrougli

            кроме как вычитыванием - хз как . это понятно, каковы мои действия? могу, например, проверять количество доступных байт в буфере и печатать их в мониторе порта. хз что это даст, процесс записи в буфер я не контролирую, успеть вычитать до того, как там станет 64?

            • Anonim

              Почитай RS232 протокол. Там для этого есть RTS/CTS и DTR/DSR signalling discipline lines. Без них твоя проблема неразрешима. Как полумеру можешь сделать физическое устройство, имплементирующее полный RS232. Оно будет сидеть между твоими передатчиком и приемником и буфферизовать данные, отдавая их мелкими порциями в ардуину. Другая полумера - конфигурировать порт на более низкую скорость.

Не нашли ответ?

Вам также может быть интересно