Delphi实现远程串口的数据采集
日期:2007年7月23日 作者: 查看:[大字体 中字体 小字体]-
摘要:本文介绍了在Windows平台下串口开发的方法,并给出一个使用Delphi设计的远程数据采集的实例。
关键词:远程数据采集 AcitiveX MSComm控件
1 引言 在工业生产实践中,使用PC机对Inprise公司推出的Delphi是一种功能强大的高级编程语言,其具有可视化面向对象的特征,特别适合Windows平台下的图形界面和用户程序的编制。本文就介绍在Windows平台下用Delphi开发串口的方法和使用Delphi设计的一个实现远程串行数据采集的实例。
2 串口工作原理及软件实现方法
串口进行通信的方式有两种:同步通信方式和异步通信方式。同步通信方式要求通信双方以相同的时钟频率进行,而且准确协调,通过共享一个单个时钟或定时脉冲源保证发送方和接收方的准确同步,效率较高;异步通信方式不要求双方同步,收发方可采用各自的时钟源,双方遵循异步的通信协议,以字符为数据传输单位,发送方传送字符的时间间隔不确定,发送效率比同步传送效率低。
在Windows平台下,Win32 API支持同步和异步两种I/O操作。同步操作的方式的程序设计相对比较简单,但是I/O操作函数在I/O操作结束前不能返回,这将挂起调用线程,直到I/O操作结束;异步操作方式要相对复杂一些,但是可以让I/O操作在后台运行,而不会挂起调用线程,这在大数据量通信情况下对改善调用线程的响应速度是相当有效的。同时由于Win9x和WinNT下对串行通信的处理不同,这就导致了在Win9x下开发的同步方式串行通信程序在NT下会发生工作线程之间的协作阻塞,即当读线程在等待WaitCommEvent的时候,写线程不能正常工作,停在那里,整个程序处于瘫痪状态。这个问题是Windows的API函数处理串行通信的一个BUG,所以对于适应性强的程序都是选择异步方式。下面,本文对在Windows平台下对串口进行开发的方法进行介绍:
1. 汇编程序直接读写串口
汇编语言的编译效率和执行效率都很高,使用汇编语言直接对串口进行操作可以部分弥补串行通信速度较慢的缺陷,具体做法是:用汇编语言编写读、写串口的函数,在通信程序中直接调用,或者在Delphi中直接内嵌汇编程序进行对端口的读写。
例如:
asm
mov dx,0001h
mov ax,005eh
int 14h
end;
这样可以达到直接读到端口的效果。但是在WinNT和Win2000下,系统使用了保护机制,不允许用户态的程序直接读取端口,所以在WinNT和Win2000下,这种方法不能被允许执行。Ring3的用户态的程序要进入Ring0去读写端口必须先提供一个驱动(sys)程序,然后通过DLL导出函数供用户程序调用,显然,这种方法比较不容易实现。
2. 使用API函数进行串口编程
Windows系统通信一般都以WOSA(Windows Open Service Architecture,即Windows开放式服务体系)模型为基础,在此模型中位于上层的应用程序通过调用各种通信API(Application Programming Interfaces,即应用程序接口)与位于下层的设备驱动程序进行数据交换。
在Windows平台下,Windows将设备看作是文件进行管理,对设备的操作也可以看作是对文件的操作。Win32 API提供了CreateFile(),WriteFile(),ReadFile(),WaitForSingleObject(),WaitForMultipleObjects(),CreateEvent(),CreateMutex(),CreateSemaphore(),CreateThread()等函数,其基本步骤如下:
(1) 利用CreateFile()函数打开串口。该函数有七个参数,其中dwCreationDistribution参数取OPEN_EXISTING,表明打开的串口对应于实际的物理串口;lpFileName参数是要打开的串口名称,如"COM1";DwFlagsAndAttributes参数决定对串口的操作是同步操作还是异步操作;DwDesiredAccess参数是访问方式,可取GENERIC_READ或GENERIC_WRITE;DwShareMode参数是共享模式,对串口物理设备必须取0;LpSecurityAttributes参数是安全属性,取值为NULL;DwFlagsAndAttributes是文件属性和标识,一般取值为FILE_ATTRIBUTE_NORMAL。该函数返回串口操作的句柄。 - [1] [2] [3] [4] 下一页
-
- Delphi实现远程串口的数据采集 相关文章:
- ·非主流ps教程实用的技巧大全
- ·Fireworks教程 液体金属表面特效制作
- ·Fireworks教程:立体质感水晶的制作过程
- ·Windows Vista停止报告程序问题的技巧方法
- ·非主流ps教程:制作红绿色调效果
- ·Photoshop液化滤镜校正歪斜的人物头像教程
- ·CSS教程:CSS中的定位(position)
- ·Flash制作交互动画教程 星座查询器
- ·Photoshop教程 绘制可爱半透明圣诞帽
- ·Linux下限制Root用户进行远程登陆
- Delphi实现远程串口的数据采集 相关软件
- ·《QQ游戏2007》beta1安装程序
- ·怪叔叔WII游戏教程之六-勇者斗恶龙
- ·《风色幻想6》完整流程攻略
- ·PSP自动更换壁纸插件及教程
- ·PS教程
- ·传奇女子的冒险经历及心路历程《罪恶天使》
- ·潘多拉神奇电池记忆棒制作必要程序
- ·名人讲述自己的读书历程:《与名人一起读书》
- ·卧底警察心路历程和传奇见闻:《卧底》
- ·PS文字特效教程(全7辑)6-7
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:用Delphi制作动态菜单
精品推荐
热点TOP10
- ·Delphi下的ADO使用方法!
- ·在Delphi中实现数据分析模块的动态报表
- ·在Delphi中控制扫描仪
- ·用拼音首字符来实现检索功能
- ·让Delphi的DBGrid支持鼠标轮
- ·自 动 隐 藏 的 声 象 按 钮
- ·OpenGL简介
- ·用Delphi制作动态有声标签
- ·从 实 例 看 Delphi 4 中 的 动 态
- ·Delphi中为DBGrid控件添加色彩
- ·常用的BCB & Delphi 函数
- ·产生不重复随机数的简便算法
- ·陈经韬2002原创资料
- ·Delphi2005试用版安装指南
- ·Delphi中ListBox控件的六种特效
- ·第三方控件使用方法
- ·关于SMTP和POP3使用及关于客户-服务端的自动连线问题
- ·关于MP3中的ID3V2格式探讨及我写的ID3V2读取源码
- ·监视打印机部分线程内容
- ·获取其他进程中ListView的文本
