집 >백엔드 개발 >C#.Net 튜토리얼 >C++용 Asio 라이브러리
1 소개
Asio는 크로스 플랫폼 C++ 라이브러리로 네트워크 프로그래밍, 저수준 I/O 프로그래밍 등에 일반적으로 사용됩니다. (저수준 I/O) 구조적 프레임워크는 다음과 같습니다.
2 Asio 사용하기
2.1 다운로드
Asio 라이브러리는 Boost 버전과 Non-Boost 버전으로 나누어져 있으니 공식 홈페이지에 가서 다운로드 받으세요.
2.2 구성1) Qt 5.9.1을 사용하여 .pro 프로젝트 파일에 다음 구성을 추가합니다.
ASIO_STANDALONE 은 부스트가 아닌 버전에 포함되어야 합니다
INCLUDEPATH += $$PWD/../../serialport/asio-1.10.8/includeDEFINES += ASIO_STANDALONE
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; }
프로그램은 먼저 직렬 포트 COM1을 보내고 "Hello Asio" 데이터를
보내기/쓰기한 다음 데이터를 수신/읽기로 이동합니다. 직렬 포트의 경우 데이터가 수신되지 않습니다. 데스크탑 뒷면에 있는 DB9 시리얼 포트 핀번호는 다음과 같습니다.
그 중 2 --> RxD는 데이터 수신용 핀이고, 3 --> TxD는 데이터 수신용 핀입니다. 데이터를 보내는 중입니다.
위 프로그램을 성공적으로 실행하려면 프로그램을 실행하기 전에
핀 2와 3을 단락시키면 데이터를 주고받을 수 있습니다.
4개의 가상 직렬 포트
노트북을 사용하는 경우 일반적으로 직렬 포트가 없습니다. 이 경우 해결 방법은 두 가지입니다.
먼저USB-직렬 포트
데이터 케이블을 사용하고 해당 드라이버를 설치하여 USB 장치와 통신합니다.둘째, 가상 직렬 포트
소프트웨어를 사용하여 가상 직렬 포트 드라이버 구성
을 사용하면 직렬 포트 디버깅 도구
를 사용하여 유연하게 디버깅할 수 있습니다. 직렬 포트 프로그램위 내용은 C++용 Asio 라이브러리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!