基于VXI总线枪弹杀伤力测试系统应用程序开发(8)
时间:2017-01-07 17:00 来源:毕业论文 作者:毕业论文 点击:次
(1)子面板载入及清零 若是第一次进行测量,需要载入各弹丸速度列表子面板和速度查询列表子面板以及直方图显示子面板,但是此时只是载入并不显示,在测试完毕后,根据用户要求各自显示;如果不是第一次测量,因上次测量时各列表中可能已经存在了一组数据,此时重新载入,起到清零的作用。对于面板上的弹丸速度显示图形控件,进行图像清除,为下次图像的显示做准备。 使用清除图形函数 DeleteGraphPlot(panelHandle,PANEL_GRAPH,-1,VAL_IMMEDIATE_DRAW)。 另外将操作寄存器清零并向控制寄存器D7发出清零信号(高电平清零),将FPGA中的计数等各模块清零。此处调用在VXI模块中制作好的IVI驱动程序中的控制寄存器写函数,代码如下: CSY_WRITE_OperateREG (vi, 0x 0000); CSY_WRITE_ControlREG (vi, 0x 0080); CSY_WRITE_ControlREG (vi, 0x0000); 另外,还要在测试前对数据处理所涉及的参数、数组进行清零,确保数据处理的正确性。 (2)本次测试状态参数的发送 测试状态参数包含:计数基频、测试种类、区截装置以及相关存储器的读写控制信号等。 首先定义测试状态变量“zhuangtai”,数据类型为ViUInt16。使用“获取控件值”函数GetCtrlVal()读取控件值,然后根据控件值及其相对应的操作寄存器的数据位定义来设置zhuangtai相关位的值。例如当“区截装置”控件值为‘0’时,表示此次测量使用的是光电靶,操作寄存器中D12位实现根据靶信号的类型选择调理电路,而当D12给出‘0’信号时选通的调理电路对应光电靶,所以此时zhuangtai的第12位应为‘0’,即“xx0x xxxx xxxx xxxx”,因此处针对第12位讨论,其余位用‘x’表示;而当“区截装置”控件值为‘1’时,表示此次测量使用的是通断靶或者天幕靶,这时操作寄存器的D12位应给出‘1’信号,所以zhunagtai的第12位给出‘1’信号,即“xx1x xxxx xxxx xxxx”。同样道理,操作寄存器的D7、D8、D9三位完成计数基频的选择。根据这三位数据与基频的关系,当“计数基频”控件值为‘0’(对应基频为0.2MHz)时,zhuangtai的第7、8、9位分别为“111”,即zhuangtai为“xxxx xx11 1xxx xxxx”;当“计数基频”控件值为‘1’(对应基频为0.5MHz)时,zhuangtai为“xxxx xx11 0xxx xxxx”。其余情况依次类推。另外在测量开始时应给出主、辅存储器片选信号(zhuangtai的第0位和第13位),选通存储器,但是此时既不允许读也不允许写。另外此时并不需要读取首发时间间隔T,所以第6为给出‘0’信号。 依次将测试状态变量zhuangtai的各位设置好以后,使用已有的IVI中的写操作寄器函数,将其发送到操作寄存器中,语句如下: CSY_WRITE_OperateREG (vi, zhuangta); 也可以使用“获取控件值”函数GetCtrlVal()读取各控件值后,使用IVI驱动器中编制好的状态转换函数Get_zhuangtai进行转换,然后写入。例如: GetCtrlVal (panelHandle, PANEL_QUJIE, &a); GetCtrlVal (panelHandle, PANEL_ SHIJI, &b); GetCtrlVal (panelHandle, PANEL _ZHONGLEI, &c); CSY_GET_ zhuangtai (vi, a, b, c, &zhuangtai); CSY_WRITE_ OperateREG (vi, zhuangtai); (3)“开始测量”按钮按下,完成上述的清零及向操作寄存器的指令发送后,就开始进行对弹丸过靶时间的测量。下一步需要进行数据的处理及显示,即“数据显示”按钮所对应的程序模块,所以在参数设置完毕后,应使能“显示数据”按钮,并点绿此按钮右侧的LED灯,同时将“靶间距离”、“区截装置”、“时间基准”等按钮锁定,即在此次测量过程中不准对其进行修改。完成这些功能的函数在“系统复位”部分已经提及,此处不再赘述。 (责任编辑:qin) |