ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
27 февраля
1308615 Топик полностью
Eddy_Em (11.05.2023 14:02, просмотров: 150) ответил =AlexD= на Ну ты ж не к компу напрямую RS485 присопливил, есть какой-то адаптер. Так может адаптер нужен другой?
Я проверял и с аппаратным RS-485, который через стандартный /dev/ttySx подключен. Тоже все буферизуется - это ж на уровне ядра уже! 

А с PL2303 еще хуже, т.к. он через USB, и там сначала на уровне пакетов USB может быть путаница с таймингами, а потом еще ядро буферизацию добавляет (даже без использования stdlib: чтобы те же cat /dev/ttySx показывали данные, в т.ч. и принятые недавно - даже если mtime в stty в нуль выставишь, есть еще и select, ожидающий данные и т.п.)…

Вот в моем адаптере на семь виртуальных устройств (как будет время, разведу печатную плату и в железе сделаю) тоже все, принятое с UART'ов помещается в циклический буфер и по мере возможности передается: https://github.com/eddyem/stm32samples/tree/master/F3%3AF303/Seven_CDCs Да, если скорость достаточно медленная, то каждый исходящий USB-пакет по байту будет содержать, а вот если большая, будет дробить. И никто там вообще пауз никаких не гарантирует (плюс, опять же, модуль ядра USB-CDC со своей стороны это будет тоже в буфер складывать, чтобы по запросу отдать).

eddy-em.livejournal.com github.com/eddyem