深入浅出VC++串口编程--基本概念

串口调试助手,VC++开发(VS2015) 1、开发的初衷 通常我们都是:在网上直接下载一个串口助手,可执行文件,直接使用,并无法得到其源码,因此我基于VC++(VS2015)开发了一个串口助手: (1)串口开发的要点; (2)源代详细注释,极速开发出上位机,并与下位机(单片机)等通讯; (3)使用自己的串口助手,高大上 支持的功能: (1)支持串口设置:串口号,波特率,校验位,数据位,停止位 (2)支持字符格式发送和接收 ... 阅读详情

引言

  在PC机的主板上,有一种类型的接口可能为我们所忽视,那就是RS-232C串行接口,在微软的Windows系统中称其为COM。我们可以通过设备管理器来查看COM的硬件参数设置,如图1。


图1 在Windows上查看PC串口设置


  迄今为止,几乎每一台PC都包含COM。本质而言,COM是PC为和外界通信所提供的一种串行数据传输的接口。作为一种物理通信的途径和设备,它和目前风靡的另一种串行接口――USB所提供的功能是一致的。不过RS-232C显然已经开始被后起之秀USB赶超,因为USB的传输速率已经远远超过了RS-232C。

  尽管如此,RS-232C仍然具有非常广泛的应用,在相对长的一段时间里,难以被USB等接口取代。RS-232C接口(又称EIA RS-232C),1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定,全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准"。

  本文将对这一接口进行硬件原理的介绍,随后我们将逐章学习DOS平台的串口编程,及Windows平台下基于API、控件和第三方类的串口编程,最后本文将给出一个综合实例。

  在本文的连载过程中,您可以通过如下方式联系作者(热忱欢迎读者朋友对本文的内容提出质疑或给出修改意见):
作者email:21cnbao@21cn.com(可以来信提问,笔者将力求予以回信解答,并摘取其中的典型问题,在本系列文章最后一次连载的《读者反馈》中予以阐述);

  硬件原理

  众所周知,CPU与存储芯片和I/O芯片的通信是并行的(并行传输的最大位数依赖于CPU的字长、数据总线的宽度),一种叫做UART(通用异步收发器,Universal Asynchronous Receiver/Transmitter)的芯片提供了并行数据传输和RS-232C串行数据传输方式的转换。这样的设备通常有如图2所示的管脚分布,当其向外传输数据时,CPU并行的将数据写入这类芯片的寄存器,UART再将寄存器中的数据一位一位地移动并向外传输;当外界向其传输数据时,UART一位一位地接收数据,并将其移位组合为并行数据,CPU再并行地读取这些数据。实际上,由于UART芯片一般以TTL/CMOS电平工作,在UART连接接口之前,还要经过一个TTL/CMOS和RS-232C电平的转换。RS-232C规定了其标准的电气特性,逻辑1对应的电压必须在-5~-15V之间;逻辑0对应的的电压必须在+5~+15V之间。


图2 UART并/串转换


  一个常见的TTL/CMOS和RS-232C电平转换芯片如图3。


图3 常见的TTL/CMOS和RS-232C电平转换芯片


  RS-232C通常以两类接插件与外界相连,分别称为DB9和DB25,如图4所示。


图4 DB9和DB25


  而接插件中各个针的定义则如表1:

  表1 DB9和DB25引脚定义

DB9
DB25
针号 功能说明 缩写 针号 功能说明 缩写
1 数据载波检测DCD 8 数据载波检测 DCD
2 接收数据 RXD 3 接收数据RXD
3 发送数据TXD2 发送数据 TXD
4 数据终端准备 DTR 20 数据终端准备 DTR
5 信号地 GND 7 信号地 GND
6 数据设备准备好DSR6 数据准备好DSR
7 请求发送RTS 4 请求发送 RTS
8 清除发送 CTS 5 清除发送CTS
9 振铃指示DELL22 振铃指示DELL


  RS-232C定义为数据通信设备(DCE)和数据终端设备(DTE)之间的互连,实现上,到现在为止,究竟一个设备属于DCE还是属于DTE已经没有明显的界限,PC即可作为DCE,又可作为DTE。两串口互连,连接方法主要有二:

  一种方法是,数据的发送和接收由软件控制,不进行硬件握手,其连接方法如图5(最常用DB9连接示意)和表2(DB9、DB25三线连接表),真正需要互相连接的是RXD、TXD和GND;


图5 无硬件握手时两串口连接


  表2 DB9、DB25三线连接

9针-9针
5针-25针
2 9针-25针
2 3 3 2 2 2
3 2 2 3 3 3
5 5 7 7 5 7


  软件握手又称为XON/XOFF,通常以CTRL-S(0x13)和CTRL-Q(0x11)两个字符来实现流控制。前者用于请求对方暂停发送,后者用于清除暂停传送的请求,继续发送数据。

  另一种方法是,数据的发送和接收由硬件控制,进行硬件握手,其连接方法如图6(最常用DB9连接示意),需要连接的信号除RXD、TXD和GND外,还包括DTR、DSR、RTS和CTS。

  硬件握手依赖于RTS和CTS信号,当发送设备欲发送数据时,将RTS信号置为有效表示请求发送,接收设备准备好后,置CTS信号有效,接着发送设备通过信号线TXD开始发送串行数据。

  这里我们联想开来,RTS/CTS模式在许多领域里都出现过。回忆一下IEEE 802.11无线局域网协议标准,在其MAC协议中就使用了RTS/CTS,RTS/CTS抽象开来就是一种请求/应答。笔者曾经在拙作中多次以实例论证计算机领域里许多知识的相通性,这又是一个明证。


图6 有硬件握手时两串口连接


  实际上,目前我们经常使用的是方法一,即只连接RXD、TXD和GND,简单灵活。另外,串口之间互连还有诸多途径,如图7所示。






图7 其它互连方式

 

调试工具

  在MS-DOS下使用的编程环境是TC 2.0;

  在Windows 2000下的编程环境是VC++ 6.0;

  借助工具:串口调试助手2.1(图8)。


图8 串口调试助手

  串口调试助手是由《Visual C++/Turbo C串口通信编程实践》一书作者龚建伟编写的共享软件,可以方便地进行串口上的数据收发、显示(16进制和ASCII码方式)和串口参数的设置,在串口调试领域应用广泛。

  "串口调试助手"的开发原理很简单(相信读者看完本文后在相当短的时间之内就能开发出这样的软件),但是作者龚建伟敏锐地抓住了串口调试在业界的需求,使得自身随这一软件而成名。这一事件或多或少会给程序员们一定的启发。优秀的共享软件不一定要技术含量高,只要有需求,哪怕是开发原理再简单,都能拥有广泛的使用者。

  为了在一台PC上同时搭建DOS和Windows平台,我们应该在Windows平台上安装虚拟PC的软件VmWare(图9,VMware Inc.版权所有,http://www.vmware.com)。VMware的确是天才的作品!在同一PC上,利用VmWare几乎可以安装所有的操作系统,而且操作系统之间的切换不需要重新启动电脑,与传统的LILO等多系统引导方式有本质的不同。VM的意义是Virtual Machine,即虚拟出一个逻辑的电脑。


图9 VmWare虚拟PC

  在虚拟PC的MS-DOS操作系统上,我们安装TC 2.0开发环境。

  如果您的PC上没有软驱,为了制作MS-DOS启动软盘,请安装RamDiskNT模拟一个软盘,并在其上安装MS-DOS启动程序。RamDiskNT是一个磁盘模拟软件,其界面如图10所示。


VC++6.0 MFC串口编程(上位机)程序代码实例. VC++6.0 MFC串口编程(上位机)程序代码实例.一个可以实现与单片机收发信息的上位机 立即下载

相关推荐

vc 串口编程示例

vc 使用MSCOMM32控件的串口通信编程实例 简单易懂

深入浅出VC++串口编程之基本概念

<br />引言<br /><br />  在PC机的主板上,有一种类型的接口可能为我们所忽视,那就是RS-232C串行接口,在微软的Windows系统中称其为COM。我们可以通过设备管理器来查看COM的硬件参数设置,如图1。<br /><br />图1 在Windows上查看PC串口设置<br /><br />  迄今为止,几乎每一台PC都包含COM。本质而言,COM是PC为和外界通信所提供的一种串行数据传输的接口。作为一种物理通信的途径和设备,它和目前风靡的另一种串行接口――USB所提供的功能是一致的。

subkiller的专栏 1049

opencv实践项目-图片拼接之缝合线算法

opencv 图片缝合线算法

wyw0000的博客 2624

VC环境下,串口编程方法

第一篇 Win32串口操作的技巧 转载自:http://www.cppblog.com/Lee7/archive/2008/01/08/40691.html 1.开启一个 Serial Port:   利用一般开启档案的 CreatFile() 即可开启 serial port device用 CreateFile() API. HANDLECreateFile( ...

weixin_30770495的博客 214

IEEE GRSL投稿全流程避坑指南:从Latex模板到校样缴费,新手必看的7个关键节点

本文详细解析了IEEE GRSL投稿全流程中的7个关键节点,从LaTeX模板选择到校样缴费,帮助新手避免常见陷阱。特别针对图像格式转换、审稿意见回复、版权转移等环节提供实用技巧,确保投稿过程高效顺利。

weixin_28720573的博客 570

AMD Ryzen AI Max+ 395四机集群实战:开源工具链与大模型推理优化全解析

本文详细解析了基于AMD Ryzen AI Max+ 395处理器的四机集群搭建与优化实践,涵盖硬件配置、开源工具链评测及大模型推理优化技巧。通过深度测试,揭示了集群在AI推理中的性能瓶颈与解决方案,特别适合需要扩展显存的大模型实验场景。文章还提供了成本效益分析,帮助开发者做出更明智的选型决策。

weixin_29041767的博客 1520

深入浅出VC++串口编程之第三方类

深入浅出VC++串口编程之第三方类源代码下载  串口类  从本系列文章连载三、四可以看出,与通过WIN32 API进行串口访问相比,通过MScomm这个Activex控件进行串口访问要来的方便许多,它基本上可以向用户屏蔽多线程的细节,以事件(发出OnComm消息)方式实现串口的异步访问。  尽管如此,MScomm控件的使用仍有诸多不便,譬如其发送和接收数据都要进行VARIANT类型对象与字符串的转

forzy的专栏 1718

[仿真实战]FDTD Solutions 8.0:从零搭建薄膜光谱分析模型

本文提供了一份基于FDTD Solutions 8.0的薄膜光谱分析模型从零搭建实战指南。通过详细步骤,手把手教你创建玻璃基底与硅薄膜的几何结构、设置仿真区域与边界条件、配置光源与监视器,并最终计算反射率与透射率光谱。内容涵盖参数扫描与优化,旨在帮助用户快速掌握FDTD仿真在纳米光子学与薄膜光学设计中的核心应用。

defi6farmer的博客 499

深入浅出VC++串口编程之基于控件

深入浅出VC++串口编程之基于控件源代码下载<br />MSComm控件<br /><br />  Visual C++为我们提供了一种好用的ActiveX控件Microsoft Communications Control(即MSComm)来支持应用程序对串口的访问,在应用程序中插入MSComm控件后就可以较为方便地实现对通过计算机串口收发数据。<br /><br />  要使用ActiveX控件MSComm,程序员必须将其添加入工程,其方法是:<br /><br />  (1)单击主菜单project的

subkiller的专栏 1162

YOLO11实战 第001期-基于yolo11的CrowdHuman密集行人目标检测实战文档(yolo格式数据免费获取)

1.数据阶段在拥挤/遮挡场景下,使用crowdhuman数据集重训练后的yolo11,效果表现较好。crowdhuman数据集标签如下,有Head BBox、Visible BBox、Full BBox。如下图显示:数据集介绍CrowdHuman数据集是旷世发布的用于行人检测的数据集,图片数据大多来自于google搜索。CrowdHuman数据集数据量比较大,15000张,5000张,验证集4370张。训练集和验证集中共有470K个实例,约每张图片包含23个人,同时存在各种各样的遮挡。

深度学习算法工程师,专注于前沿算法研究与实战应用。在这里,我将分享深度学习领域的实战经验、优质数据集资源以及最新论文解读与精度分析,旨在与广大技术爱好者共同探索人工智能的奥秘,助力技术成长与创新。 2161

YOLO26科研优化:多损失函数(EIoU、SIoU等)融合,让边界框回归精度再上台阶

将原有损失函数替换为我们编写的MultiLoss。例如,在bbox_loss。

LXY_LOVE36的博客 172

深入浅出VC++串口编程之DOS的串口编程

在DOS平台下,操作串口主要有下列方式:通过BIOS调用、通过串口的硬件中断或通过对串口硬件进行轮询,本章将对以上三种方式进行具体的介绍并给出例子。  1.BIOS中断  在DOS操作系统下,IBM PC及其兼容机提供了一种灵活的串口I/O访问方法,即通过INT 14H调用ROM BIOS串行通讯例行程序。当设置AH为不同的值时,产生不同的功能:  AH 0 初始化端口  AH 1 向串口写字符 

1401

基于 MFC C++ 的心电监测客户端

4. **报警功能**:使用 `PlaySound` 播放报警音(需准备 `alert.wav` 文件),界面显示报警状态。

寒寒豆豆软件公司的博客 92

深入浅出VC++串口编程之基于Win32 API

  1、API描述  在WIN32 API中,串口使用文件方式进行访问,其操作的API基本上与文件操作的API一致。  打开串口  Win32 中用于打开串口的API 函数为CreateFile,其原型为: HANDLE CreateFile ( LPCTSTR lpFileName, //将要打开的串口逻辑名,如COM1 或COM2 

Tunix126的专栏 1293

对称式目镜设计实例

对称式目镜设计实例

weixin_72050316的博客 1163

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

深入浅出VC++串口编程--基于控件

<br />深入浅出VC++串口编程之基于控件源代码下载<br />MSComm控件<br /><br />  Visual C++为我们提供了一种好用的ActiveX控件Microsoft Communications Control(即MSComm)来支持应用程序对串口的访问,在应用程序中插入MSComm控件后就可以较为方便地实现对通过计算机串口收发数据。<br /><br />  要使用ActiveX控件MSComm,程序员必须将其添加入工程,其方法是:<br /><br />  (1)单击主菜单pr

GoodShot的专栏 1491

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

上一篇: 使用ObjectDataSource 显示数据
下一篇: 深入浅出Visual C++串口编程--深入浅出VC++串口编程之DOS的串口编程
GoodShot
博客等级 码龄22年 968粉丝 281原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值