2008-11-06 57 views
14

所以我一直在尝试学习boost :: asio的东西与使用RS232的串行设备进行通信。文档是稀疏的,并且这些例子是不存在的。无法确切知道如何与设备通信。该设备无法发送数据,所以我需要做的只是编写,但其他项目需要实际的来回通信,所以有助于这一点,将不胜感激。到目前为止我所拥有的代码如下。Boost Asio serial_port - 需要帮助与io

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

总之:需要与serial_port的io部分的帮助。

回答

16

除了波特率之外,您还可能需要设置其他选项,如:character_size,flow_control,parity和stop_bits。为了您的数据写入,你可以做以下的串口:

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

的图书馆接受缓冲区类型是非常灵活的,你可能想在该主题在这里进一步阅读:Buffers

+0

谢谢,大多数选项已经不堪重负,需要在某处开始。我很幸运,因为除波特率以外的所有内容的默认值都是电路板使用的值。 – 2008-11-06 18:13:18

15

感谢来自这里和其他地方的帮助,我得到了它的工作。写了一个小程序,可能会帮助一些人找出升压串口的东西。

boostserialportdemo.cpp

+1

您演示的linux版本应该使用/ dev/ttyS2。 Linux设备使用基于0的编号 – 2009-10-14 14:50:32

0

如果你想知道为什么他的例子给出了一个编译错误,改变CSIZE到C_SIZE在两条线上。这可能是网络上唯一的示例程序。
Thanks