在Windows环境下调用动态库实现VXI嵌入式计算机间的数据传递_第1页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、在windows环境下调用动态库实现vxi嵌入式计算机间的数据传递在vxi系统中,控制器可以选用各种流行的控制机和操作系统。控制机无疑是一种很好的挑选。但在一些由vxi组成的大型、复杂系统中,往往一台计算机无法完成全部的任务,因此需要多台机器之间协作完成,各自负责处理部分任务,因此如何传递彼此间的实时性数据显得非常重要。本文介绍在一个vxi机箱插入两个嵌入式计算机,其中一台作为零槽控制器,另一台作为一个模块,两者之间可以迅速、有效地互相交换各自处理的实时性数据。选用的环境是windows 2000操作系统,agilent e8401a vxi主机箱一个,ni vxipc-872b嵌入式计算机两

2、台。采纳的办法是分享存储器通信和大事回调机制。分享存储器通信vxi的通信方式无数,其中分享存储器通信是对vxi总线字串行通信的补充。这些协议将用法少量的辅助操作而传递大量的信息,而这些辅助操作正是字串行协议所需要的。visa提供了两种不同的方式用于挺直对寄存器编程:高级存储器函数或低级存储器函数。高级存储器函数允许通过容易的函数调用拜访接口上的存储器,这不需要把存储器映射到窗口。用法高级存储器函数可完成存储器映射和挺直存储器拜访。因为此函数包含了存储器空间的映射和挺直寄存器拜访,这就增强了程序的执行时光。和高级存储器函数一样,低级存储器函数允许挺直拜访接口上的内存,但是,调用低级存储器函数时,

3、必需用低级存储器函数对地址和被拜访的寄存器举行映射。在用法低级存储器函数时,为了提高程序的执行速度,低级存储器函数不返回错误代码。用法大事和句柄大事是需要引起应用程序注重的特别大事。大事类型包括服务哀求、中断和硬件触发。惟独当适当的大事允许时,大事才干被传送。当大事发生时,有两种方式应引起注重:1. 用viinstallhandler安装大事,用vienableevent使能一个或多个大事。假如大事以句柄的形式使能,当指定的大事发生时,指定的大事句柄就被调用。这种方式被叫作回调方式。2. 用法vienableevent使能一个或几个大事并且调用viwaiton event函数。viwaiton

4、 event函数将挂起执行程序,直到指定的大事发生或到达指定的超时值。这种方式被叫做排队方式。这两种方式是彼此自立的,在同一时光可以用法一种或两种同时用法。回调方式通常用来处理需要立刻反应的大事,排队方式用来处理非紧张大事。为了满足实时性的要求,本文采纳回调的方式。动态链接库的设计与实现为了提高动态链接库的效率,选用动态链接库中的函数的原则如下:1. 不同的函数按功能分类,如初始化通信环境、传送数据、释放系统资源、有用函数(大事回调函数)等。2. 保持函数之间一定的自立性。3. 假如一个功能由数个函数执行,应当简化指令序列。4. 使函数总数目最少。囫囵动态链接库中函数根据功能可分为初始化和数传

5、两类。初始化类包括初始化通信函数和释放系统资源函数;数传类包括传送数据函数和有用函数。在初始化通信函数中,首先应在两个模块的进程中各自打开自己的一个会话。在对接口存储器举行映射之前先要举行存储器分配,然后从指定的地址偏移量处举行端口映射,本文采纳的是a24地址映射方式。当调用数据传递函数传递完数据后还应当通知对方接收数据,本文采纳的是vxi总线触发的方式来通知数据传递,因此在初始化函数中还应当使能一个大事,指定触发方式。数据传递函数负责处理数据的传递。这里需要注重的是用法存储器映射函数只能传递8位、16位和32位无符号整数,所以必需通过软件编写举行数据格式的转换。有用函数主要是指在初始化通信函

6、数中使能的大事所对应的回调函数。此函数的作用是监听并接收数据。假如监听到的是指定的触发,就通过存储器映射函数将数据读出来,经过一定的数据格式转换还原出原始数据,之后向主线程发送消息,通知数据已经接收到。主线程用法线程间通信的办法将数据接收并举行相应的处理。从而囫囵数据的传递过程结束。下面是动态链接库主要函数实现的办法:void initcommunication (dword thrdid) file:/初始化通信环境.viinstallhandler (vi,vi_event_trig,myhdlr, (viaddr)10); file:/声明一个回调函数vienableevent (vi,

7、vi_event_trig,vi_hndlr, vi_null); file:/使能一个大事vimemalloc(vi,0x200,&offset);file:/分配一块内存vimapaddress(vi,vi_a24_ space,0, 0x200,vi_false,vi_ null, file:/映射地址.void senddata(unsigned short data2) file:/数据传递函数vipoke16(vi,addr,data2);viasserttrigger (vi,vi_trig_prot_sync);vistatus _vi_funch myhdlr(vis

8、ession vi,vieventtype eventtype,vievent ctx,viaddr userhdlr) file:/大事回调函数vigetattribute(ctx,vi_attr_ recv_trig_id,&trigid);file:/得到触发idswitch(trigid)case vi_trig_ttl0: file:/推断是否ttl0的触发vipeek16(vi,addr,break;.通过在程序中调用上面的senddata函数可以实现一个unsigned short型数据的传递。当需要传递多个数据时,建议用法结构体定义要传递的数据。结 语本文通过对vxi分享存储器通信和处理大事机制的介绍,阐述了如何在win

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论