赵 强,秦红彦
(河北远东通信系统工程有限公司,河北 石家庄 050200)
个人数码助理(Personal Digital Assistant,PDA)是一种集成了计算、个人信息管理、通信等多种功能的科技产品,由于具备操作便捷、体积轻薄、便于携带等优势而得到了普及。PDA 和个人计算机(Personal Computer,PC)之间数据通信功能的实现,扩展了PDA 的应用能力,为PDA 的动态程序加载提供了更多底层支持。因此,技术人员应该做好该模式下数据通信系统的设计工作,真正发挥出数据通信技术的价值,为人们的办公、生活提供更多便捷。
在硬件层面上使PDA 和PC 参与到数据通信中的难度较高,此时需要在硬件上适当扩展软件层,使其成为硬件与应用程序之间的接口。该软件层即为通信协议,能够定义PC 进行数据通信时需要使用的格式,而用于实现通信协议的软件即为通信协议软件。通信协议主要为分层结构,每一层均负责达成通信目标的一部分,而每个子层协同合作共同完成数据通信任务。目前,较为常用的协议为传输控制协议/网络协议(Transmission Control Protocol/Internet Protocol,TCP/IP)属于网际互联PC 相互通信时使用的协议,建立在该协议上的互联网具有虚拟网络的性质,与网络硬件相关的细节均被屏蔽,说明在网络硬件结构具有差异性的情况下,在TCP/IP 协议基础上则基本一致。TCP/IP 协议是一种协议栈,除了涵盖字面上的TCP 协议、IP 协议外,还涵盖了其他协议,但以TCP协议、IP 协议为核心,每一层可以定义各协议负责的任务。TCP/IP 协议与国际标准化组织(International Organization for Standardization,ISO)/开放式系统互联(Open System Interconnect,OSI)模型等价,但前者为互联网标准,后者仅为理论模型。在PDA 与PC数据通信技术的协议设计中,可以参考2 种模型开展设计工作[1]。2 种结构体系的对比如图1 所示。
图1 TCP/IP 协议与ISO/OSI 模型结构的体系对比
通信协议属于数据通信双方共同遵循的约定,包括从物理线路电气特性到各PC 进程间共享资源的所有内容。在通信协议设计中,应该处理好以下6 个问题。第一,命令识别。设计的指令要满足PDA 和PC 双方均可识别的要求,还可以按照命令内容做出相应的动作。例如,可以设计“Sync_Error”指令代表同步失败,证实在PDA 或PC 端接收指令后发生了不可预料的错误,此时要停止传输或重新传输;设计“Sync_OK”指令代表同步通信开始,当PDA 或PC端接收指令后,便可以准备开辟充足的缓存区,准备接收数据信息等。第二,数据识别。PDA 和PC 应具有相互识别传输数据的能力,如设计的每个数据包内应涵盖数据本体和循环冗余校验码等额外的控制数据,便于在PDA 接收帧后可以迅速识别出数据与校验码。第三,通信异常检测。PDA 和PC 应具有检测、处理部分意外情况的能力,如在PDA 端内存已满但PC 端仍然处于数据传输状态时,可以设计“Err_Memory_Full”的信号传输至PC 端,当接收到信号后便可以停止传输和提醒用户PDA 内存已满,防止出现内存溢出的问题。第四,无效指令识别。在PDA 因错误接收到不符合通信协议的命令时,PDA 要具有识别非法指令和处理的能力。例如,通知PC 端重新发送指令,提示出错中止数据传输,或向对方返回错误代码,便于提升系统自身的容错性。第五,协议双方响应。当接收到来自对方的命令、数据时,PDA 与PC端均要做出响应。例如,可以设计“Cmd_Download_Start”命令,便于让用户知晓下载任务的开始,按照实际情况做好接收数据的准备。第六,通信控制权确定。通信控制权的确定本质上是确定由PDA 还是PC端负责主要控制的问题。考虑到PC 端设计和开发比PDA更加便捷、简单,可以将通信控制权设置在PC上,即通常由PC 控制数据传输,PDA 负责等待通信命令和做出动作、反馈结果完成通信任务等[2]。
握手信号的设计可以参考TCP/IP 下的3 次握手协议规则,但考虑到3 次握手协议容易降低通信效率,以及PDA 的数据处理速度比PC 慢的问题,要对握手信号在3 次握手协议的基础上加以简化。在准备传输数据时,可先安排PC 端不断发送握手信号,PDA 接收信号后返回、响应信号即代表握手成功,再开始数据通信。整个流程可概括为以下3 个步骤:(1)发送方每间隔一段时间,便发送握手信号;(2)接收方接收信号后,发送响应信号;(3)发送方接收到响应信号后,开始发送第一个传送包,否则检验超时情况,判断为超时则结束通信,否则继续[3]。该流程如图2 所示。
图2 握手协议的运作流程
PDA 与PC 数据通信技术实现的系统应基于通信分层的准则,便于减少层间的耦合度,使某一层的下基层具有差异性的功能实现方式,同时使同一层具备支持不同上基层的能力。整个通信框架可以划分为4层,按照从低到高的顺序分别为物理层、链路层、控制层以及应用层,便于割离底层和硬件有关的协议同上层、应用相关的协议。在通信协议下的用户组织通信时,只需调用上层服务即可,无须考虑下层的实际通信流程,为数据交换程序的编制提供了便利。
由于PDA 自身的特殊性以及内存容量小、处理器速度慢的缺陷,PDA 与PC 进行数据通信时,无法实现数据不限速流传输的目标,因此需要深度设计通信流程。其中,每传送1 个数据包便等待接收方返回正确接收的信号,在确定接收方已经正确接收和处理数据包后,再发送下一个包,直到发送完所有数据包。在通信之前,PDA 或PC 端仍然处于不断发送握手信号的状态,但在接收到该信号后则返回响应信号,证明握手成功和传输数据。在通信之前,因使用串口通信模式的缘故,要考虑到串口初始化方面的问题,如设置串口号、传输波特率等。数据通信技术的实现,还要支持各种类型的PDA,提高扩展性与兼容性。因此,在PDA 进行数据通信之前,应掌握目前PDA 的型号与配置情况,为使用差异性的通信指令、数据格式提供便捷。在基于互联网的TCP/IP 协议下,在设计中还可以采取滑动窗口的方法,达到控制流量的目的[4]。
物理层的工作为透明化传输比特流,能够直接向下同传输介质衔接,建立在物理传输介质上,为若干数据链路层实体之间提供、维持、建立、释放必要的物理连接,在开展传输数据位流工作的基础上实施错误检查,便于将比特信号通过传输介质从一个系统传输至另一个系统。由于该系统选择了基于串口的通信模式,则物理层运用的串行数据接口标准为RS-232 协议,属于使用频率较高的串行通信接口,可以实现数据在物理信道中传输的目标。在PDA 与PC 进行数据传输时,物理层的功能将由串行口负责实现,先将某帧数据逐字节地进行并串转换处理,配置奇偶校验位和转换信号电平后,再发送至物理信道。当信道接收之后,则开展数据位串行接收工作,同步转换电平与校验奇偶性,最后完成串并转换,将数据信息与电路状态报告至链路层。
链路层负责使用物理层建立的物理连接构成实际的数据链路,为上层传送和接收数据流,即构建、维持、释放数据链路以及传输数据位流,运用下层物理层建立的物理连接构成数据通路,将控制层内具有意义、结构的数据包转化为二进制比特流,使数据通过传输介质从一个系统传输至另一个系统。该层面的设计上应重点解决PDA 与PC 端数据处理速度不匹配的问题。由于PDA 缓存较小,缓存较多、传输速度较快的PC 端则要控制好数据通信量和速度,以防出现数据丢失、缓冲区溢出等现象。链路层的传输介质主要为通过串口采用某种具体方式传输的方法,有条件的情况下可以引入蓝牙、红外等技术,便于在转变传输方法后无须转变接口,强化了系统的可扩展性[5]。
控制层的功能接近于TCP/IP 的运输层、网际层功能,即对于上一层传输而来的数据按照既定的协议格式组织分组和打包,利用特定的校验方式对数据包加入或解开校验码处理。在从应用层接收到数据块后,将数据块拆分为大小适中的数据包,同时在包内加入额外的控制信息,完成无错传输数据包的任务。当接收方接收到信息帧后,则利用选定的错误控制方式组织校验,便于在发现错误后尽快处理。而在数据包校验中发现错误之时,控制层将负责对数据重新传输等意外情况的处理,目的在于向上一层提供可靠的无错数据运输连接。在PDA 和PC 端双方的校验方法、包长度等数据控制协议相关内容发生变更后,只需改变该层的实现方式即可,不影响其他层。例如,在设计中可以将数据包的数据长度定义为最大64 Bytes,配合使用CRC-16 的校验方法,便于在将该系统应用于其他PDA,或采用其他通信方法后致使数据包长度、校验方法出现变化时,解决对其他层产生影响的问题,同样具有加强系统可扩展性的功效。
运用数据通信技术支持PDA 和PC 之间的通信,能够为PDA 用户提供更多数据传输方面的便利。因此,技术人员要对PDA 和PC 间的数据通信设计引起高度重视,健全和完善数据通信系统,通过精准分析通信协议基础、解决通信协议设计问题、做好握手信号与指令信号的设计工作,以及把握通信框架、通信流程、物理层、链路层、控制层、应用层的设计要点,为PDA 和PC 之间的数据通信提供可靠的设计方案。