Boost.Asio использует Proactor для великолепной обработки ввода-вывода, используя один поток. Я использовал его с розетками, и мне это нравится. Я вижу, что есть способ использовать io_service Boost.Asio (и базовый Proactor) с последовательными портами (устройства COMX в Windows и / dev / ttyXXX в Linux) вместо сокетов. На самом деле, я думаю, что Boost.Asio предназначен для использования с любым типом ввода-вывода, включая дескриптор файла и так далее.
Мне интересно, могу ли я использовать его напрямую, из коробки, для любых последовательных устройств, таких как SPI или же I2C. Эти виды последовательных устройств появляются как / dev / spi в Linux.
Например, могу ли я использовать это так:
boost::asio::io_service my_io_service;
boost::asio::serial_port my_spi_serial_port("/dev/spi0", my_io_service);
и автоматически, он работает так же, как обычный последовательный порт (то есть RS232)?
В качестве альтернативы, если SPI напрямую не поддерживается Boost.Asio, предлагает ли последний способ легко включить поддержку любого другого типа устройства без изменения основного кода Boost.Asio?
Задача ещё не решена.
Других решений пока нет …