我要为Windows和Linux(包括esp)实现(希望)健壮的异步串行rs232数据传输(通过USB)。那个很好的嵌入式系统叫做beagle bone black。
最后,我只想(兼容)说出具有鲁棒的截止时间超时,cancel()reset()等的rs232,以免在例如tx或rx线路意外断开连接时崩溃/挂起。可以肯定的是,我可以简单地复制/粘贴/采用现有示例。但我也想变得更开明;-)
我决定使用boost:asio :: serial_port。现在,在阅读文档时,我对这两个类感到困惑(其中三个与typedef serial_port相对):
serial_port_service-串行端口的默认服务实现。
class serial_port_service : public io_service::service
Run Code Online (Sandbox Code Playgroud)
basic_serial_port-提供串行端口功能。
template< typename SerialPortService = serial_port_service>
class basic_serial_port :
public basic_io_object< SerialPortService >,
public serial_port_base
Run Code Online (Sandbox Code Playgroud)
我知道,我非常高兴,因此我需要boost::asio::io_service构造boost::asio::serial_port或serial_port_service。我想我已经了解asio如何完成这项工作的基本方法,例如在本示例中所说的。
OK serial_port_service源自io_service,其ctor接受一个io_service,并且其接口还提供的那些memberfuncs basic_serial_port。
对我来说,这似乎是同时实现了basic_serial_port的io_service-拥有这两个类的原因是什么?什么时候使用另一个?不确定可能的用例,以及这种serial_porttypedef。也许(很明显)我想念什么-有人可以给我更多的光吗?
查看包含 Boost 标头的文件夹,我想找出 Boost 的哪个版本。
图书馆在其内部或名称中嵌入了此类信息。那太棒了。但我想知道如何使用 Boost 的仅标头文件夹找到它?使用它时,我应该求助于哪个 Boost 文档?
作为最后的手段,我可以查看文件系统上文件的创建日期,并猜测它们不能成为任何后续 Boost 版本的一部分。噗。有人可以帮忙吗?
(不,我不会选择“只是替换它并将其更新到最新/已知版本”。)