网站大量收购独家精品文档,联系QQ:2885784924

用PB实现数据采集的程序设计方法.doc

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

用PB实现数据采集的程序设计方法 钮立红 (南京市中医院, 210001) 摘要:介绍了用VC创建数据采集动态链接库和PB调用DIA.的方法。 关键词:DLI_;数据采集 1 用DLL技术实现数据采集 在 计算 机工业控制系统中,常常使用A/ D接口模块作为输人硬件,用PB编制人机 交互界面。但PB不具备直接对硬件端口进 行访问的函数。为了实现动态数据的采集和 处理,采用C语言或汇编语言编制对硬件端 口访问的DI-I 函数,然后由PB主程序调 用,从而实现对I/()口的访问和控制,这样 既能保留PB设计界面的灵活和快捷,又能 发挥DLL在Windows环境下多个应用程序 之间共享代码和资源,提高运行效率的优势。 2 用VC创建数据采集动态链接库 本 文 采 用VisualC ++6 .0 集成开发环 境作为开发工具,创建用于数糖来集0动态 链接库。 2.1 建立DLL的C++源程序(.CPP) DI A. 源 程序包括以下内容: (1) C ”连 接说明 为 了将 DLI_编译成一个C十十程序,必须 在程序的起始部分增加‘℃”连接,以避免标 准C++命令损坏的发生。具体如下所示: ex ter n C{ 函数 模 块 } 2 )导 出 函数的说明 为了 调 用 包含在‘DIA,中的函数,必须将 其导出;为了使用包含在DIA,中的函数,必 须将其导人。使用C/C++时,导出操作是通 过使用dllexport关键字完成的,导人操作是 通过使用d1limport完成的。dllexport和 dllmport关键字不能单独使用,前面必须有 另一个扩展关键字_declspec。具体应用格式 为: ded s pec f dl l export)void Myfunction (int a) 3) 自 定 义输出的库函数Myfunction() 这一 部 分 是整个程序的核心,执行DLI_ 程序特定的任务。 2. 2 编译并生成动态链接库 在 Vi su alC 十+6.0集成开发环境下选择 File菜单下New子项创建工程文件。mpr, 项目类型选为Win32D ynamic_ L ink Library (. DLL),并把以上DI,I,的源文件 .CPP加入该项目中,经过编译后自动生成 动态链接库文件.DI,I,。将此DI-1-文件存放 在与应用程序相同的目录中,这样就可以在 编写应用程序时调用。 3 DLL应用实例 下 面 就如何采集METTLER TOLED08142型称重仪表数据说明DI,I,函 数模块的编制。TOLED08142型仪表数据输 出方式有两种:命令方式和连续方式。本文选 择其连续方式,其数据格式为: 含起始状恋状态状态显示的重量值 义符02字A 字H 字C H L 收稿日期:2000--08--1l 《电脑与信息技术》2001年第1期 {for (i=O;i(9;++1) 由于 V C 关于硬件端口的函数inp)和 outp )等仅支持DOS程序,因此在创建 DIA,模块时,通过在VC程序中嵌人汇编语 言代码来实现对端口的访问。 源代 码 文 件read_ c omm.C pp如下: #i nc lu de ( w indows.h ) # inc lu de stdio.h #i nc lu de a fx.h # in clu d e dos.h ex te rn c uns ig ned l ong_declspec(dllexport)SetCom()考 as m { asm { mo v dx,0 m ov ah,0 2 in t1 4h mo vd ata2,al //读数据位 an da l, Ofh mo vd atal,al} if W )=4)(i(9)) // 判 是 否 为 数 据 位 ? if((data2)=48)乙各.(data2(=57)) //判 是 否 为 有 效 数 据 ? total=total -}-data 1,pow(10,8 m ov i) m ov ah,0 刀功能=初始化通讯口 dx,0 //选择com 1口 mo v a l ,Of ah //初始化参数:波特率9600, 偶校验,1位停止位,7位数据位 else (err二1 int 1 4h //转BIOS } } unsignedi nt_dec)spec(d llexport)GetData( ){ unsigned int result; int total; BYTE data I.data2,err,state; int i; data I= 1; total=0; do { er r= 0; do 考 //若非有效数据,则重新读取 bre ak ; } } } )w hi le (er

文档评论(0)

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

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档