C++ 用 Asio ライブラリ

炎欲天舞
リリース: 2017-08-04 09:55:55
オリジナル
2975 人が閲覧しました

1 はじめに

Asio は、ネットワーク プログラミング、低レベル I/O プログラミングなど (低レベル I/O) に一般的に使用されるクロスプラットフォーム C++ ライブラリです。その構造フレームワークは次のとおりです。

2 Asioの使い方

2.1 ダウンロード

AsioライブラリはBoost版と非Boost版に分かれており、公式サイトからダウンロードしてください。

2.2 構成

1) Qt 5.9.1 を使用して、次の構成を .pro プロジェクト ファイルに追加します。

ASIO_STANDALONE は非 Boost バージョン

INCLUDEPATH += $$PWD/../../serialport/asio-1.10.8/includeDEFINES += ASIO_STANDALONE
ログイン後にコピー

2 に含める必要があることに注意してください。 ) VS 2015 を使用すると、

ASIO_STANDALONE 構成は次のようになります:

2.3 コード例

以下は簡単なシリアル通信の例であり、主な手順は次のとおりです:

シリアル ポートの作成

--> ; 設定パラメータ --> データの読み取りと書き込み

#include <functional>#include "asio.hpp"#include <QDebug>using namespace asio;// 存储接收到的数据char kBuf[16];// 声明回调函数void PrintBuf();int main()
{    // 串口 COM1    io_service iosev;
    serial_port port(iosev, "COM1");    // 参数设置:波特率、流控、奇偶校验、停止位、数据位
    port.set_option(serial_port::baud_rate(115200));
    port.set_option(serial_port::flow_control(serial_port::flow_control::none));
    port.set_option(serial_port::parity(serial_port::parity::none));
    port.set_option(serial_port::stop_bits(serial_port::stop_bits::one));
    port.set_option(serial_port::character_size(8));    // 向串口写数据
    write(port, buffer("Hello Asio", 16));    // 从串口读数据(异步)    port.async_read_some(buffer(kBuf),std::bind(PrintBuf));    // 开启事件循环    iosev.run();
}// 打印接收的数据void PrintBuf()
{
    qDebug() << kBuf;
}
ログイン後にコピー
3 DB9 シリアルポート

上記のプログラムを実行すると、次の問題が発生します。プログラムは最初にシリアル ポート COM1 に送信し、「Hello Asio」データを

送信/書き込み
し、次にデータの

受信/読み取り

を行います。シリアル ポートの場合、データは受信されません。 デスクトップ コンピューターの背面にある DB9 シリアル ポートのピン番号は次のとおりです。

このうち、2 --> RxD はデータ受信用のピンです。3 --> TxD はピンです。データ送信用。

上記のプログラムを正常に実行するには、プログラムを実行する前に

ピン 2 と 3 を短絡することで、データの送受信の両方が可能になります

4 仮想シリアル ポート。

ラップトップを使用している場合、通常はシリアル ポートがありません。この場合、解決策は 2 つあります:

まず、

USB - シリアル ポート

データ ケーブルを使用し、対応するドライバーをインストールして、デバイスと通信します。 ;

次に、仮想シリアル ポート

ソフトウェアを使用して、仮想シリアル ポート ドライバーを作成します

そして、

シリアル ポート デバッグ ツール

を使用すると、シリアルポートプログラム

以上がC++ 用 Asio ライブラリの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート