本书从编程实践的角度详细介绍了Windows环境下和DOS环境下的串口通信的基本方法,并根据当前串口与网络结合发展的趋势,介绍了串口与网络TCP/IP、远程控制与监测相结合的一些解决方案和编程要点。由于编程步骤详尽,初学Visual C++/C(甚至是以前完全没有接触过Visual C++)的读者也能很快编写出Visual C++的串口通信程序。本书配光盘,书中实例源程序和相关资料可在对应章节的文件夹中找到。
本书是从事串口及网络通信的技术人员和学习者的极佳参考资料,也可以作为数据通信课程的辅助教材。
目录
- 第1章 轻松体验串口通信编程与调试 1
- 1.1 使用串口调试助手来体验串口通信 1
- 1.2 体验Windows环境下的Visual C++串口通信编程 4
- 1.3 体验DOS环境下Turbo C串口通信编程 12
- 第2章 多线程串口编程工具CSerialPort类 16
- 2.1 CSerialPort类的功能及成员函数介绍 16
- 2.2 应用CSerialPort类编制基于对话框的应用程序 30
- 2.3 应用CSerialPort类编制基于单文档的应用程序 35
- 2.4 对CSerialPort类的改进 40
- 2.4.1 改进一:ASCII文本和二进制数据发送方式兼容 40
- 2.4.2 改进二:也许能解决内存泄漏 43
- 2.4.3 改进三:彻底关闭串口,释放串口资源 44
- 第3章 控件MSComm串口编程 46
- 3.1 MSComm控件介绍 46
- 3.1.1 VC中应用MSComm控件编程步骤 46
- 3.1.2 MSComm控件串行通信处理方式 47
- 3.1.3 MSComm 控件的属性说明 48
- 3.1.4 MSComm控件错误信息 55
- 3.2 使用MSComm控件的几个疑难问题 56
- 3.2.1 使用VARIANT 和SAFEARRAY 数据类型从串口读写数据 56
- 3.2.2 MSComm控件能离开对话框独立存在吗 59
- 3.2.3 如何发送接收ASCII值为0和大于128的字符 60
- 3.2.4 在同一程序中用MSComm控件控制多个串口的具体操作方法 62
- 3.2.5 解决使用控件编程时程序占用的内存会不断增大的问题 62
- 3.2.6 在MSComm控件串口编程时遇到的其他问题 63
- 3.3 在基于单文档(SDI)程序中应用MSComm控件 63
- 3.4 应用MSComm控件控制多个串口实例 69
- 3.5 串口与MODEM拨号应用简例 76
- 3.5.1 创建工程 76
- 3.5.2 代码分析 78
- 3.5.3 应用 85
- 第4章 Windows API串口编程 87
- 4.1 Windows API串口编程概述 87
- 4.2 API串口编程中用到的结构及相关概念说明 89
- 4.2.1 DCB(Device Control Block)结构 89
- 4.2.2 超时设置COMMTIMEOUTS结构 92
- 4.2.3 OVERLAPPED异步I/O重叠结构 94
- 4.2.4 通信错误与通信设备状态 95
- 4.2.5 串行通信事件 96
- 4.3 Windows API串行通信函数 97
- 4.4 Win32 API串口通信编程的一般流程和特殊实例 116
- 4.4.1 Win32 API串口通信编程的一般流程 116
- 4.4.2 用查询方式读串口 116
- 4.4.3 同步I/O读写数据 117
- 4.4.4 关于流控制的设置问题 118
- 4.5 CSerialPort类中的API函数编程应用剖析 119
- 4.6 Win32 API串口编程TTY(虚拟终端)实例 128
- 4.6.1 建立程序工程 128
- 4.6.2 建立串口设置对话框 129
- 4.6.3 编写CTermDoc类的相关代码 132
- 4.6.4 小结 141
- 4.6.5 在CTermView类中字添加符键入处理代码与串口接收处理代码 142
- 第5章 串口调试助手V2.2编程 147
- 5.1 建立SCOMM程序工程实现界面功能 147
- 5.2 串口的初始化及关闭 150
- 5.3 串口数据的发送与接收及十六进制数据的处理 151
- 5.3.1 十六进数据发送处理 152
- 5.3.2 手动发送处理 152
- 5.3.3 自动发送处理 153
- 5.3.4 接收处理及十六进制显示 154
- 5.4 其他辅助功能的实现 156
- 5.4.1 接收数据的文件保存 156
- 5.4.2 实现小文件发送 158
- 5.4.3 图钉按钮功能使程序能浮在最上层 161
- 5.4.4 对话框动画图标的实现 162
- 5.4.5 超链接功能的实现 164
- 5.4.6 如何打开帮助网页文件 164
- 第6章 DOS环境下的Turbo C串口编程及通用实例GSerial类 168
- 6.1 PC机异步通信适配器8250及其编程操作 169
- 6.1.1 INS8250内部寄存器及其选择方式 169
- 6.1.2 波特率设置 169
- 6.1.3 数据位、奇偶校验、停止位等数据格式设置 170
- 6.1.4 查询I/O方式相关设置 171
- 6.1.5 中断I/O通信方式相关设置 171
- 6.1.6 MODEM寄存器 172
- 6.2 COMRXTX程序实例 173
- 6.3 通用实例程序GSerial类 175
- 6.4 用GSerial类控制多串口 186
- 6.5 多串口编程PC机高号中断8259A可编程中断控制器的控制 195
- 第7章 串口通信用户层协议的编制与数据处理方法 197
- 7.1 通信协议的编制 197
- 7.1.1 为什么要编制用户通信协议 197
- 7.1.2 串口通信中用户层协议编制原则 199
- 7.1.3 在串口通信中几种常用的用户层协议 200
- 7.2 串口通信数据包处理方法编程实例 202
- 7.2.1 编程任务 203
- 7.2.2 编程步骤 203
- 7.2.3 程序测试 216
- 第8章 单片机串口通信 218
- 8.1 单片机串口硬件系统及C51程序开发 218
- 8.1.1 较典型的单片机硬件系统实例 218
- 8.1.2 C51语言及程序简介 220
- 8.1.3 开发C51程序的利器Keil C51 uVision2及串口程序仿真 221
- 8.2 C51单片机串口通信程序实例 226
- 8.2.1 实例一 226
- 8.2.2 实例二 227
- 第9章 串口与网络结合的解决方案及编程 230
- 9.1 串口与网络结合的硬件解决方案 230
- 9.2典型串口与联网的设备 231
- 9.2.1 NPort5400系列产品的特点 231
- 9.2.2 NPort 5400系列产品的典型应用介绍 233
- 9.2.3 NPort5400系列产品的设置与编程测试 235
- 9.3 与Access数据库结合的串口通信实例 237
- 9.3.1 微机网络检测系统说明 237
- 9.3.2 创建ODBC数据源 238
- 9.3.3 创建工程 239
- 9.3.4 程序简介 244
- 9.4 与WinSock结合的串口通信实例 246
- 9.4.1 客户端应用程序 247
- 9.4.2 服务器应用程序 252
- 9.5 在已经编好的串口通信程序中加入网络通信功能 260
- 9.5.1参照MFC AppWizard创建WinSockets程序 261
- 9.5.2 利用Windows Sockets API和第三方提供的类进行编程 262
- 9.6 串口通信用于遥控操作简例 262
- 第10章 计算机串口与其他设备通信编程实例 266
- 10.1通过串口收发短消息 266
- 10.1.1 SMS编码规范及编码与解码例程 266
- 10.1.2 AT命令收发短消息实例 273
- 10.1.3 “实时”接收短消息的方法 281
- 10.1.4 用串口收发SMS短信编程的一些讨论 283
- 10.2 计算机与Rabbit 2000嵌入式系统通信编程实例 286
- 10.2.1 Rabbit 2000微处理器介绍 286
- 10.2.2 动态C(Dynamic C)语言介绍 287
- 10.2.3 某车载无线调度系统实例介绍 288
- 10.3 计算机与PLC通信程序实例 294
- 10.4 MATLAB环境串口编程通信实例 295
- 10.4.1 MATLAB串口类Serial应用 295
- 10.4.2 通过串口使MATLAB Simulink与下位机通讯进行控制 299
- 10.4.3 xPC目标环境下串口通信实现 299
- 第11章 串口通信基本概念及标准 302
- 11.1 串口通信基本概念 302
- 11.1.1 串行通信概述 302
- 11.1.2 单工、半双工和全双工的定义 305
- 11.1.3 同步传送与异步传送 306
- 11.1.4 串行通信协议 306
- 11.2 RS-232-C串口标准 309
- 11.2.1 RS-232-C标准 309
- 11.2.2 RS-232-C串行通信接线实例 312
- 11.3 RS-422/485串口标准 314
- 11.3.1 概述 314
- 11.3.2 RS-422与RS-485串行接口标准 315
- 11.3.3 RS-422与RS-485的网络安装注意要点 317
- 11.3.4 RS-232、RS422、RS485电气参数对比 318
- 11.4 串口调试注意事项 318
- 11.5 常用数据校验法 318
- 11.5.1 奇偶校验 318
- 11.5.2 循环冗余码校验 319
- 11.6 串口连接和TCP/IP连接对比 320
- 11.7 现场总线与RS-232、RS-485的本质区别 320
- 11.8 MODEM通信技术 320
- 11.8.1 MODEM的基本工作原理 320
- 11.8.2 MODEM的功能 322
- 11.8.3 MODEM的分类 322
- 11.8.4 MODEM的安装 324
- 11.8.5 MODEM V.92标准介绍 326
- 11.8.6 MODEM的速度 327
- 11.8.7 MODEM优化方法 328
- 11.8.8 MODEM命令/AT命令 329
- 第12章 不占用串口的串口数据捕捉 338
- 12.1 驱动程序的基本概念:VxD与WDM 338
- 12.1.1 虚拟设备驱动程序VxD 338
- 12.1.2 Win32驱动程序模型WDM 340
- 12.1.3 在不同操作系统下选用哪种驱动程序模式 341
- 12.2 VxD示例程序介绍——VToolsD中的CommHook 341
- 12.3 串口数据捕捉实例程序 351
- 12.3.1 编程任务 351
- 12.3.2 编程步骤 351
- 12.4 虚拟串口简介 364
- 附录A Turbo C说明 366
-
附录B ASCII码表 376