文档介绍:2
2
2004 年第 6 期电力系统通信· 35 ·
Win d ows 2000 环境下 PC 机与单片机串行通信技术研究
温富光,林永君,罗廷坤
(华北电力大学工业工程仿真与控制实验室,河北保定 071003)
摘要:通过实例,介绍为大型直流电机调速系统开发 PC 机与 89C51 芯片之间串行数据通信的经验。详细
阐述了一种在 Windows 2000 环境下,以 C ++ Builder 6. 0 为开发平台,通过调用 Win 32API ,建立基于多线程
和定时事件驱动的串口通信的应用程序开发方法,并说明了事件对象在线程同步中的具体应用。
关键词:串行通信;多线程;Win32 API
中图分类号:TP368. 1 文献标识码:B 文章编号:1005 - 7641(2004) 06 - 0053 - 03
1. 1 串行通信开发基本方法
0 引言
从 Windows 95 以后,开发商对 Win32 中有关串行
在开发大型直流电机调速系统的过程中,笔者采通信的 API 有了较大的修改, 取消了以前的 WM-
用 PC 机与 89C51 MNOTIFY 消息以及 m、m、Read
来传送交互数据信号,将单片机作为下位机(m、m、m 等 16 位 API 函数,使用
直流电机的各种数据的采集和模数转换) ,PC 机作为与文件打开、关闭、读写相同的函数来实现串行端口操
上位机(主要负责数据的分析处理和显示) ,连接方式作,而且允许自定义读写缓冲区的大小,因而使得读写
如图 1 所示。速度大大加快了。在 Windows 环境中开发串口通信程
序有 4 钟方式:查询(需要花费 CPU 的大量资源) ,同
步 I/ O(直到读写到指定的字节数才返回,容易造成主
线程堵塞) ,异步 I/ O (即以重叠的方式打开串行端口
和读写端口,可以在多线程下使用) ,事件驱动 I/ O (当
串行端口发生某一通信事件时,由操作系统发消息给
图 1 上位机与下位机的连接示意
应用程序,可以在多线程下使用) 。本文采用异步重叠
操作和事件驱动相结合的方法,在 Windows 2000 下开
由于 PC 机和单片机只进行短距离的通信,可以
发串行通信程序。
采用 RS - 232 标准的三线制连接,通过 MAX232 芯片,
PC 机端串行通信的开发主要有以下几步:
单片机和 RS - 232 间进行电平转换。单片机端的串行
(1) 打开 PC 机上的串口资源
通信采用汇编语言开发;PC 机端的串行通信是在 Win
串口在被使用前,必须先被打开,为了系统的安全
dos 2000 环境下以 C ++ Builder 6. 0 为开发平台,采用
运行,Windows 禁止程序员在任何情况下直接访问串
Win32 API 函数和多线程技术来进行开发的。
行硬件资源,并把串行硬件端口当作文件来管理,故可
1 PC 机端串行通信的开发以使用打开文件命令 CreateFile () 函数来打开串行端
口。该函数如果打开成功,指定的串行端口将返回标
识该串口的句柄;否则返回 INVALID-HANDLE-VALUE。
代码如下:
收稿日