第1篇Visual C﹢﹢开发基础篇 2
第1章Visual C﹢﹢集成开发环境 2
1.1 Visual C﹢﹢6.0概述 2
1.2安装Visual C﹢﹢6.0集成环境 2
1.3 Visual C﹢﹢6.0界面介绍 5
1.3.1工作区窗口和输出窗口 6
1.3.2菜单栏和工具栏 7
1.3.3编辑区 7
1.3.4联机帮助 7
1.3.5第一个程序 8
1.3.6 Visual C﹢﹢中的文件扩展名 8
1.4小结 9
第2章C﹢﹢语言基础 10
2.1.个简单的C﹢﹢程序 10
2.1.1创建一个空的工程 10
2.1.2添加C﹢﹢源文件 11
2.1.3添加代码 11
2.1.4编译并运行程序 12
2.2 C﹢﹢的基本数据类型及数据 13
2.2.1基本数据类型 13
2.2.2变量 13
2.2.3常量 14
2.3 C﹢﹢的运算符及表达式 15
2.3.1表达式 15
2.3.2运算符 15
2.3.3运算符的优先级 18
2.4 C﹢﹢的语句控制 19
2.4.1 C﹢﹢的输入/输出 19
2.4.2选择语句 20
2.4.3循环语句 24
2.4.4其他语句 27
2.5小结 28
第3章C﹢﹢的面向对象 29
3.1类与对象 29
3.1.1面向对象思想 29
3.1.2类的声明 30
3.1.3成员函数的定义 31
3.1.4类与对象的关系 31
3.1.5对象的声明和实例化 31
3.1.6构造函数和析构函数 33
3.2 C﹢﹢类的继承和派生 34
3.2.1派生类的声明 34
3.2.2派生类的继承方式 35
3.2.3单一继承和多重继承 37
3.3 C﹢﹢的多态性 38
3.3.1多态的分类 38
3.3.2运算符重载 38
3.3.3虚函数 40
3.3.4纯虚函数 41
3.4小结 42
第4章C﹢﹢输入/输出 43
4.1 C﹢﹢的基本流类体系 43
4.1.1输入/输出流的概念 43
4.1.2输入/输出标准流类 44
4.2输入/输出格式控制 45
4.3标准设备的输入/输出 47
4.4文件的输入/输出 49
4.4.1文件的概念 49
4.4.2标准库文件函数输入/输出 50
4.4.3文件输入/输出流 51
4.5重载插入和提取运算符 55
4.6小结 57
第5章 异常处理 58
5.1异常的概念 58
5.2异常处理机制 59
5.2.1 throw语法 59
5.2.2 try块语法 59
5.2.3 catch语法 59
5.2.4异常处理过程及实例 60
5.3异常处理中的构造与析构 63
5.4异常和继承 65
5.5标准C﹢﹢库中的异常类 68
5.6小结 69
第2篇 串口开发关键技术篇 72
第6章 串行通信原理与设计 72
6.1串行通信基本概念 72
6.1.1串行通信特点 72
6.1.2串行通信传输方式 73
6.1.3数据纠错与检错 73
6.1.4传输速率与距离 74
6.2串行传输协议 75
6.2.1异步传输协议 75
6.2.2面向字符的同步传输协议 76
6.2.3面向比特的同步传输协议 78
6.3串行接口标准 79
6.3.1 EIA RS-232C标准 79
6.3.2 RS-423A、RS-422A和RS-485标准 82
6.3.3 USB接口标准 84
6.4串口硬件设计 85
6.4.1串口应用设计流程 85
6.4.2 Windows下的串口资源 85
6.4.3 DCE与DTE设备的识别方法 86
6.4.4握手处理 86
6.4.5 RS-232C与RS-485接口转换 87
6.4.6接地及隔离技术 87
6.5小结 89
第7章 串口调试 90
7.1硬件调试 90
7.2软件调试 90
7.2.1软件调试方法 90
7.2.2调试的原则 91
7.2.3有效减少调试时间 91
7.3虚拟串口软件 93
7.4串口调试软件 93
7.4.1功能描述 94
7.4.2界面设计 94
7.4.3变量/函数声明 96
7.4.4初始化代码 97
7.4.5串口配置与操作 99
7.4.6接收数据 101
7.4.7发送数据 102
7.4.8超时定时器 105
7.4.9改进的建议 106
7.5使用串口调试软件 106
7.5.1使用方法 106
7.5.2单片机程序测试实例 107
7.6小结 108
第8章 使用MSComm控件编程 109
8.1 MSComm控件属性及事件 109
8.1.1 MSComm最常用的属性 109
8.1.2与输入操作有关的属性 111
8.1.3与输出操作有关的属性 112
8.1.4与传输控制有关的属性 113
8.1.5 MSComm控件的事件 114
8.2对不同类型数据的处理方法 115
8.2.1使用MSComm控件发送与接收字符串 115
8.2.2使用MSComm控件发送与接收二进制数据 116
8.3 MSComm错误处理方法 117
8.3.1关于发送缓冲区 117
8.3.2关于接收缓冲区 117
8.3.3接收数据的实际处理方法 118
8.4控件编程 118
8.4.1加载及使用控件 119
8.4.2初始化及打开串口 124
8.4.3串口事件处理 125
8.4.4关闭串口 126
8.4.5关于协议的问题 126
8.5通信编程实例 126
8.5.1程序功能 126
8.5.2界面设计 126
8.5.3变量声明 127
8.5.4创建串口 129
8.5.5设置串口 129
8.5.6打开串口 130
8.5.7关闭串口 131
8.5.8接收数据处理 131
8.5.9实际传输文件截图 132
8.6程序发布问题 132
8.7小结 132
第9章 使用WinAPI串口编程 133
9.1 API串口编程概述 133
9.2采用同步查询方式的编程方法 133
9.2.1创建串口 134
9.2.2关闭串口 139
9.2.3发送数据 139
9.2.4接收数据 139
9.2.5定时接收数据的方法 140
9.3采用重叠I/O方式的编程方法 141
9.3.1定义全局变量 141
9.3.2创建串口 141
9.3.3发出读写操作 142
9.3.4读写线程函数的建立 143
9.3.5关闭串口 146
9.4采用事件驱动方式的编程方法 147
9.4.1定义全局变量 147
9.4.2打开串口及开启事件线程 147
9.4.3发送数据 150
9.4.4自定义消息函数读取数据 151
9.4.5关闭串口及关闭事件线程 153
9.5编程实例 153
9.5.1程序功能 153
9.5.2界面设计 153
9.5.3变量声明 155
9.5.4设置串口 155
9.5.5打开串口 158
9.5.6关闭串口 158
9.5.7发送字符 159
9.5.8命令的有效性处理 159
9.5.9实际字符传送截图 160
9.6小结 161
第10章 多线程编程 162
10.1多线程基本概述 162
10.1.1线程与进程 162
10.1.2何时使用多线程 163
10.1.3多线程串口的应用 163
10.2线程的操作 163
10.2.1创建线程 163
10.2.2终止线程 165
10.2.3关于内存泄漏 166
10.3线程间通信 166
10.3.1使用全局变量 166
10.3.2使用自定义消息 166
10.4线程同步 167
10.4.1使用临界区(Critical Section) 167
10.4.2使用互斥对象(Mutex) 168
10.4.3使用信号量(Semaphore) 169
10.4.4使用事件(Event) 169
10.4.5各种方法的比较 170
10.5多线程串口程序设计 170
10.5.1多线程的应用框架 170
10.5.2相关的声明 171
10.5.3创建线程 171
10.5.4编写线程函数 172
10.5.5编写消息响应函数 173
10.5.6线程的结束 173
10.6小结 174
第11章 TAPI编程 175
11.1关于TAPI 175
11.1.1什么是TAPI 175
11.1.2 Windows中的TAPI系统架构 175
11.1.3 Windows中的TAPI电话服务类型 176
11.2 TAP12.X介绍 177
11.2.1基本概念 177
11.2.2 TAPI应用程序结构 177
11.2.3常用函数介绍 177
11.3 CTapi 14类介绍 182
11.3.1变量/函数声明 182
11.3.2初始化操作 184
11.3.3创建函数 184
11.3.4呼叫函数 184
11.3.5回调函数处理方式 186
11.3.6与回调相关的函数 186
11.3.7处理呼叫状态的函数 189
11.3.8处理连接状态的函数 191
11.3.9挂机函数 192
11.3.10通信状态显示函数 193
11.3.11延时函数 194
11.4使用CTapi 14类的编程实例 194
11.4.1程序功能 194
11.4.2界面设计 195
11.4.3 CTapi 14类的使用方法 195
11.4.4变量/函数声明 196
11.4.5电话操作函数 198
11.4.6消息处理函数 198
11.4.7显示信息函数 200
11.4.8实际使用截图 200
11.5小结 201
第3篇 串口开发典型应用篇 204
第12章 计算机与单片机通信 204
12.1单片机的串口原理 204
12.1.1串口结构 204
12.1.2串口寄存器及中断 205
12.2串行通信硬件设计 206
12.2.1常用接口芯片介绍 206
12.2.2接口电路 206
12.3串行口通信参数设置 207
12.3.1波特率的设置 207
12.3.2奇偶校验位的使用方法 208
12.3.3通信协议约定 208
12.4单片机的串口编程方法 209
12.4.1功能描述 209
12.4.2通信协议 209
12.4.3初始化串口及寄存器 209
12.4.4编写中断服务程序 209
12.5计算机界面设计 212
12.5.1功能描述 213
12.5.2界面设计 213
12.6计算机端程序设计 213
12.6.1头文件引用及变量声明 214
12.6.2初始化控件 215
12.6.3向单片机发出请求 216
12.6.4在控件事件中接收数据 217
12.6.5超时定时器的编程 224
12.6.6关闭串口 225
12.7小结 226
第13章 计算机与PLC通信 227
13.1PLC的串口通信 227
13.1.1 PLC的通信方式 227
13.1.2计算机与PLC通信流程 228
13.1.3与通信相关的寄存器 228
13.1.4与通信相关的指令 232
13.1.5通信中断事件 233
13.1.6通信中断指令 233
13.1.7硬件连线及设置 234
13.1.8 PC/PPI电缆切换时间的影响 235
13.2 PLC通信编程 235
13.2.1功能描述 236
13.2.2通信协议 236
13.2.3程序结构及变量说明 236
13.2.4主程序 237
13.2.5初始化 238
13.2.6发送与接收处理 238
13.3.计算机界面设计 241
13.3.1主界面设计 241
13.3.2设置对话框设计 242
13.4计算机程序设计 242
13.4.1功能描述 242
13.4.2变量/函数声明 243
13.4.3初始化代码 244
13.4.4参数配置 244
13.4.5读串口操作 248
13.4.6写串口操作 252
13.4.7接收数据处理 255
13.4.8命令有效性处理 260
13.4.9实际传输数据截图 262
13.5小结 262
第14章 两台计算机间通信 263
14.1通信方式介绍 263
14.2通信协议 264
14.2.1通信流程 264
14.2.2数据包格式 265
14.3通信实现思路 266
14.3.1功能描述 266
14.3.2通信事件的处理方法 266
14.3.3各种操作状态的含义 267
14.4界面设计 268
14.4.1主界面设计 268
14.4.2设置对话框设计 270
14.5程序设计 271
14.5.1变量/函数声明 271
14.5.2初始化代码 272
14.5.3参数配置 273
14.5.4发送文件 277
14.5.5事件消息响应函数 279
14.5.6命令的有效性处理 298
14.5.7自定义功能函数 300
14.5.8程序测试 305
14.6小结 305
第15章 软件传真机 306
15.1传真的基本知识 306
15.1.1工作原理 306
15.1.2传真机的分类 307
15.1.3传真机通信规程 308
15.2关于传真精灵SmartFax 309
15.2.1主要功能 309
15.2.2发送传真函数 309
15.2.3接收传真函数 312
15.2.4其他功能函数 314
15.2.5如何使用传真精灵 316
15.3软件传真机程序设计 316
15.3.1功能介绍 317
15.3.2界面设计 317
15.3.3关于头文件的引用 319
15.3.4变量/函数声明 320
15.3.5初始化操作 322
15.3.6程序流程分析 324
15.3.7关于TAPI操作的函数 326
15.3.8发送传真相关函数 334
15.3.9接收传真相关函数 337
15.3.10传真消息响应函数 339
15.3.11传真参数相关操作函数 347
15.3.12其他功能函数 352
15.4小结 354
第16章 计算机与射频卡通信 355
16.1射频卡简介 355
16.1.1射频卡工作原理 355
16.1.2射频卡的分类 356
16.1.3射频卡的优点 356
16.1.4射频卡的应用 357
16.2射频卡的应用框架 357
16.3 MIFARE卡介绍 358
16.3.1 TYPE A与TYPE B 358
16.3.2 TYPE A卡的初始化与防冲突 359
16.3.3 MIFARE l型卡的存储结构 362
16.3.4 MIFARE 1型卡存取控制与数据区的关系 364
16.4射频卡模块介绍 365
16.4.1 MCM200/MCM500概述 366
16.4.2 MCM200/MCM500接口简介 366
16.4.3 MCM200/MCM500读写操作过程 367
16.4.4 ZLG500A读写模块介绍 368
16.5射频卡应用的设计 368
16.5.1读写器成品的设计方法 368
16.5.2使用射频卡模块的设计方法 369
16.6小结 369
第17章 组态王的应用 370
17.1组态王参数设置 370
17.1.1 RS-485板卡的使用方法 370
17.1.2串口通信方式 371
17.1.3串口参数设置 374
17.2组态王通信协议 375
17.2.1寄存器定义 375
17.2.2读命令格式 376
17.2.3写命令格式 376
17.2.4命令格式中的符号说明 377
17.2.5命令举例说明 377
17.3组态王端的程序设计 378
17.3.1程序功能 378
17.3.2界面设计 379
17.3.3 KingComClient设备的设置 380
17.3.4变量定义 380
17.3.5命令语言 381
17.4计算机端的程序设计 381
17.4.1功能描述 381
17.4.2界面设计 381
17.4.3变量/函数声明 383
17.4.4初始化代码 384
17.4.5串口配置与操作 385
17.4.6串口事件响应函数 388
17.4.7自定义功能函数 395
17.4.8模拟数值的产生 399
17.4.9实际通信截图 400
17.5小结 401
第4篇 串口开发综合实例篇 404
第18章 云台及镜头控制系统 404
18.1 云台及镜头的应用概况 404
18.1.1数字监控系统概述 404
18.1.2监控系统组成 404
18.2如何控制云台与镜头 405
18.2.1云台及镜头的设备简介 405
18.2.2云台及镜头的控制原理 405
18.2.3解码器概述 406
18.2.4常用通信协议 406
18.3串口控制云台和镜头程序设计 407
18.3.1硬件接线说明 407
18.3.2通信协议介绍 407
18.3.3程序功能 409
18.3.4界面设计 409
18.3.5变量/函数声明 412
18.3.6初始化操作 414
18.3.7按下与弹起控制的实现方法 416
18.3.8串口操作 435
18.3.9发送数据 436
18.3.10程序测试截图 445
18.4小结 445
第19章GPS监控系统 446
19.1 GPS监控系统概况 446
19.1.1 GPS监控系统概述 446
19.1.2 GPS监控系统的系统架构 447
19.2如何获取GPS信息 449
19.2.1 GPS的工作原理 449
19.2.2 GPS接收机 450
19.2.3 GPS模块简介 451
19.2.4 GPS性能指标 451
19.3 GPS数据通信协议NMEA0183 452
19.3.1配置参数及协议格式 452
19.3.2 NMEA0183标准语句 452
19.3.3 GARMIN定义的语句 455
19.3.4 NMEA0183协议的TEXT文本格式 457
19.4串口接收GPS信息程序设计 458
19.4.1实例背景 458
19.4.2硬件接线说明 458
19.4.3 GPS模块与串口的通信协议 459
19.4.4程序功能 459
19.4.5界面设计 459
19.4.6结构声明 461
19.4.7初始化操作 464
19.4.8 GPS数据接收的实现方法 466
19.4.9 GPS数据解析的实现方法 470
19.4.10多线程串口工作方式 480
19.4.11发送命令 489
19.4.12结束清理 491
19.4.13地图支持 491
19.4.14程序测试截图 493
19.5小结 494