《串行通信开发指南 第2版》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:(美)Mark Nelson著;潇湘工作室译
  • 出 版 社:北京:中国水利水电出版社
  • 出版年份:2000
  • ISBN:7980044843
  • 页数:604 页
图书介绍:本书全面而完整地介绍在32位Windows平台上进行串行通信编程。其主要内容有串行通信的基础知识、Windows API的技巧、在高速调制解调器上达到最大数据交换速率的方法以及面向对象编程的最新技术。通过学习本书,读者将能够掌握以下知识:(1)编写可以很容易地在不同的操作系统和硬件平台之间进行移植的通信程序:(2)跨越网络访问调制解调器和其他串行设备;(3)使用标准和智能多端口板:(4)实现文件传输格式,如XMODEM、YMODEM、ZMODEM和Kermit;(5)以57.6Kbps和更高速度与最新的高速调制解调器联系;(6)编写在各种系统上工作的终端仿真代码;(7)利用Windows 95、98和NT通信API编写通信程序:(8)使用TAPI并掌握调制解调器的设置。另外,本书还提供了丰富的程序代码,在本书光盘中,有这些代码的源程序。(9)获得最佳结果的最新工具和最好的技术。本书适用于利用C++进行通信编程的程序员。本书针对32位Windows平台使用新的资料进行了完整的修订和更新。这是一本综合性的指南,它的内容涉及到嵌入式系统、数据记录和其他通信系统,本书可以为读者提供编写强健的应

第一章 RS-232概述 1

1.1 RS-232标准 1

1.2 标准省略的结果 2

1.3 ASCⅡ码——另一种RS-232-C吗 2

1.4 ASCⅡ码的问题 3

1.5 DTE和DCE 4

1.6 RS-232:物理接口 4

1.6.1 信号格式 6

1.6.2 数据线 7

1.6.3 标记和间隔 8

1.6.4 控制线 8

1.6.5 电线 9

1.7 RS-232-C规范的限制 9

1.8 电缆 10

1.8.1 空调制解调器电缆 10

1.8.2 更合理的电缆设计 12

1.8.3 RS-232 9到25针适配器 13

1.8.5 Macintosh电缆 14

1.8.6 使用电缆的建议 14

1.8.4 自制电缆 14

1.9 UART 15

1.9.1 8250系列产品 15

1.9.2 UART的发展 15

1.9.3 8250的功能 16

1.9.4 控制寄存器 17

1.9.5 状态寄存器 17

1.9.6 中断功能 17

1.9.7 16550的不同点 17

1.10 多端口板 18

1.9.8 16550的子代产品 18

1.11 智能多端口板 19

1.12 调制解调器 20

1.12.1 数据速率 21

1.12.2 智能 22

1.12.3 握手 24

1.13 流控制 24

1.13.1 硬件流控制 24

1.13.2 软件流控制 25

1.14 文件传输 26

1.13.3 本地流控制与直通流控制 26

1.15 软件和硬件工具 28

1.15.1 PC机软件 28

1.15.2 BBS软件 28

1.15.3 编程库 29

1.15.4 商业化工具 29

1.15.5 电缆制作设备 31

1.16 什么是Internet 33

1.17 小结 34

2.1.1 试用C语言 35

2.1 为什么使用C++ 35

第二章 RS232类 35

2.1.2 分析方法的弊端 36

2.1.3 用函数指针调度 36

2.1.4 将函数指针组成结构 37

2.1.5 为什么使用C++ 38

2.2 RS232类 39

2.2.1 一些约定 41

2.2.2 默认参数 43

2.3 RS232类的各个成员 44

2.2.3 强制函数和可选函数 44

2.2.4 哪里是构造函数 44

2.3.1 保护成员 45

2.3.2 保护成员函数 47

2.3.3 公共数据成员 47

2.3.4 强制虚拟函数 48

2.3.5 非虚拟函数 51

2.3.6 短小的例程 54

2.3.7 可选函数 55

2.4 代码 61

2.5 小结 74

第三章 PC8250类 75

3.1 8250 UART 75

3.1.1 8250寄存器集 76

3.1.2 8250的兼容芯片 85

3.1.3 8250设计的扩展 87

3.1.4 8250的特别之处 87

3.2 标准COM板卡 89

3.2.1 便携机的特点 89

3.2.3 硬件基础 90

3.2.2 PC机的中断方式 90

3.3 PC8250驱动程序结构 91

3.3.1 中断服务例程 92

3.3.2 Isr_data结构 95

3.3.3 ISR程序代码 97

3.3.4 PC8250.CPP 105

3.4 支持类 132

3.4.1 队列软件包 132

3.4.2 中断管理程序软件包 135

3.5 测试程序 142

3.6 小结 144

第四章 共享中断设备 145

4.1 多端口板 145

4.1.1 中断线共享-状态寄存器 146

4.1.2 选择IRQ线和地址 146

4.2 Handler类 147

4.3 Digi Classic板中断处理程序 148

4.3.1 构造函数 149

4.3.2 析构函数 151

4.4.2 变量和常量 152

4.4 CHAPT04.CPP 152

4.4.1 头文件总结 152

4.4.3 加入标准处理程序 153

4.4.4 打开端口和窗口 153

4.4.5 建立并运行程序 154

4.5 MS-DOS下的多任务 155

4.6 小结 156

第五章 智能多端口板 157

5.1 硬件 157

5.1.2 程序控制 158

5.1.1 自由设计 158

5.2 软件接口 159

5.3 Digi International API 160

5.3.1 函数0:初始化端口(BIOS兼容) 161

5.3.2 函数1:输出字符(BIOS兼容) 162

5.3.3 函数2:输入字符(BIOS兼容) 162

5.3.4 函数3:读入线和调制解调器的状态(BIOS兼容) 162

5.3.5 函数4:初始化扩展端口(EBIOS兼容) 163

5.3.8 函数6,子函数1:获得驱动程序信息 164

5.3.7 函数6,子函数0:获得端口名 164

5.3.6 函数5:扩展端口控制(EBIOS兼容) 164

5.3.9 函数6,子函数2:获得板卡信息 165

5.3.10 函数6,子函数0xff:获得驱动程序名 165

5.3.11 函数7:发送中断 166

5.3.12 函数8:改变状态检查 166

5.3.13 函数9:清除端口缓冲区 166

5.3.14 函数0x0A:输入缓冲区记数 167

5.3.15 函数0x0B:去掉端口的握手线 167

5.3.16 函数0x0C:获得端口参数 167

5.3.17 函数0x0D:获得字符就绪标志的指针 168

5.3.18 函数0x0E:写缓冲区 169

5.3.19 函数0x0F:读缓冲区 169

5.3.20 函数0x10:清除RX缓冲区 169

5.3.21 函数0x11:清除TX缓冲区 169

5.3.22 函数0x12:释放TX缓冲区的空间 170

5.3.23 函数0x13:提高端口的握手线 170

5.3.24 函数0x14:查看字符 170

5.3.25 函数0x15:获得RX缓冲区中的空间 170

5.3.28 函数0x1E:设置握手 171

5.3.27 函数0x1C:设置握手水标志 171

5.3.26 函数0x1B:获得缓冲区大小和水位标志 171

5.3.29 函数0x20:打开/关闭BIOS调步 172

5.3.30 函数0xFD:获得缓冲区的记数 172

5.4 INT14驱动程序函数小结 172

5.5 配置智能板 173

5.6 配置端口 175

5.7 实现DigiBoard类 175

5.8 代码 176

5.9 CHAPT05.EXE 190

5.10 小结 191

第六章 BIOS和EBIOS类 192

6.1 BIOS细节 192

6.1.1 函数0:初始化端口(BIOS) 193

6.1.2 函数1:输出字符(BIOS) 193

6.1.3 函数2:输入字符(BIOS) 194

6.1.4 函数3:读入线路和调制解调器状态(BIOS) 194

6.1.5 函数4:扩充的端口初始化(EBIOS) 194

6.1.6 函数5,子函数0:读取调制解调器控制寄存器(EBIOS) 195

6.1.7 函数5,子函数1:写入调制解调器控制寄存器(EBIOS) 195

6.3 代码 196

6.2 问题 196

6.4 继承性 197

6.5 测试BIOS类 211

6.6 小结 213

第7章 FOSSIL接口 214

7.1 历史 214

7.2 FOSSIL技术要求说明 215

7.2.1 函数0:初始化端口(BIOS) 215

7.2.4 函数3:读取状态寄存器(BIOS) 216

7.2.3 函数2:获取接收的字符(BIOS) 216

7.2.2 函数1:传送单一字节(BIOS) 216

7.2.5 函数4:打开串口 217

7.2.6 函数5:关闭端口 217

7.2.7 函数6:控制DTR 217

7.2.8 函数8:刷新TX缓冲区 218

7.2.9 函数9:清除输入缓冲区 218

7.2.10 函数0x0A:清除输出缓冲区 218

7.2.11 函数0x0B:立即发送 218

7.2.14 函数0x18:读取缓冲区 219

7.2.13 函数0x0F:选择流控制 219

7.2.12 函数0x0C:查看单字符 219

7.2.15 函数0x19:写入缓冲区 220

7.2.16 函数0x1A:中断控制 220

7.2.17 函数0x1B:获取FOSSIL驱动程序信息 220

7.3 信号源 221

7.4 源代码 221

7.5 编译CHAPT07.EXE 231

7.6 测试运行 232

7.7 小结 233

8.2 为什么要仿真终端 234

第八章 终端仿真 234

8.1 如何创建测试程序 234

8.3 转义序列 235

8.3.1 终端智能 235

8.3.2 转义序列的发展 235

8.4 ANSI.SYS 236

8.4.1 ANSI.SYS转义序列 236

8.4.2 ANSI.SYS键盘序列 240

8.5 终端类 241

8.6 测试程序 243

8.7 AnsiTerminal类 244

8.8 调试挂钩 258

8.9 BaseWindow类 260

8.10 TextWindow类 264

8.11 生成测试程序 278

8.12 小结 279

第九章 Win16驱动程序 280

9.1 Windows编程 280

9.3 通信API 281

9.2 Microsoft Windows 16位设备驱动程序 281

9.4 综合应用 288

9.5 Win16测试程序 304

9.6 生成Test232W.EXE 309

9.7 小结 311

第十章 Win32通信API 312

10.1 Win32编程的不同之处 312

10.1.1 作为文件对象的通信端口 312

10.1.2 产生必要的线程 312

10.2.1 数据结构 313

10.2 Win32设备驱动程序 313

10.2.2 通信API 319

10.3 小结 334

第十一章 Win32Port类 335

11.1 Win32Port类 335

11.1.1 MTTTY.C——按实例进行存档 335

11.1.2 线程结构和约定 336

11.1.3 输出线程 337

11.1.4 输入线程 341

11.1.5 通知 345

11.1.6 类成员概述 346

11.1.7 辅助类——MTDeque 359

11.1.8 辅助类——Dcb 360

11.2 Win32下的IdleFunction 361

11.3 小结 362

第十二章Win32Test程序 363

12.1 CHAPT12.EXE——基于控制台的测试程序 363

12.1.1 基于对话框的控制面板 363

12.1.2 定制的派生类 368

12.2 源代码 369

12.3 小结 409

第十三章Win32终端仿真 410

13.1 终端窗口类 410

13.1.1 需求 410

13.1.2 C++与Windows 411

13.1.3 Win32Term类——基本的内部函数 413

13.2 Win32类——定义 415

13.2.1 私有类 415

13.2.2 数据成员 415

13.2.3 公共代码成员 420

13.2.4 保护代码成员 423

13.3 集成Win32Term与AnsiTerm 425

13.3.1 AnsiWinTerm类 426

13.3.2 AnsiWinTerm和Win32Port类 426

13.2.3 AnsiWinTerm RX通知 427

13.2.4 AnsiWinTerm和AnsiTerm类 428

13.2.5 AnsiWinTerm清单 429

13.4 本章演示程序 436

13.4.1 菜单命令 436

13.4.2 源代码 438

13.5 改进建议 446

13.6 小结 464

第十四章 在MS-DOS下使用调制解调器 465

14.1 调制解调器标准的冲突 465

14.1.1 硬件标准 465

14.1.2 软件标准 466

14.1.3 今天的调制解调器 471

14.2 调制解调器的功能 472

14.2.1 创建功能项 474

14.2.2 Modem类 474

14.2.3 公共接口 476

14.2.4 保护成员 478

14.3 测试程序 485

14.4 生成TSTMODEM.CPP 488

14.5 小结 489

第十五章 在Win32下使用调制解调器——TAPI 490

15.1 TAPI的历史 490

15.2 TAPI概述 491

15.2.1 TAPI通知方法 491

15.2.2 同步与异步函数 491

15.3 本章使用的TAPI函数 492

15.2.3 TAPI对象 492

15.2.4 TAPI的麻烦之处 492

15.3.1 TAPI初始化和关闭 493

15.3.2 线路控制 494

15.3.3 呼叫配置 497

15.3.4 呼叫控制 499

15.3.5 回调函数 502

15.4 SimpleTapi类 503

15.4.1 类管理和状态 503

15.4.2 呼叫及线路管理/配置 504

15.4.3 通知函数 506

15.4.4 重要的内部函数 507

15.4.5 调试的注意事项 508

15.4.6 改进缺点 509

15.4.7 类Tapi32Port——最后的细节 509

15.5 CHAPT15.EXE演示程序 509

15.5.1 SimpleTapi集成 510

15.5.2 源代码 511

15.6 小结 550

16.1 协议的历史 552

第十六章 文件传输与ZMODEM 552

16.1.1 进入ZMODEM 553

16.1.2 选择ZMODEM的原因 553

16.2 ZMODEM概述 554

16.2.1 ZMODEM帧类型 554

16.2.2 头格式 558

16.2.3 数据子包格式 559

16.2.4 编码 560

16.2.5 其他事项 560

16.3 文件传输 561

16.4 FileTransfer类 562

16.5 Zmodem类 563

16.6 测试程序 564

16.7 CRC类 566

16.8 源代码 568

16.9 小结 594

附录 本书光盘内容 595

词汇表 599

本书光盘安装指导 604