- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
串行通讯通用接口程序设计
串行通讯通用接口程序设计 串行通讯在通讯领域被广泛应用,标准的RS232接口已成为计算机、计算机外设、交换机和许多通讯设备的标准接口。微机与微机、微机与外设、微机与程控交换机等都可以通过RS232接口进行方便的连接,以实现控制外设和传输数据等目的。 在串行接口连接中,按连接方式可分为两类:有规程连接和无规程连接。无规程连接原理比较简单,通讯双方无握手过程。一方有数据需要发送,则立即通过串行接口发送出去,另一方被动接受。该方式虽然容易实现但数据发送的完整性却无法得到保证,在关键任务的连接中均不采用该方式,笔者在此不再赘述。而有规程通讯过程则不同,在甲方有数据发送请求时,则向乙方发送“请求发送数据”命令。乙方收到后,如准备就绪,则回送确认信息。甲方得到乙方的确认后方可发送数据。在大多数情况下,乙方要对收到的数据进行校验,校验正确发送“通讯终止”命令,否则可发送“重发”命令。在实践过程中,有规程的串行连接过程通常要复杂得多,而且不同的设备厂商都有不同的通讯规程,目前尚未形成统一的标准。即便是同一种类型的外设,在与不同品牌的设备进行连接时,也要修改原代码来满足不同种类规程的要求,此类问题常常会困扰程序开发人员。笔者在实际工作中总结出一种简单实用的通用规程的程序设计方法,在与多种串行通讯设备的连接中取得了满意的效果。在此简单介绍其原理,并与读者共同探讨。 在通讯的过程中,虽然规程的组合千变万化,但通讯过程中的每一步都有很多共性的东西存在。通过对多种串行通讯设备的研究,笔者将通讯过程的每一步骤进行总结,抽象出共性的东西,在此称作通讯“步骤对象”。通讯步骤对象的定义和应用是该程序设计方法的核心内容。每一种通讯规程都可以定义多个通讯步骤对象。整个通讯过程的的实现,就是每一个通信步骤对象依次被激活并执行各自定义的方法的一个连贯过程。 通讯步骤对象(objComStep)一般包括如下属性: (1)序号(StepId):每一个通讯步骤都有一个唯一的标识号,一般依据该步骤在整个规程中的执行顺序号来定义。 (2)状态(Status):每一个步骤可能有四种状态:①发送:发送命令代码;②接受:接受命令代码;③判断:对上一步骤接收到的命令进行判断,检验接收的命令或数据是否正确;④接收数据:接收真正要传输的数据。 (3)命令代码(Command):发送或进行接收判断的控制代码。 (4)数据代码(Data):发送或接收判断的数据代码。 (5)肯定序号(AckStep):在发送成功后跳转到肯定序号指定的步骤;如接收判断成功,同样跳转到肯定行号。 (6)否定序号(NakStep):在发送不成功后跳转到否定序号指定的步骤;如接收判断不成功,同样跳转到否定行号。 (7)延迟(DelayTime):当前步骤执行完毕,延迟相应时间后跳转到下一个步骤。 (8)循环上限(MaxRunCounts):由于每一个步骤可被重复执行,对于每一个步骤有一个循环上限,如果执行次数大于该数值,则跳转到循环跳转序号。 (9)循环跳转序号(BeyondStep):对于当前步骤被循环执行的次数超过上限时跳转到所指定的步骤。 (10)计数器(Counter):记载执行次数。 通讯步骤对象的方法定义如下: (1)发送(Send):通过串行端口发送数据或命令代码。 (2)接收(Receive):从串行端口接收数据或命令代码。 (3)判断(Identify):判断接收数据是否正确。 (4)输出数据(OutPut):将得到的数据通过网络或消息传送给其它程序模块。 完成了对objComSetp的定义,下一步我们就能够很容易地用程序语言来将其实现。在实际编程过程中,笔者将程序总体结构分为步骤定义模块和步骤执行模块。通过步骤定义模块定义所用规程的每一个步骤的属性,将属性信息写入配置文件。步骤执行模块按配置文件中的信息依次创建步骤对象,由该对象执行相应的方法。步骤执行模块总体控制每个objComStep的激活顺序,直至完成整个通讯规程。并将在通讯过程中得到的数据输出给其它程序模块。 下面是一个串行通讯的实例,笔者用上述的程序设计方法实现了PC机和NEC程控交换机之间的通讯。为了方便叙述,笔者将该程序称为“通讯模块”。通讯模块的目的是通过串行通讯的方法来完成用PC机对NEC电话程控交换机物业管理PMS(Property Management System)系统进行控制的任务。系统成功地实现了对交换机的控制,通过PC机实现自动开通、关闭、长途权限、电话叫早、电话留言、电话免扰、电话设置房间状态等多种功能。 图1是该规程的状态图。 图1 说明:(1)在接收和发送之间的时间间隔是1秒;(2)在接收到NAK后,重复发送的次数为3
文档评论(0)