Heim  >  Artikel  >  Backend-Entwicklung  >  Asio-Bibliothek für C++

Asio-Bibliothek für C++

炎欲天舞
炎欲天舞Original
2017-08-04 09:55:552855Durchsuche

1 Einführung

Asio ist eine plattformübergreifende C++-Bibliothek, die häufig für Netzwerkprogrammierung, Low-Level-I/O-Programmierung usw. (Low-Level-I/O) verwendet wird. . Sein struktureller Rahmen wie folgt:

2 Asio verwenden

2.1 Herunterladen

Die Asio-Bibliothek ist in eine Boost-Version und eine Nicht-Boost-Version unterteilt. Zum Herunterladen gehen Sie bitte auf die offizielle Website.

2.2 Konfiguration

1) Fügen Sie mit Qt 5.9.1 die folgende Konfiguration zu seiner .pro-Projektdatei hinzu: HinweisASIO_STANDALONE Die Nicht-Boost-Version muss


INCLUDEPATH += $$PWD/../../serialport/asio-1.10.8/includeDEFINES += ASIO_STANDALONE

2) Wenn Sie VS 2015 verwenden, dann ASIO_STANDALONE Die Konfiguration ist wie folgt:

2.3 Codebeispiel

Das Folgende ist ein einfaches Beispiel für eine serielle Kommunikation. Die Hauptschritte sind: Serielle Schnittstelle erstellen --> Konfigurationsparameter --> Daten lesen und schreiben --> >


3 DB9 serielle Schnittstelle
#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;
}

Wenn Sie das obige Programm ausführen, werden Sie ein Problem feststellen: Das Programm sendet/schreibt zuerst an den seriellen Port COM1, Geben Sie

die „Hello Asio“-Daten ein und gehen Sie dann zu

, um die -Daten zu empfangen/lesen. Bei einem seriellen Port werden die Daten nicht empfangen. Auf der Rückseite des Desktops sind die Pin-Nummern der seriellen DB9-Schnittstelle wie folgt:

Darunter ist 2 --> RxD der Pin zum Empfangen von Daten; 3 --> ist der Pin zum Senden von Daten.

Damit das obige Programm erfolgreich ausgeführt werden kann, können Sie

Pin 2 und Pin 3 kurzschließen

, bevor Sie das Programm ausführen. Auf diese Weise können Sie sowohl Daten senden als auch empfangen

4 Virtueller serieller Port

Wenn Sie einen Laptop verwenden, gibt es im Allgemeinen keinen seriellen Port. Es gibt zwei Möglichkeiten :

Verwenden Sie zunächst das Datenkabel

USB-zu-Seriell-Anschluss

und installieren Sie den entsprechenden Treiber, dann können Sie mit Geräten mit seriellen Anschlüssen kommunizieren

Zweitens verwenden Sie Virtual Serial Port

Software zum Erstellen eines virtuellen seriellen Ports, zum Beispiel „Configure Virtual Serial Port Driver“

 

Gekoppelt mit dem Serial Port Debugging Tool

, Sie können flexibel sein, indem Sie das Programm für die serielle Schnittstelle debuggen

Das obige ist der detaillierte Inhalt vonAsio-Bibliothek für C++. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:C++-Funktionen und ZeigerNächster Artikel:C++-Funktionen und Zeiger