Как установить для serial_port flow_control значение, отличное от none, в boost asio

Я нашел эту прекрасную строку кода:

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

Теперь мне нужно, чтобы для flow_control было установлено аппаратное управление потоком — как мне это сделать?

Документации по этому поводу пока нет, и мне уже очень грустно, что мне пришлось использовать заголовки Windows, чтобы решить мою проблему с отправкой сигнала прерывания.

Скажите, пожалуйста, есть ли способ настроить все параметры последовательного порта без использования заголовков Windows.

Если нет пути без заголовков Windows, я тоже пойду по грязной дороге, поэтому, пожалуйста, также опубликуйте грязные примеры.


person Jook    schedule 22.10.2012    source источник
comment
Интересно, что этот boost::asio::serial_port_base::flow_control::hardware не выдает ошибку, но мне трудно понять, работает ли он - однако мой сигнал прерывания по-прежнему приводит к неправильному ответу моего устройства - возможно, мне придется поискать еще где-нибудь.   -  person Jook    schedule 22.10.2012
comment
Извините, я думаю, что поторопился... вы передаете FLOW куда-то в сокет? Похоже, вы просто создаете вариант.   -  person Collin    schedule 22.10.2012
comment
@collin нет, нет, у меня есть дополнительная строка serialPort.set_option(FLOW); - однако я думаю, что опция потока была установлена, но это не помогло моей основной ситуации - но все же спасибо за быструю помощь.   -  person Jook    schedule 22.10.2012


Ответы (1)


Если вы посмотрите сам заголовочный файл в файле boost документации вы найдете класс 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 в том вызове функции, который вам нужен, чтобы включить аппаратное управление потоком.

person Collin    schedule 22.10.2012
comment
спасибо за это, это была головоломка всего решения проблемы с сигналом обрыва - мне пришлось расширить ее другими параметрами, чтобы настроить звук моего последовательного порта. Несколько странно, что это не задокументировано, но, по крайней мере, теперь есть еще один способ узнать об этом. Этот пост тоже помог: > stackoverflow.com/questions/267752/ - person Jook; 22.10.2012