Проблема связи последовательного порта Boost asio при обновлении до более новой версии BoostC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Проблема связи последовательного порта Boost asio при обновлении до более новой версии Boost

Сообщение Anonymous »

У меня есть программа, использующая Boost Asio, и я хочу обновить эту программу с Boost 1.64 до 1.84. Программа использует один io_context в одном потоке. После запуска регистрируются 2 posix::basic_stream_descriptor, один boost::asio::serial_port и несколько boost::asio::ip::tcp::sockets.
Программа структурирована следующим образом: я запускаю вызовы async_read_some для объектов, созданных выше, затем вызываю метод io_context::run(). Если данные поступают в какой-либо TCP-сокет или дескриптор потока, в программе выполняется действие через цепочку асинхронных обработчиков. Я всегда перезапускаю асинхронное чтение после получения запроса, поэтому io_context всегда должен работать и не останавливается.
Моя проблема в том, что связь через последовательный порт не работает должным образом в моей программе под версией Boost 1.84.
Когда я отправляю сообщение последовательному устройству с помощью async_write_some, я не получаю какую-то часть или весь ответ (даже с длительным таймаутом). Я использую несколько async_read_some, позже я попробовал один async_read_until.
Если я использую макрос BOOST_ASIO_DISABLE_EPOLL при сборке, связь через последовательный порт работает нормально, как и в Boost 1.64.
Я создал отдельную небольшую программу, которая содержит только связь через последовательный порт, написанную с помощью Boost Asio. Однако эта небольшая программа работает нормально даже без макроса BOOST_ASIO_DISABLE_EPOLL.
Мой вопрос: в чем может быть корень проблемы, где искать причину ошибки?
Заранее спасибо.
Примечание 1. Это кросс-скомпилированная программа, в которой старая программа, использующая Boost 1.64, работала на устройстве с ядром Linux. 4.9 (32-разрядная версия), а новая версия Boost 1.84 должна работать на ядре Linux 6.6 (64-разрядная версия).

Подробнее здесь: https://stackoverflow.com/questions/799 ... oost-versi
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»