现代的计算机技术进步很快,各种的通讯也日新月异,像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;
}

boost库在工作(40)串行通讯的更多相关文章

  1. 串行通讯之.NET SerialPort

    第1章串行通讯之.NET SerialPort    2 1 枚举串口    2 2 打开/关闭串口    2 3 写数据    3 3.1 写二进制数据    3 3.2 写文本数据    4 4 ...

  2. 串行通讯之Qt

    目录 第1章 Qt 串行通讯    1 1.1 配置.pro文件    1 1.2 查询串口信息    1 1.3 配置.打开串口    3 1.4 setRequestToSend在Windows上 ...

  3. COM口,串行通讯端口,RS-232接口 基础知识

    COM口即串行通讯端口. COM口的接口标准规范和总线标准规范是RS-232,有时候也叫做RS-232口.电脑上的com口多为9针,最大速率115200bps.通常用于连接鼠标(串口)及通讯设备(如连 ...

  4. 基于51的串行通讯原理及协议详解(uart)

    串行与并行通讯方式并行:控制简单,传输速度快.线多,长距离成本较高且同时接受困难.串行:将数据字节分成一位一位的行驶在一条传输线上进行传输.如图:   同步与异步串行通讯方式同步串行通讯方式:同步通讯 ...

  5. 【Arduino】使用C#实现Arduino与电脑进行串行通讯

    在给Arduino编程的时候,因为没有调试工具,经常要通过使用串口通讯的方式调用Serial.print和Serial.println输出Arduino运行过程中的相关信息,然后在电脑上用Arduin ...

  6. 串行通讯之UARTLoopback

    目录 第1章串行通讯之UARTLoopback    2 1 USB转串口    2 2 USB Accessory    2 3 连入手机    3 4 代码改进    4 5 打开串口    4 ...

  7. STM32L476应用开发之三:串行通讯实验

    在我们的项目需求中,有两个串口应用需求,一个是与炭氢传感器的通讯,另一个是与显示屏的通讯.鉴于此,我们需要实验串行通讯. 1.硬件设计 串行通讯一个采用RS232接口,另一个直接采用TTL方式.我们在 ...

  8. STM32学习笔记——SPI串行通讯(向原子哥学习)

    一.SPI  简介 SPI是 Serial Peripheral interface 的缩写,就是串行外围设备接口.SPI 接口主要应用在  EEPROM, FLASH,实时时钟,AD 转换器,还有数 ...

  9. boost库在工作(37)网络UDP服务端之七

    前面介绍的都是网络TCP的服务器和客户端,其实还有UDP的服务器和客户端,同时也有同步和异步之分.UDP与TCP最大的区别,就是TCP是基于连接的,而UDP是无连接的.这里所谓的连接是指对方中断服务时 ...

随机推荐

  1. oracle group by 使用

    SELECT supplier_id, max(evidence_date) AS evidence_date,max(TD_SUPPLIER_EVIDENCE_INFO_ID) AS TD_SUPP ...

  2. MySQL必知必会笔记<2>

    [英]ben Forta著 5 1.0  *使用扩展查询* |---->select note from table   where Match(note) Against('anl'); |- ...

  3. Oracle EBS-SQL (WIP-11):检查期间任务完工记录数.sql

    select        WE.WIP_ENTITY_NAME                 任务名称,        WDJ.class_code                         ...

  4. Linux下 fcntl 函数用法说明

    功能描述:根据文件描述词来操作文件的特性. 文件控制函数         fcntl -- file control LIBRARY         Standard C Library (libc, ...

  5. Android UI ActionBar功能-ActionBarProvider的使用

    分享功能是很多App都有一个功能,ActionBarProvider可以实现分享功能: 3.0以前的版 本和3.0以后的版 本的区别: public class MainActivity extend ...

  6. HDU 4729 An Easy Problem for Elfness (主席树,树上第K大)

    转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove 题意:给出一个带边权的图.对于每一个询问(S , ...

  7. Ubuntu安装二:在VM中安装Ubuntu

    在VM中安装Ubuntu,先的安装VM,VM的安装请见:http://blog.csdn.net/u011043843/article/details/35291799 1.打开VM,新建虚拟机 2. ...

  8. C# IL 指令集

    跳转指令集合 Public field Static     Beq     如果两个值相等,则将控制转移到目标指令.Public field Static     Beq_S     如果两个值相等 ...

  9. 使用CSS来显示XML

    实现效果学号 姓名 班级 课程 教师 表格背景设为绿色,单元格居中显示 学号部分,蓝色字体,16磅大小: 姓名部分红色字体,带有下划线,12磅大小 班级课程名,教师,绿色字体,12磅大小 XML代码: ...

  10. 20151203--filter

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/htm ...