Myp писал(а):это значит что нужно просто передавать 3 числа через точку с запятой по уже имеющемуся протоколу, uart сам по себе достаточно простой и надёжный.
незачем запихивать эти 3 цифры ещё и во второй протокол.
SpaceQuester ставит конкретную задачу, не просто передать пакеты данных через COM-порт, а еще и обработать их и подать обратное управление в контроллер. И обрабатывать их будет не человек, а какая то программа, а программа должна понимать, что за данные она получила, и что это именно те данные которые ей нужны, а затем сформировать ответ и переслать его обратно. При этом и контроллер, в свою очередь, тоже должен понять что за информация в него поступила. И здесь речь идет не о низкоуровневом UART, а о протоколе более высокого уровня. К примеру, упрощенно, вам нужно передать число "3,25", после передачи посредством UART у вас в буфере окажется три байта данных содержащих следующие ASCI-символы "3" "," "2" "5" и что дальше с ними делать прикажете? А дальше ваша программа должна извлечь эти байты из буфера, "понять", что это именно те данные которые предназначены для нее, превратить эти ASCI коды обратно в число 3,25 принять какое то решение и вернуть управляющее воздействие в контроллер, опять же в виде какого то числа или строки. А вот UART, как раз, обеспечит передачу этого числа или строки в контроллер. На стороне контроллера должна произойти аналогичная операция по декодированию принятой информации.
Мур, похоже вы не очень в теме. Почитайте теорию. UART это низкоуровневый протокол, который развернет ваши байты в длинную цепочку битов и передаст их без потерь и искажений. UART это асинхронный приемо-передатчик, он обеспечивает передачу данных между приемником и передатчиком и поместит эти данные в буфере приемника, а вот что с ними дальше то делать? Расскажите подробнее если знаете!? Как их оттуда извлечь? Как понять что за байты вы получили? У вас в буфере окажется "куча" бессмысленной и не связанной, на первый взгляд, информации состоящей из переданных передатчиком байт данных. Как понять где закончится первый пакет и начнется второй, третий, четвертый, а при этом учтите разность в быстродействии ПК и ардуино. Кто то из них "напихает" в буфер кучу пакетов, при этом второй не успеет прочитать, произойдет переполнение буфера, данные могут потеряться. Вы вообще пробовали передать данные с контроллера в ПК и обратно? И не просто увидеть цифры в окне терминала, а передать в работающую программу, при этом это должен быть не один единственный байт, а бесконечный поток пакетов данных, при чем проходящий в обе стороны. Затем, как-то обработать их и вернуть ответ в контроллер. Если нет, то попробуйте. И с вашим НЕпониманием в этом вопросе все встанет на свои места.
Да и вообще, что мы тут полемику развели между собой? Где сам SpaceQuester, который тему поднял? SpaceQuester, что молчишь?
Ну, а по поводу "ты в интернете", скажу ТЕБЕ так - это ТЫ в "интернете", а у меня все в порядке