串行编程/前言
串行编程: 简介和OSI网络模型 -- RS-232接线和连接 -- 典型的RS232硬件配置 -- 8250 UART -- DOS -- MAX232驱动器/接收器系列 -- Windows中的TAPI通信 -- Linux和Unix -- Java -- Hayes兼容调制解调器和AT命令 -- 通用串行总线(USB) -- 形成数据包 -- 纠错方法 -- 双向通信 -- 数据包恢复方法 -- 串行数据网络 -- 实际应用开发 -- 串行连接上的IP
本系列文章面向那些有兴趣深入了解串行数据通信系统“内部”的人。这些内容很少在大学课程中教授,并且可能很难在“工作中学习”。
与任何软件开发一样,各个主题都很简单,但将它们全部结合起来可能会非常复杂。为了避免使新手不知所措,本文采用分层的方法来介绍主题。第一章介绍了裸铜线及其处理方式。后续章节将添加协议层。
典型的串行通信几乎可以在任何级别进行。某些应用程序直接从电线中提取“原始”数据,而另一些应用程序则在多台计算机上使用完整的分组网络。有关更多信息,请参阅介绍中的“为什么进行串行编程?”
串行编程离不开编程知识和系统访问知识。本书假设您至少精通一种计算机编程语言。了解至少一种支持低级操作系统访问的软件工具也有助于您。
本系列针对x86平台的CPU编写,但其中大部分信息可以应用于其他环境,包括自定义嵌入式系统或其他CPU系统。如果您使用其他CPU系统以这种方式进行操作,则必须从相应的CPU架构中获取I/O控制的详细信息。如果您了解此主题,特别是如果您熟悉其中一些替代软件系统或CPU架构,请随时补充这些文章。
如果您还没有被吓跑,请记住本书是为计算机相对新手编写的。编写低级软件/驱动程序例程可能很吓人。即使您使用API库,这种软件开发也可能与典型的“Hello World”应用程序有很大不同。虽然您可能能够用大多数软件语言中不到十行代码编写“Hello World”,但通过串行连接传输“Hello World”可能需要相当多的代码,并且需要了解所有软件设置及其位置。将提供具体示例,同时解释“为什么”和“如何”。
除了编译器工具外,访问一个好的终端仿真器应用程序也将非常有用。在Windows或Linux等多任务系统中,这可以作为与您正在开发的应用程序独立的任务运行。在这种情况下,如果您的计算机至少有两个串行数据通信端口,并且您可以访问一个“零调制解调器”电缆,那么这将非常有用,至少从一开始是这样。有一些软件技巧可以避免此要求,但如果您能够看到实际的通信发生,将会更有成就感。访问第二台计算机可以使这个概念更加深入人心,特别是在介绍数据文件传输时。 RS-232连接描述了几个额外的硬件(例如,分线盒或协议分析仪),它们是简单和高级版本,在进行串行编程时很有用。
在本书中,“RS-232”一词以一种宽松的意义使用,因为它在计算领域已变得司空见惯,而不是严格按照某个RS-232标准的意义。实际的RS-232标准有许多不同的名称和版本。根据版本,标准甚至没有定义所有与“RS-232”通信通常相关联的方面(例如,起始/停止位帧)。
需要标准精度的读者请参考一个或多个RS-232标准。有兴趣实际编程类似RS-232的接口和设备的读者应该会在这本书中找到有用的信息。