Heim > Artikel > Backend-Entwicklung > Asio-Bibliothek für C++
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 --> >
#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 SiePin 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 DatenkabelUSB-zu-Seriell-Anschluss
und installieren Sie den entsprechenden Treiber, dann können Sie mit Geräten mit seriellen Anschlüssen kommunizierenZweitens 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!