Работа с com портами #16
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
С помощью программы https://freevirtualserialports.com/ смогли открыть 2 виртуальных порта на windows.
Проверили с помощью терминалов(https://micro-pi.ru/terminal-1-9b-работаем-com-портом/) соединение, все работает.
Взяли за основу код с сайта: https://www.pololu.com/docs/0J73/15.6, указали в коде один из новосозданных ком портов.
Получаем в ответ ошибку: Failed to flush serial port: The request is not supported. Что это может быть?
Ссылка на исходник?
Немного не понял, про какой исходник вы имете в виду. Программа подключения была взята полностью с сайта, единственное был поменян ком порт, и все.
Если ориентироваться на код с этого сайта: https://ru.wikibooks.org/wiki/COM-порт_в_Windows_(программирование)
А именно в самом низу пример кода, то он выдает следующую ошибку: terminate called after throwing an instance of 'TTYException'
Слишком мало информации, чтобы я сказал в чём проблема. Может у вас не тот ком порт указан. Не понятно, в какой момент вылетает
TTYException
.И вообще этот пример один из многих. Можно посмотреть иные реализации работы с COM портом.
А как построить логику работы с uart? В том плане, мы же через него отправляли байты, а теперь отправляем через com порт, нужен ли он или какая логика?
Сделал как понимаю на ком портах, без уарта
11b9374377
Ещё возник вопрос, а как мы будем открывать com-порты на атмеге, это же нормально можно сделать только на каком либо компьютере. Не понимаю логику. Или нужно сделать отдельную программу, или же наоборот запускаем все с ноутбука? Желательно как можно точный ответ дать на это все, чтобы уже закончить с кодом курсового проекта
11b9374377 (diff-61dc8f359adeef7fca8a9b8943be203afe1e2008)
папку Debug нельзя коммитить, т.к. на получается в результате сборки. Вы засоряете репозиторий.
Читаем дружно про .gitignore
У вас COM-порт на атмеге и есть UART. Код был написан. Внутри кода для микроконтроллера у вас есть доступ ко ВСЕМ регистрам устройства.
При разработке прикладного ПО для любой ОС вы имеете API, не имеете прямой доступ к регистрам COM-порта (это всё тот же UART). Вот так с регистрами работают внутри ядра Linux https://elixir.bootlin.com/linux/latest/source/drivers/tty/serial/8250
Хорошо, как нам эмулировать подачу байтов в uart на устройство? Пока есть мысли о том, чтобы написать отдельное приложение на другом языке, которое будет эмулировать второе устройство на прием и отправку.
Вот у вас есть указанная вами программа, это вся эмуляция.
Вы пишите программу, которая использует вашу же реализацию HDLC, а UART'ом выступает COM-порт. Запустите эту программу на Windows два раза: один для первого порта, другую для другого. Потом, когда у вас будет устройство-ардуино, вы запустите программу только один раз: вы укажите COM-порт ардуины.
2ad07a39c5
в этом коммите вы тоже выгрузили бинарные компилируемые файлы (мусор)То есть, мы должны запустить наш код на ардуино, подключенную к ноутбуку, понять какой это com-порт, и через программу freevirtualserialports создать remote порт, подключиться к нему через код, как в
https://git.vyatsu.ru/ICS-Microprocessor-2020/Display_Avr_3/src/branch/dev/hdlc_screen/main_com.c
только с одним портом? А для проверки создать 2 порта, как в main и сделано
На встрече вы мне продемонстрируете работу своего кода для Атмеги: у вас будет прошитое устройство, котрое будет подключено к PC, на котором будет запущена модифицированная ваша программа.
Дома, пока у вас нет ардуины, вы можете потестить работу своей программы на эмуляторе COM-портов.
Как я сейчас вижу, ваша программа для AVR есть в коммите
2ad07a39c5
, а для Windows вы разрабатываете программу в11b9374377
Все поправил и сделал, но есть одна проблема. При попытке вывода строки на экран в строчке