boost库在工作(40)串行通讯
工作 通讯 40 Boost 串行
2023-09-14 09:10:43 时间
现代的计算机技术进步很快,各种的通讯也日新月异,像USB、网络、蓝牙、WIFI等通讯技术飞速地出现,改变了整个计算机的通讯能力,速度已经达到GBit级别。但是有一种最原始的通讯方式,还是保留了30年,它就是串行接口通讯。前一些年,有很多计算机已经准备把这个接口去掉,全部换USB了,近年来又看到串口恢复过来,重新成为基本计算机配置。那为什么呢?其实串口具体一个大特点,就是简单,它简单到不需要什么驱动代码,不用担心中间有什么复杂处理出错。在计算机与外设通讯速度不高的情况下,它还是很合适的接口,比如在工业里一些简单监控,一些命令发送;在嵌入式软件开发里,调试软件信息显示和自动化测试。这时需要开发一些开发工具或者自动化测试工具辅助要完成这个任务,那么怎么样才能用C++最快捷,又简单地完成任务呢?下面就来看看使用boost库里提供的类,很容易就完成了这个任务,其实只需要开发10多分钟就可以了,例子的代码如下:
// boost_029.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <boost/asio.hpp>
#include <boost/asio/serial_port.hpp>
#include <iostream>
#include <fstream>
//
//串口接收,并把收到数据写到文件里。
//软件开发人员: 蔡军生 2013-09-01
//QQ: 9073204
//
void ComOutputToFile(void)
{
//设置本化的UNICODE输出
std::wcout.imbue(std::locale("chs"));
std::wcout << L"开始写串口数据到文件..." << std::endl;
//创建保存串口输出的文件.
std::ofstream outfile("Com2File.dat", std::ios::binary | std::ios::out);
if (!outfile.good())
{
std::wcout << L"出错了" << std::endl;
return;
}
outfile.flush();
//创建IO服务
boost::asio::io_service ioService;
//创建串口对象。
boost::asio::serial_port port(ioService);
//打开串口1
port.open("COM1");
//设置通讯波特率
port.set_option(boost::asio::serial_port_base::baud_rate(115200));
//循环地接收串口的数据。
char chRecv = 0;
const int nOneByte = 1;
do
{
//每次收到一个字符就输出到文件。
boost::asio::read(port, boost::asio::buffer(&chRecv,nOneByte));
std::cout << chRecv;
outfile<<chRecv;
//立即输出到文件。
outfile.flush();
}
while(true);
port.close();
}
int _tmain(int argc, _TCHAR* argv[])
{
ComOutputToFile();
return 0;
}
相关文章
- 学习Java有什么用 可以从事哪些工作
- ExcelVBA汇总文件夹中的所有文件指定工作表到一个文件中并进行求和
- 最全Vue3中组件的通讯方式都整理好了,面试不怕,工作不怕,建议收藏
- 10年程序员了竟然不懂大型网站架构技术细节:云计算服务工作原理
- 1024 真实故事 | 程序员口述:专科毕业差点找不到工作回老家,熬更多的夜,出版两本专著
- 构建Linux在线环境:让你的工作更简单(在线linux环境)
- 研究人员利用AI帮助改善NASA SDO数据校准工作
- Linux运维:践行日常职责(linux运维日常工作)
- Linux 文字处理大揭秘, 省时省力实现高效工作 (linux文字处理)
- 深入解析Oracle数据库原理,全面了解其工作方式(oracle数据库的原理)
- SQL Server 扫描:深入探究其工作原理(sqlserver 扫描)
- 员工在Linux环境下的工作体验(stafflinux)
- 深入解析MySQL中Socket,带你探索其神秘的工作原理(mysql中socket)
- Oracle出差优惠待遇,提升工作效能(oracle 出差待遇)
- Tim Cook承诺苹果公司在海地地震后将提供协助援助工作