【问题标题】:How to set serial_port flow_control to other than none under boost asio如何在boost asio下将serial_port flow_control设置为非none
【发布时间】:2012-10-12 06:05:46
【问题描述】:

我发现了这行代码:

serial_port_base::flow_control FLOW(serial_port_base::flow_control::none);

现在,我需要将 flow_control 设置为硬件流控制 - 我该怎么做?

到目前为止,还没有这方面的文档,我已经很伤心了,我不得不使用 Windows 标头来解决发送中断信号的问题。

请告诉我,至少有一种方法可以在不使用 Windows 标头的情况下设置所有串行端口选项。

如果没有windows header就不行,我这里也走脏路,所以也请贴出脏例子。

【问题讨论】:

  • 有趣的是,这个boost::asio::serial_port_base::flow_control::hardware 不会产生错误,但我很难弄清楚它是否有效 - 但是我的中断信号仍然导致我的设备响应不正确 - 也许我会也得去别处看看。
  • 抱歉,我想我是在这上面开枪了..你是在把 FLOW 传到插座的某个地方吗?看起来您只是在创建选项。
  • @collin 不,你没有,我有一个后续行 serialPort.set_option(FLOW); - 但是,我认为设置了流选项,但这对我的主要情况没有帮助 - 但仍然感谢快速帮助

标签: c++ boost serial-port boost-asio flow-control


【解决方案1】:

如果您查看 boost 文档中的 header file itself,您会找到 flow_control 类:

class flow_control
  {
  public:
    enum type { none, software, hardware };
    BOOST_ASIO_DECL explicit flow_control(type t = none);
    type value() const;
    BOOST_ASIO_DECL boost::system::error_code store(
        BOOST_ASIO_OPTION_STORAGE& storage,
        boost::system::error_code& ec) const;
    BOOST_ASIO_DECL boost::system::error_code load(
        const BOOST_ASIO_OPTION_STORAGE& storage,
        boost::system::error_code& ec);
  private:
    type value_;
  };

您应该能够在必须启用硬件流控制的函数调用中使用serial_port_base::flow_control::hardware

【讨论】:

  • 谢谢,这是中断信号问题的整个解决方案的一个难题 - 我不得不用其他选项扩展它,以便对我的串行端口进行合理的设置.有点奇怪,这没有记录,但至少现在还有一种方法可以找到它。这篇文章也有帮助:stackoverflow.com/questions/267752/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-05
  • 2018-07-01
相关资源
最近更新 更多