基于多线程的串口通信软件的设计与实现(精) .pdf

基于多线程的串口通信软件的设计与实现(精) .pdf

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

收稿日期:2003207211;收修定稿日期:2003209225

作者简介:吴先亮(19752,男,安徽枞阳人,硕士研究生,主要研究方向为工业自动

化等。

控制工程

ControlEngineeringofChinaMar.2004Vol.11,No.2

2004年3月第11卷第2期

文章编号:167127848(2004022*******

基于多线程的串口通信软件的设计与实现

吴先亮,刘春生

(南京航空航天大学自动化学院,江苏南京210016

摘要:针对串口通信实时性和系统资源利用的不足,提出了基于多线程技

术和自

定义消息机制的异步串口通信的设计思想。结合串口通信的机理和多线程同步

方式,分析了Win32系统下多线程异步串口通信程序的开发方法。用Delphi实现了

加油站中央控制系统中PC机与单片机间的串行通信软件,给出了软件的设计思路,

一般步骤和部分程序代码。目前该通信软件已稳定地运行在各加油站中央控制系统

中,促进了石油行业自动化的发展,也为相关行业实现自动化提供了帮助。关键

词:多线程;串口通信;Delphi;消息机制中图分类号:TP311文献标识码:A

1引言

串行通信是计算机与其他设备进行数据交换

时经常使用的方法之一,它具有实现简单、使用灵活方便、数据传输可靠等优

点,因而在工业监控、数据采集和实时监控系统中得到广泛应用。在Windows系统

中,通过基于多线程和消息的多任务处理编程可以有效地解决通信的实时性,且能提

高数据的吞吐量和应用程序的可靠性。

在单任务操作系统中,不能同时处理两件以上不同的任务。Win32是基于线程

的抢先式多任务操作系统,使得应用程序能同时执行多个任务,即在一个进程中可同

时运行多个线程。一个线程是指程序的一条执行路径,它在系统指定的时间片中完

成特定的功能。系统不停地在多个线程之间切换,由于时间很短,看上去多个线程在

同时运行。对于通讯这种需要花费大量的时间来测试I/O操作,同时又要保持响应

用户其他操作的应用程序来说,创建多线程是最佳选择。本文介绍的是某公司开发

的加油站监控系统中使用的多线程的串行通信设计方法,可对从事类似开发任务的

人员有所帮助。

2系统结构

加油站监控系统一般采用MCS251单片机作

为前端加油机的主控CPU芯片,利用计算机作为后台监控机来实现实时监控、

司机自助式加油、晚

间无人加油、数据库管理以及应用IC卡技术和油站网络实现加油一卡通等。

系统的组成结构如图1所示。后台监控机是系统的心脏,要求后台监

控软件具有良好的兼容性和扩展性,所以独立设计了一套基于多线程的通讯软

件,物理位置与后台监控软件在同一台计算机上,它与前端的加油机串口通信是典型

的主从式,在硬件上通过moxa公司的多串口卡实现,与后台监控软件通过标准的

Windows消息机制实现数据交换

图1加油机监控系统结构

3多线程程序设计

1Windows串行通信机理Windows是与

设备无关的操作系统,在通常的情况下,严格禁止用户模式的应用程序直接对硬

件进行访问,应用程序对硬件的访问是通过Win32子系统传递IRP给I/O管理器,再

传递给合适的硬件驱动程

序,由硬件驱动程序对硬件进行访问,驱动程序提

供应用程序接口函数(API为应用程序调用。具体结构如图2所示。

对PC机串口进行操作,至少要有以下几个步骤:①打开进行通讯的串口;②

串口进行初始

化;③根据通讯事件对数据进行发送和接收;④通讯结束关闭通讯串口

图2应用程序操作硬件机理

2设计思想①串口操作方式的选择在加油站监控系统串口通信中,采取的

是典型的主从式通信方式(即前端加油机完全处于被动应答状态,应用程序发送、接

收数据时,对I/O口的读写操作有两种方式,即同步方式与异步方式(重叠。同步方式

执行时,必须等到事件和错误的发生才能返回,可能会导致线程的阻塞。异步方式执

行时,将等待的动作放到后台去执行,再由程序去判断是否已经完成,即使操作未完成

函数也会立即完

文档评论(0)

343906985 + 关注
实名认证
内容提供者

一线教师,有丰富的教学经验

1亿VIP精品文档

相关文档