【问题标题】:Boost Asio serial_port - need help with ioBoost Asio serial_port - 需要 io 帮助
【发布时间】:2008-11-06 06:01:25
【问题描述】:

所以我一直在尝试学习 boost::asio 的东西,以便使用 RS232 与串行设备进行通信。文档很少,示例也不存在。无法弄清楚如何与设备进行通信。该设备无法发送数据,所以我需要做的就是编写,但其他项目需要实际的来回通信,因此将不胜感激。到目前为止我的代码如下。

#include <boost/asio/serial_port.hpp>
using namespace::boost::asio;

int main()
{
    io_service io;
    serial_port port( io, "COM3" );
    port.set_option( serial_port_base::baud_rate( 19200 ) );

    unsigned char commands[4] = { 1, 128, 240, 0 };

    // write the commands to the device

    return 0;
}

简而言之:需要有关 serial_port 的 io 部分的帮助。

【问题讨论】:

    标签: c++ boost


    【解决方案1】:

    除了波特率,您可能还需要设置其他选项,例如:character_size、flow_control、parity 和 stop_bits。要将数据写入串行端口,您可以执行以下操作:

    boost::asio::write(port, boost::asio::buffer(commands, 4));
    

    库对缓冲区类型的接受非常灵活,您可能希望在此处进一步了解该主题:Buffers

    【讨论】:

    • 谢谢,大部分选项都让您不知所措,需要从某个地方开始。我很幸运,因为除了波特率之外的所有东西的默认值都是板子使用的。
    【解决方案2】:

    感谢这里和其他地方的帮助,我让它工作了。写了一个小程序,也许可以帮助一些人弄清楚 boost 串口的东西。

    boostserialportdemo.cpp

    【讨论】:

    • 你的demo的linux版本应该使用/dev/ttyS2。 Linux 设备使用基于 0 的编号
    • 我在该页面上收到 404。你介意把它上传到别的地方吗?谢谢。
    【解决方案3】:

    如果您想知道为什么他的示例给出了编译错误,请将两行的 CSIZE 更改为 C_SIZE。这可能是网络上唯一一个很好的示例程序。
    Thanks

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-07
      • 1970-01-01
      • 2018-07-01
      • 2012-03-28
      • 1970-01-01
      相关资源
      最近更新 更多