15

それで、RS232を使用してシリアルデバイスと通信するためのboost::asioのことを学ぼうとしています。ドキュメントはまばらで、例は存在しません。デバイスとの通信方法が正確にわかりません。デバイスはデータを送信できないため、書き込むだけで済みますが、他のプロジェクトでは実際のやり取りが必要になるため、助けていただければ幸いです。私がこれまでに持っているコードは次のとおりです。

#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 部分について助けが必要です。

4

3 に答える 3

17

ボーレートに加えて、character_size、flow_control、parity、stop_bits などの他のオプションも設定する必要がある場合があります。データをシリアル ポートに書き込むには、次の操作を実行できます。

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

バッファ型のライブラリの受け入れは非常に柔軟であり、そのトピックについてはこちらでさらに読みたいと思うかもしれません: Buffers

于 2008-11-06T15:36:31.407 に答える
16

ここや他の場所からの助けのおかげで、私はそれを機能させました。一部の人々がブーストシリアルポートのことを理解するのにも役立つかもしれない小さなプログラムを書きました。

boostserialportdemo.cpp

于 2008-11-08T02:44:33.387 に答える
0

If you are wondering why his example gives a compile error, change CSIZE to C_SIZE on both lines. This is probably the only good example program on the web.
Thanks.

于 2014-12-29T00:18:27.640 に答える