Boost Asio serial_port - нужна помощь с io - PullRequest
15 голосов
/ 06 ноября 2008

Итак, я пытался изучить материал 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;
}

Вкратце: нужна помощь с io-частью serial_port.

Ответы [ 3 ]

16 голосов
/ 06 ноября 2008

В дополнение к скорости передачи в бодах вам также может потребоваться установить другие параметры, такие как: character_size, flow_control, parity и stop_bits. Для записи ваших данных в последовательный порт вы можете сделать следующее:

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

Принятие библиотеками типов буферов очень гибкое, и вы можете прочитать далее по этой теме здесь: Буферы .

15 голосов
/ 08 ноября 2008

Благодаря помощи отсюда и из других мест, я получил это работает. Написал небольшую программу, которая может помочь некоторым людям разобраться и в улучшенном последовательном порту.

boostserialportdemo.cpp

0 голосов
/ 29 декабря 2014

Если вам интересно, почему в его примере выдается ошибка компиляции, измените CSIZE на C_SIZE в обеих строках. Это, наверное, единственный хороший пример программы в Интернете.
Спасибо .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...