Boost.Asio は Proactor を使用して、単一のスレッドを使用して I/O を見事に処理します。ソケットと一緒に使用しましたが、気に入っています。ソケットの代わりに、シリアル ポート (Windows では COMX デバイス、Linux では /dev/ttyXXX) で Boost.Asio (および基になる Proactor) の io_service を使用する方法があることがわかりました。実際、Boost.Asio は、ファイル ハンドルなどを含む、あらゆるタイプの I/O で使用されることを意図していると思います。
SPIやI2Cなどのシリアルデバイスに、すぐに使用できるかどうか疑問に思っています。この種のシリアル デバイスは、Linux では /dev/spi のように表示されます。
たとえば、次のように使用できますか。
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 のコア コードを変更せずに、他のデバイス タイプのサポートを簡単に組み込む方法を後で提供しますか?