Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Boost Asio serial_port - need help with io

Tags:

c++

boost

So I've been trying to learn the boost::asio stuff to communicate to a serial device using RS232. The documementation is sparse and the examples are non-existent. Can't figure out exactly how to communicate with the device. The device can't send data so all I need to do is write, but other projects require actual back and forth communication so help with that would be appreciated. What code I have so far follows.

#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;
}

In short: need help with the io part of the serial_port.

like image 821
Brian Paden Avatar asked Nov 06 '08 06:11

Brian Paden


2 Answers

In addition to the baud rate, you may also need to set other options like: character_size, flow_control, parity and stop_bits. To write your data to the serial port you can do the following:

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

The libraries acceptance of buffer types is very flexible and you may want to read further on that topic here: Buffers.

like image 197
Judge Maygarden Avatar answered Sep 18 '22 16:09

Judge Maygarden


Thanks to the help from here and other places I got it working. Wrote a small program that might help some people figure out the boost serial port stuff as well.

boostserialportdemo.cpp

like image 30
Brian Paden Avatar answered Sep 20 '22 16:09

Brian Paden