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.
Ответы
Ответ 1
В дополнение к скорости передачи в бодах вам также может потребоваться установить другие параметры: character_size, flow_control, четность и stop_bits. Чтобы записать данные на последовательный порт, вы можете сделать следующее:
boost::asio::write(port, boost::asio::buffer(commands, 4));
Прием библиотек типов буферов очень гибкий, и вы можете прочитать далее эту тему здесь: Buffers.
Ответ 2
Благодаря помощи здесь и в других местах я получил его работу. Написал небольшую программу, которая может помочь некоторым людям понять, что происходит с портом последовательного порта.
boostserialportdemo.cpp
Ответ 3
Если вам интересно, почему его пример дает ошибку компиляции, измените CSIZE на C_SIZE на обе строки. Это, вероятно, единственная хорошая программа для примера в Интернете.
Спасибо.