Boost Asio serial_port - нужна помощь с io

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


person Brian Paden    schedule 06.11.2008    source источник


Ответы (3)


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

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

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

person Judge Maygarden    schedule 06.11.2008
comment
Спасибо, был в основном поражен количеством вариантов и нужно было с чего-то начать. Мне повезло, потому что значения по умолчанию для всего, кроме скорости передачи, — это то, что использует плата. - person Brian Paden; 06.11.2008

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

boostserialportdemo.cpp

person Brian Paden    schedule 08.11.2008
comment
Linux-версия вашей демонстрации должна использовать /dev/ttyS2. Устройства Linux используют нумерацию, начинающуюся с 0 - person deft_code; 14.10.2009
comment
Я получаю 404 на этой странице. Не могли бы вы загрузить его куда-нибудь еще? Спасибо. - person Tomas Andrle; 06.12.2011

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

person xinthose    schedule 29.12.2014