毕业论文
计算机论文
经济论文
生物论文
数学论文
物理论文
机械论文
新闻传播论文
音乐舞蹈论文
法学论文
文学论文
材料科学
英语论文
日语论文
化学论文
自动化
管理论文
艺术论文
会计论文
土木工程
电子通信
食品科学
教学论文
医学论文
体育论文
论文下载
研究现状
任务书
开题报告
外文文献翻译
文献综述
范文
基于VXI总线枪弹杀伤力测试系统应用程序开发(13)
编辑好此面板,在.c文件中生成函数框架的基础上,需要添加代码,实现函数功能。根据函数输入的控件状态值,结合控件状态及硬件中操作寄存器相应位的关系,将状态值转化。可以先将各个控件值进行转化,然后进行逻辑或运算。例如将时基的控件值进行转化的代码如下:
switch (shiji)
{// D9 D8 D7
case 0:shiji=(0x0380|0x0000);break; //0000 0011 1000 0000 5us
case 1:shiji=(0x0300|0x0000);break; //0000 0011 0000 0000 2us
case 2:shiji=(0x0280|0x0000);break; //0000 0010 1000 0000 1us
case 3:shiji=(0x0200|0x0000);break; //0000 0010 0000 0000 0.5us
case 4:shiji=(0x0180|0x0000);break; //0000 0001 1000 0000 0.2us
case 5:shiji=(0x0100|0x0000);break; //0000 0001 0000 0000 0.1us
case 6:shiji=(0x0080|0x0000);break; //0000 0000 1000 0000 0.05us
case 7:shiji=(0x0000|0x0000);break; //0000 0000 0000 0000 0.025us
default:shiji=(0x0380|0x0000);break;
}
然后在应用函数(Application Functions)中添加应用函数供上层应用函数调用。
因本测试模块涉及到写操作寄存器操作、写控制寄存器操作、个数寄存器读取操作,所以针对这三个操作添加写操作寄存器函数Write_OperateREG、写控制寄存器函数Write_ControlREG、读个数寄存器函数Read_GeshuReg,另外添加了模块初始化函数CSY_INIT,用于实现对仪器中测试相关的各参数初始值的设置,此外,上位机需要对硬件模块存储器中的数据进行读取,所以另外设计了数据读取函数,考虑到使用者的不同需求,设计了三个功能略有区别的数据读取函数READ_DATA、READ_DATA zhu和READ_DATA fu,下面分别进行介绍。
3.2.3 对写操作寄存器及写控制寄存器添加函数
Write_OperateREG函数的原型为ViStatus _VI_FUNC CSY_WRITE_OperateREG (ViSession vi, ViInt16 zhuangtai_in),其中vi为仪器的句柄,zhuangtai_in为输入参数,提供将要写入操作寄存器的表示控件状态的二进制数值。此函数可以使用上述的属性设置函数代替,同样可以将数据zhuangtai_in写入寄存器,即Ivi_SetAttributeViInt32 (vi, "",CSY_ATTR_OperateREG, 0, zhuangtai_in)。但属性获得函数一般供IVI驱动器中的其它函数调用,而此函数可以直接被上层应用函数调用。
此函数中操作寄存器写操作的实现使用的是VISA资源管理中的特定资源操作函数。在VISA特定资源的操作类中包含了消息基
通信
函数和寄存器基通信函数。因为本测速模块是基于寄存器基的仪器,不能对收到的信息进行解释,所以只能在了解仪器内部寄存器定义及地址分配的情况下,对寄存器直接进行编程。
VISA为寄存器数据传输提供了高级存取(High-Lever Access)和低级存取(Low-Lever Access)两类函数。使用低级存取的方法虽然速度快,但是必须首先使用viMapAddress函数进行寄存器地址映射,将VXI硬件寄存器映射到程序的地址空间,数据传输完成后要使用viUnmapAddress解除地址映射,以释放内存资源。所以此处使用高级存取函数viIn16()及viOut16()。
应该注意的是,尽管IVI资源管理是通过VISA的资源管理间接实现的,但是这里的IVI通信句柄与VISA中的通信句柄不同,如果要使用VISA的通信函数,则可以通过Ivi_GetAttributeViSession或者Ivi_IOSession函数获取IVI通信句柄内在的VISA资源管理句柄或仪器通信句柄,而不能直接使用IVI通信句柄。另外,虽然两个函数都可以获得内在的VISA通信句柄,但是两者存在一些差别,Ivi_GetAttributeViSession函数在获得句柄的同时会锁定此句柄对应的仪器资源,在操作完成后应释放资源。例如语句Ivi_GetAttributeViSession (vi, VI_NULL, IVI_ATTR_IO_SESSION, 0, &io)将获取的句柄赋值给io,io即为IVI通信句柄内在的VISA仪器通信句柄,当操作完成后使用函数Ivi_UnlockSession(vi, VI_NULL)解除对仪器的锁定;Ivi_IOSession也可以获得通信句柄,且速度较快,但是它并不对仪器进行锁定,所以使用此函数的前提是要进行操作的仪器已经被锁定,当操作完成后同样需要对仪器进行解锁。可以使用函数Ivi_LockSession (vi, VI_NULL)对IVI通信句柄为vi的仪器进行锁定,同样使用Ivi_UnlockSession函数进行解锁。
共14页:
上一页
1
2
3
4
5
6
7
8
9
10
11
12
13
14
下一页
上一篇:
卷绕式真空镀膜机卷绕系统结构设计+CAD图纸
下一篇:
SolidWorks交通路锥自动输送机构设计+文献综述
基于网络技术的转向架应力监测与评估
多层次总线下的煤矿安检...
RS-485总线的理论与实践【2945字】
profibus现场总线茬筛贮焦生...
基于ANSYS的螺纹连接受力与变形分析
基于3DMAX绞吸式挖泥船的动作仿真
基于轮-履变结构的轮椅式...
医院财务风险因素分析及管理措施【2367字】
C#学校科研管理系统的设计
神经外科重症监护病房患...
国内外图像分割技术研究现状
公寓空调设计任务书
志愿者活动的调查问卷表
中国学术生态细节考察《...
AT89C52单片机的超声波测距...
10万元能开儿童乐园吗,我...
承德市事业单位档案管理...