菜单
  

    编辑好此面板,在.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函数进行解锁。
  1. 上一篇:卷绕式真空镀膜机卷绕系统结构设计+CAD图纸
  2. 下一篇:SolidWorks交通路锥自动输送机构设计+文献综述
  1. CAN总线引信装定数据多协...

  2. 基于示功图的自由活塞发动机燃烧过程分析

  3. 基于热力学模型的发动机转矩波动仿真研究

  4. 基于K装药的双层药型罩设计

  5. BLE基于RSSI的无线定位

  6. 基于极差和方差分析的含...

  7. 基于NX/PTS和MoldWizard的齿轮...

  8. 当代大学生慈善意识研究+文献综述

  9. 电站锅炉暖风器设计任务书

  10. 河岸冲刷和泥沙淤积的监测国内外研究现状

  11. 中考体育项目与体育教学合理结合的研究

  12. 酸性水汽提装置总汽提塔设计+CAD图纸

  13. 大众媒体对公共政策制定的影响

  14. java+mysql车辆管理系统的设计+源代码

  15. 十二层带中心支撑钢结构...

  16. 杂拟谷盗体内共生菌沃尔...

  17. 乳业同业并购式全产业链...

  

About

751论文网手机版...

主页:http://www.751com.cn

关闭返回