前言
计算机的体系接口是计算机体系中的重要组成部分,体系接口的发展也是计算机技术发展的一个重要标志。计算机体系接口复杂多样,在它的发展过程中,总有一些接口在慢慢消失,又有一些接口在不断出现。在当代,主流的体系接口有PCI/PCI-E接口、USB 1.0/2.0、百兆位以太网等,新兴接口还有蓝牙、USB 3.0、吉位以太网、光纤等。这些体系接口都能够提供通用计算机与包括嵌入式系统在内的非计算机电子设备之间进行通信的功能。
无论是主流的体系接口还是新兴的体系接口,其传输速度和传输可靠性都使得传统体系接口(并口、串口)不能望其项背。但与此同时,这些接口的复杂性也是传统体系接口所不能比拟的。这体现在两个方面:一个是下位设备,也就是与通用计算机通信的设备的复杂性。通常,为了支持诸如以太网或者USB的接口,要么需要专业的硬件或者嵌入式软件开发者投入大量的精力进行开发、验证和维护,要么花费资金购买相应的硬件授权(IP核)或者接口芯片,硬件(嵌入式软件)的复杂性必然带来各种硬件开销(硬件量、功耗等)的增加。另一个是通用计算机上软件的复杂性。对支持以太网或者USB通信的软件的开发,由于体系本身的复杂性,程序员需要拥有相当的知识储备和过硬的调试能力。
考察在科研和生产中所使用的电子电气设备和与通用计算机的交互状态,我们发现,有相当一部分设备并不需要主流或者新兴计算机体系接口所提供的大吞吐量,而是往往对通信的实时性有特别的要求。显然,对于这样的情况,使用主流或者新兴计算机体系接口就不合适。嵌入式设备,特别是嵌入式计算机系统,都希望能够通过一种简单、可靠、高实时性的接口与通用计算机通信,而且,在通用计算机上运行的软件也要易于开发和调试。作者认为,正是由于这个需求的存在,是通用计算机上的异步串行通信接口(UART)能够保留到现在的原因。
针对通用计算机上的异步串行通信接口开发的特点,结合目前较为新颖的开发思路,我们组织编写了本书。归结起来,本书具有如下特色:
● 理论和实践的结合。针对目前接口开发教程对通信理论、硬件技术介绍不足的缺点,本书着重介绍了一般的通信理论和软硬件相连接部分的技术细节。例如,当我们回答为什么要在软件层面也实现某种协议的时候,在理论和硬件实现的原理上就能够找到答案。同样,在软件中启动一个操作,在硬件层面上会发生什么变化,本书也有详细的说明。
● 软件技术的新颖。在本书中,我们抛弃了Windows下串口通信中经常使用,但又被不恰当使用的MSCOMM控件,而是从基本的Windows API函数讲起,然后介绍它的类封装。在图形界面开发的部分,我们不仅介绍主流的MFC技术,而且对目前非常流行的Qt库中如何使用串口通信进行了详细说明。
● 工程实例的新颖。在工程实例介绍的环节,我们介绍了DSP系统、串口到以太网通信等目前嵌入式领域发展迅猛的技术,供有相似工程需求的读者进行参考。
全书共分12章,分别介绍如下:
第1章——串行通信的基本概念。介绍与串口通信密切相关的理论和技术概念,首先从通信问题的数学模型切入,在此基础之上,解释EIA RS-232的基本原则、规范,以及高层次协议设计的必要性。
第2章——异步串行通信接口电路简介。介绍在通用计算机和嵌入式设备中兼容串口电路的实现,以及软硬件之间的体系分界。
第3章——在Windows NT中搭建开发环境。本章中介绍平台和开发工具,首先说明进行串口程序开发所需要的硬件和软件环境,然后结合第一个串口程序Hello World介绍Visual C++的使用。我们把重点放在开发流程上,因为有一个良好的流程是非常重要的。
第4章——使用Windows API串口编程。Windows以SDK串口通信函数的方式提供了应用程序对设备的操作接口。Windows API是串口通信开发的基本。本章将结合示例详细介绍与串口通信相关的Windows API的使用方法。
第5章——使用CSerial类。使用非面向对象的SDK编程不利于程序的维护和代码复用。本章将介绍一种基于C++的通信API封装——CSerial类。CSerial类适用于文本程序界面和图形程序界面,代码量少,使用方便。我们以CSerial类为基础,介绍它的使用方法和在图形界面程序设计中的应用。
第6章——使用Qt进行串口编程。当今,跨平台的快速应用开发已经成为主流。Qt是一款高性能、跨平台的C++应用程序开发框架,包含一个类库和一系列的工具。在官方的Qt库中没有提供串口编程的类,本章以开源项目QextSerialPort为例,介绍如何使用Qt开发串口应用程序。
第7章——Windows下双机点到点串行通信系统设计与开发。Windows下双机的串行通信系统是一个典型的通信系统,它是我们为了实现计算机底层的工作,以及为了用户更好地和系统能够直接相连而提出来的,它不但可以广泛地应用于各个领域中,还可以在比较艰苦或者不方便的情况下如没有网线的时候进行双机通信。
第8章——16位高速DSP增强型同步串口的设计。本章主要针对DSP芯片外设电路中的增强型同步串口及其他一些外设模块开展工作。外设电路对于提高整个芯片的性能起着非常重要的作用,它是内核和片外电路的接口,负责外部电路的数据交换,外设电路性能的好坏直接影响整个芯片的工作。
第9章——串口与以太网数据传输实现。串口和以太网口数据转换模块可以应用在串口设备需要远程传输文件的场合,如数控机床控制文件的远程传输等。本章首先介绍该类模块在国内外的现状;然后经过分析比较,选取了Rabbit公司的RCM2200模块来实现以太网口和串口的数据传输;接下来介绍RCM2200微控制器核心模块以及Dynamic C软件开发环境,在此基础上选择并实现了串口和以太网传输协议,即XMODEM和TFTP协议;最后介绍实现文件传输的整体方案,通过计算机的实验演示和数控机床的实际应用,都达到了比较好的效果。
第10章——基于串口的DNC信息采集系统的开发。数据采集是分布式数字控制(DNC)系统的一个重要功能。在自动化制造中,无论是信息检测、测试与监控、物流和设备管理,还是设备诊断与维修,均是以数据采集技术作为支撑的。可以说,先进合理的数据采集技术是实现DNC、MES、MRPII、ERP和制造自动化的重要基础。DNC信息采集系统作为DNC的子系统,是DNC获得底层信息的主要来源,在DNC系统中占有重要地位,是DNC的核心内容之一。
第11章——Windows XP下USB转RS-232桥接器驱动程序开发。本章利用Windows XP DDK、Visual C++6.0、DbgView、SoftICE等开发和调试工具开发出了以Windows XP为平台的桥接器驱动程序,创建了和真实串口功能基本相同的虚拟串口,为桥接器的使用提供了软件保证。首先对桥接器硬件设计进行了分析,对WDM(Windows Driver Mode)驱动模式进行了说明;然后设计了桥接器驱动模型,确立了开发方案,明确并设计了所需的各种机制,设计了重点例程的实现策略,用驱动程序中的典型用例来说明具体实现;最后对驱动测试、安装过程进行了说明,对整个设计和应用做了总结,并提出了进一步的完善思路。
第12章——串口通信在机器人实时控制中的应用开发。主要以MOTOMAN UP6机器人为载体,介绍Visual C++环境下机器人软件控制系统的开发过程。本项目主要是通过PC来实现机器人各种运动的控制。PC和下位机之间通过一条RS-232C串口线进行串口通信。本项目采用了多线程编程技术,并将各种不同的运动模块封装起来,使其具有可移植性,便于以后开发工作的进一步深入。本控制系统界面友好,在测试过程中实现了对UP6机器人的运动控制,并且能够对机器人的动作进行实时监控与图像记录,还能够对机器人进行单步控制,实现了对UP6功能的扩展。
全书讲解由浅入深、通俗易懂、注重实践,是一本不可多得的程序员手册。本书实例源代码和项目设计代码请到www.fecit.com.cn的“下载专区”中下载。
本书适合于对电子电路和计算机体系有初步了解,但对软件开发掌握不多的读者作为自学用书,也可作为自动化、电气、工控、机械等领域有相关需求的工程人员的参考书。
由于作者水平有限,书中疏漏和不当之处在所难免,欢迎读者指正。联系信箱:DevEmb@gmail.com,详情请垂询http://books.vcer.net/vcserial。
编著者
联系方式
咨询电话:(010)6813454588254160
电子邮件:support@fecit.com.cn
服务网址:http://www.fecit.com.cn http://www.fecit.net
通用网址:计算机图书、飞思、飞思教育、飞思科技、FECIT