> 백엔드 개발 > C#.Net 튜토리얼 > C++용 Asio 라이브러리

C++용 Asio 라이브러리

炎欲天舞
풀어 주다: 2017-08-04 09:55:55
원래의
2974명이 탐색했습니다.

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
로그인 후 복사

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-직렬 포트

데이터 케이블을 사용하고 해당 드라이버를 설치하여 USB 장치와 통신합니다.

둘째, 가상 직렬 포트

소프트웨어를 사용하여 가상 직렬 포트 드라이버 구성

을 사용하면 직렬 포트 디버깅 도구

를 사용하여 유연하게 디버깅할 수 있습니다. 직렬 포트 프로그램

위 내용은 C++용 Asio 라이브러리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿