| 域名空间 下载中心 社区论坛 信息公告 my小屋 |
![]() |
联系我们 设为首页 加入收藏 |
|
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿 论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图 专题 | 应用软件 | 聊天通讯 | q q 专栏 | 建站经验 | 在线工具 | 站长club | 注 册 表 | 旧版 社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 网络赚钱 | 网站地图 | 广告服务 | 服务 |
| 新版上线![旧版] | |||||
注:打开慢时请稍等
|
串口是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,所以应用广泛。我们可以利用windows api 提供的通信函数编写出高可移植性的串行通信程序。 在win16中,可以利用opencomm、closecomm和writecomm等函数打开、关闭和读写串口。但在win32中,串口和其他通信设备均被作为文件处理,串口的打开、关闭和读写等操作所用的api函数与操作文件的函数相同。可通过createfile函数打开串口,通过closefile函数关闭串口,通过commprop、dcb结构、getcommproperties、setcommproperties、getcommstate及setcommstate等函数设置串口状态,通过函数readfile和writfile读写串口。 vc++ 6.0是windows应用程序开发的主流语言之一,它具有良好的图形设计界面并支持面向对象的程序设计方法。本文结合一个实例介绍在vc++ 6.0下如何利用win32 api 实现串行通信程序。 实现原理 本文的实例来自一个水泥发货系统,在系统中,需要将通过总量传感器采集到的仓重值传入到计算机中,以便系统做出相应的处理。这需要使用串行通信来完成采集数据的传递工作。 对于串行通信设备,win32 api支持同步和异步两种i/o操作。同步操作方式的程序设计相对比较简单,但i/o操作函数在i/o操作结束前不能返回,这将挂起调用线程,直到i/o操作结束。异步操作方式相对要复杂一些,但它可让耗时的i/o操作在后台进行,不会挂起调用线程,这在大数据量通信的情况下对改善调用线程的响应速度是相当有效的。异步操作方式特别适合同时对多个串行设备进行i/o操作和同时对一个串行设备进行读/写操作。这两种操作方式的程序设计基本思想是相似的,本文将针对同步操作方式给出具体的通信程序设计,同时简单说明如何实现异步的i/o操作。 串行设备的初始化 串行设备的初始化是利用createfile函数实现的。该函数获得串行设备句柄并对其进行通信参数设置,包括设置输出/接收缓冲区大小、超时控制和事件监视等。
在设置串口dcb结构的参数时,不必设置每一个值。首先读出dcb缺省的参数设置,然后只修改必要的参数,其他参数都取缺省值。由于对串口进行的是同步i/o操作,所以除非指定进行监测的事件发生,否则waitcommevent函数不会返回。在串行设备初始化的最后要建立一个单独的监视线程来监视串口事件,以免挂起当前调用线程,其中pparam可以是一个对事件进行处理的窗口类指针。 如果要进行异步i/o操作,打开设备句柄时,createfile的第6个参数应增加fileflag overlapped 标志。 共2页。 1 2 8 : 编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部] 上一篇:vc++多串口控制解决方案api版 下一篇:用vc++实现版本在线升级 转载请注明来源:www.iyit.net 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
| 最新更新 | 热点排行 | 推荐新闻 | |||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
| 友情链接 | ||||||
| 设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接 |
| |||||||