第1章 轻松体验串口通信编程与调试 1
1.1 初识串口 2
1.1.1 从外观上了解串口 2
1.1.2 串口通信的发展前景 3
1.2 自己制作简单的串口线 4
1.2.1 三线制串口接线的规定 4
1.2.2 焊接制作自己的串口连接线 5
1.3 调试串口通信程序时的几种技巧 7
1.3.1 查看计算机串口资源 7
1.3.2 常规调试-2个物理串口之间的通信 8
1.3.3 特殊调试-单个物理串口之间的通信 9
1.3.4 虚拟串口-为计算机添加取之不尽的串口资源 10
1.4 使用串口调试助手来体验串口通信 11
1.5 体验Windows环境下Visual C++串口通信编程 14
1.6 体验DOS环境下Turbo C串口通信编程 22
第2章 多线程串口编程工具CSerialPort类 27
2.1 CSerialPort类的功能及成员函数介绍 27
2.2 应用CSerialPort类编制基于对话框的应用程序 45
2.3 应用CSerialPort类编制基于单文档的应用程序 50
2.4 对CSerialPort类的改进 56
2.4.1 改进一:ASCⅡ文本和二进制数据发送方式兼容 56
2.4.2 改进二:也许能解决内存泄漏 59
2.4.3 改进三:彻底关闭串口,释放串口资源 60
2.5 在Visual C++.NET中应用CSerialPort类 61
第3章 控件MSComm串口编程 63
3.1 MSComm控件详细介绍 63
3.1.1 VC 6.0中应用MSComm控件编程步骤 63
3.1.2 MSComm控件串行通信处理方式 64
3.1.3 MSComm控件的属性说明 65
3.1.4 MSComm控件错误信息 73
3.2 使用MSComm控件的几个疑难问题 73
3.2.1 使用VARIANT和SAFEARRAY数据类型从串口读写数据 73
3.2.2 MSComm控件能离开对话框独立存在吗 77
3.2.3 如何发送接收ASCII值为0和大于128的字符 78
3.2.4 在同一程序中用MSComm控件控制多个串口的具体操作方法 79
3.2.5 解决使用控件编程时程序占用的内存会不断增大的问题 80
3.2.6 在MSComm控件串口编程时遇到的其他问题 81
3.3 在基于单文档(SDI)程序中应用MSComm控件 81
3.4 应用MSComm控件控制多个串口实例 87
3.5 串口与MODEM拨号应用简例 95
3.5.1 创建工程 95
3.5.2 代码分析 97
3.5.3 应用 105
第4章 Windows API串口编程 107
4.1 Windows API串口编程概述 107
4.2 API串口编程中用到的结构及相关概念说明 108
4.2.1 DCB(Device Control Block)结构 109
4.2.2 超时设置COMMTIMEOUTS结构 112
4.2.3 OVERLAPPED异步I/O重叠结构 114
4.2.4 通信错误与通信设备状态 115
4.2.5 串行通信事件 117
4.3 Windows API串行通信函数 117
4.4 Win32 API串口通信编程的一般流程和特殊实例 138
4.4.1 Win32 API串口通信编程的一般流程 139
4.4.2 用查询方式读串口 139
4.4.3 同步I/O读写数据 140
4.4.4 关于流控制的设置问题 141
4.5 CSerialPort类中的API函数编程应用剖析 141
4.6 Win32 API串口编程TTY(虚拟终端)实例 153
4.6.1 建立程序工程 153
4.6.2 建立串口设置对话框 154
4.6.3 编写CTermDoc类的相关代码 157
4.6.4 小结 168
4.6.5 在CTermView类中键入处理代码与串口接收处理代码 170
4.7 Windows API串口精简例程 174
第5章 串口调试助手V2.2详细编程 176
5.1 建立SCOMM程序工程实现界面功能 176
5.2 串口的初始化及关闭 179
5.3 串口数据的发送与接收及十六进制数据的处理 181
5.3.1 十六进数据发送处理 181
5.3.2 手动发送处理 182
5.3.3 自动发送处理 183
5.3.4 接收处理及十六进制显示 184
5.4 其他辅助功能的实现 186
5.4.1 接收数据的文件保存 186
5.4.2 实现小文件发送 189
5.4.3 图钉按钮功能使程序能浮在最上层 192
5.4.4 对话框动画图标的实现 194
5.4.5 超链接功能的实现 195
5.4.6 如何打开帮助网页文件 196
第6章 DOS环境下的Turbo C串口编程及通用实例GSerial类 200
6.1 PC机异步通信适配器8250及其编程操作 201
6.1.1 INS8250内部寄存器及其选择方式 201
6.1.2 波特率设置 201
6.1.3 数据位、奇偶校验、停止位等数据格式设置 202
6.1.4 查询I/O方式相关设置 203
6.1.5 中断I/O通信方式相关设置 204
6.1.6 MODEM寄存器 205
6.2 COMRXTX程序实例 206
6.3 通用实例程序GSerial类 208
6.4 用GSerial类控制多串口 221
6.5 多串口编程PC机高号中断8259A可编程中断控制器的控制 232
第7章 数据处理方法与串口通信用户层协议的编制 235
7.1 通信协议的编制 235
7.1.1 为什么要编制用户通信协议 235
7.1.2 串口通信中用户层协议编制原则 237
7.1.3 在串口通信中几种常用的用户层协议说明 238
7.2 数制、数据的表示及逻辑运算 241
7.2.1 串口通信编程常用的数制 241
7.2.2 ASCII文本及其表示方法 242
7.2.3 逻辑运算与位运算 244
7.3 数据包校验与常用校验算法 245
7.3.1 数据校验过程 245
7.3.2 奇偶校验 246
7.3.3 异或校验 246
7.3.4 CRC循环冗余码校验 247
7.4 串口通信数据包处理方法编程实例 251
第8章 单片机串口通信 268
8.1 单片机串口硬件系统及C51程序开发 268
8.1.1 较典型的单片机硬件系统实例 268
8.1.2 C51语言及程序简介 269
8.1.3 开发C51程序的利器Keil C51 uVision2及串口程序仿真 271
8.2 C51单片机串口通信程序实例 275
8.2.1 实例一: 275
8.2.2 实例二: 276
8.3 AVR单片机串口通信 278
8.3.1 AVR单片机简介 278
8.3.2 AVR单片机串口通信 280
8.4 Freescal(Motorola)单片机开发及串口通信实例 283
8.4.1 Freescal(Motorola)单片机软件集成开发环境和程序下载 283
8.4.2 Freescal(Motorola)8位单片机程序烧写专用软件:PROG08SZ-FLASH PROGRAMMER 291
8.4.3 Freescal(Motorola)单片机串口通信程序实例 294
第9章 串口与网络结合的解决方案及编程 300
9.1 串口与网络结合的硬件解决方案 300
9.2 典型串口与网络联接的设备介绍 301
9.2.1 NPort5400系列产品特点说明 301
9.2.2 NPort5400系列产品的典型应用介绍 303
9.2.3 NPort5400系列产品的设置与编程测试 304
9.3 与ACCESS数据库结合的串口通信实例 305
9.3.1 电子罗盘数据处理 306
9.3.2 创建ODBC数据源 307
9.3.3 创建工程 307
9.3.4 编写程序 310
9.4 与TCP/IP网络结合的串口通信实例 319
9.4.1 客户端Client应用程序 319
9.4.2 服务器Server应用程序 324
9.5 在已经编好的串口通信程序中加入网络通信功能 333
9.5.1 参照MFC AppWizard创建WinSockets程序 334
9.5.2 利用Windows Sockets API和第三方提供的类进行编程 335
9.6 串口通信用于遥控操作简例 335
9.7 TCP/IP的QQ式局域网通信程序实例 339
9.7.1 客户端Client应用程序 340
9.7.2 服务器Server应用程序 346
第10章 计算机串口与其他通信协议设备的联接 352
10.1 串口与其他通信协议模块的调试与设备 352
10.1.1 Windows超级终端 352
10.1.2 串口通信中的无线数据传输 356
10.2 计算机与Rabbit 2000嵌入式系统通信编程实例 362
10.2.1 Rabbit2000微处理器介绍 362
10.2.2 动态C(Dynamic C)语言介绍 363
10.2.3 某车载无线调度系统实例介绍 364
10.3 计算机与PLC通信程序实例 370
10.4 MATLAB环境串口编程通信实例 372
10.4.1 MATLAB串口类Serial应用 372
10.4.2 通过串口使MATLAB simulink与下位机通信进行控制 376
10.4.3 xPC目标环境下串口通信实现 376
第11章 串口通信基本概念及标准 379
11.1 串口通信基本概念 379
11.1.1 串行通信概述 379
11.1.2 单工、半双工和全双工的定义 382
11.1.3 同步传送与异步传送 383
11.1.4 串行通信协议 383
11.2 RS-232-C串口标准 387
11.2.1 RS-232-C标准 387
11.2.2 RS-232-C串行通信接线实例 389
11.3 RS-422/485串口标准 391
11.3.1 RS-422/485串口通信特点 391
11.3.2 RS-422与RS-485串行接口标准 392
11.3.3 RS-422与RS-485的网络安装注意要点 394
11.3.4 RS-232、RS422、RS485电气参数对比 395
11.3.5 PC机与单片机RS422/RS485程序编写注意事项 395
11.4 串口调试注意事项 396
11.5 常用数据校验法 396
11.6 串口连接和TCP/IP连接对比 396
11.7 现场总线与RS-232、RS-485的本质区别 396
11.8 MODEM通信技术 397
11.8.1 MODEM的基本工作原理 397
11.8.2 MODEM的功能 398
11.8.3 MODEM的分类 398
11.8.4 MODEM的安装 401
11.8.5 Modem V.92标准介绍 402
11.8.6 MODEM的速度 403
11.8.7 MODEM优化方法 404
11.8.8 MODEM命令/AT命令 406
第12章 不占用串口的串口数据捕捉 415
12.1 驱动程序的基本概念:VxD与WDM 415
12.1.1 虚拟设备驱动程序VxD 415
12.1.2 Win32驱动程序模型WDM 418
12.1.3 在不同操作系统下选用哪种驱动程序模式 418
12.2 VxD示例程序介绍—VToolsD中的CommHook 419
12.3 串口数据捕捉实例程序 419
12.3.1 编程任务: 419
12.3.2 编程步骤 419
12.4 虚拟串口简介 434
第13章 串口通信综合应用实例 435
13.1 七自由度机械臂远程控制系统 435
13.1.1 基于串口通信的单片机系统设计 436
13.1.2 基于串口与TCP/IP网络的远程控制 451
13.1.3 基于视频网络服务器的远程控制 455
13.2 基于串口通信的LMS-200激光雷达数据处理 457
13.2.1 LMS-200激光雷达工作原理 457
13.2.2 激光雷达数据处理软件的开发 459
13.2.3 软件开发详细步骤 461
13.2.4 实验测试 482
13.3 串口通信在PC/104系统中的应用 485
13.3.1 PC/104简介 485
13.3.2 基于PC/104的机器人控制系统 486
13.3.3 串口扩展卡及基于串行通信的传感器 492
13.3.4 下位机程序 501
13.4 串口在先锋机器人P3-AT中的应用 510
13.4.1 P3-AT简介 510
13.4.2 串口通信协议 513
13.4.3 发送控制代码的简单示例程序 516
13.4.4 ARIA中串口类的使用 524
附录A TurboC 23说明 544
附录B ASCII码表 555