C++ 之 Asio 庫

來源:互聯網
上載者:User

標籤:傳輸速率   發送資料   通訊   cti   簡介   檔案   檔案中   --   工具   

1  簡介 

  Asio 是一個跨平台的 C++ 庫,常用於網路編程、底層的 I/O 編程等 (low-level I/O),其結構架構如下:

   

 

2  使用 Asio

2.1  下載 

   Asio 可分為 Boost 版和 non-Boost 版,後者的為: http://think-async.com/ 

  下載完成後,直接解壓到合適位置即可。

2.2  配置

1) 使用 Qt 5.9.1,其 .pro 工程檔案中,添加如下配置:注意 ASIO_STANDALONE 在 non-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  虛擬串口

  如果使用筆記本的話,一般沒有串口,這時有兩種方案:

  一是,使用 USB 轉串口資料線,並安裝相應的驅動,便可以和帶串口的裝置進行通訊了;

  二是,使用虛擬串口軟體,建立虛擬串口,例如,Configure Virtual Serial Port Driver

  

  再配合 串口調試工具,便可靈活的進行串口程式的調試

 

C++ 之 Asio 庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.