}
其中,panel为各弹丸速度列表子面板的变量名;geshu为弹丸个数,用来控制表的行数;PANEL_sudu为表控件的变量名;MakePoint(1,i)函数将第一列第i行表单元内赋值v[i]。
各弹丸速度除了在列表中显示,还会在图形中更加直观的显示。图形使用弹丸个数做横坐标,弹丸速度做纵坐标,绘出弹丸的速度图形。因为每次测量时的弹丸个数并不相同,所以并不将横坐标设置为定值,而是每次根据弹丸个数进行设置。因弹丸速度是离散的,所以画出离散图。核心代码如下:
xmax=geshu+1; // geshu为弹丸个数
SetAxisScalingMode (panelHandle,PANEL_GRAPH,VAL_XAXIS,VAL_MANUAL,1, xmax); // 设置横坐标长度
PlotRectangle (panelHandle, PANEL_GRAPH_HT, i+1-0.05, ymin, i+1+0.05,d[i], VAL_RED, VAL_RED); // 画离散图
用图形控件显示连发弹丸速度分布离散图如图3-10所示,以及弹丸速度列表如图3-11所示。由速度值,调用动能公式(4.5.1)和比动能公式(4.5.2)得到枪弹杀伤力测试数据如图3-12所示。
图3-10 连发弹丸速度分布图 图3-11 弹丸速度列表 图3-12 枪弹杀伤力测试所得数据
3.1.5 存储数据
因为存在硬件存储器中的本次测量数据在下一次测量前将被清零,所以要将已经转换为速度的数据存储到计算机上,一方面将数据保留以供下次查看,另一方面提供进一步使用高级数据处理软件进行数据处理时使用。例如存储的数据文件可以被MATLAB调用,进一步处理,也正因为存储的数据可以使用高级数据处理软件进行处理,在CVI程序中才只是计算出弹丸速度,给出平均速度并侧重于各种图形显示,而不是复杂的数据处理。如下图3-11所示为选择文件存储的用户界面函数库。图3-12为试验所测得的20发连发弹丸速度值的存盘数据。
图3-11 选择文件存储的函数面板
图3-12 枪弹测试数据储存至TXT文档
数据存储程序核心代码如下:
err=FileSelectPopup("", "*.dat", "", "记录数据", VAL_OK_BUTTON,0, 1, 1, 0, filename);
if (err==0) break; // 错处则跳出程序,否则打开文
else fp = OpenFile (filename, VAL_WRITE_ONLY, VAL_APPEND, VAL_ASCII);
for (i=1; i<10&&i<=geshu; i++)
{
FmtFile (fp, "第%d号 ", I ); // 向文件输出弹丸编号
FmtFile (fp, "%f", v[i]);
FmtFile (fp, "\n" );
}
、、、、、、
FmtFile (fp, "平均速度为:%f ",sum_v ); // 输出每个弹丸的平均速度
FmtFile (fp, "\n" );
CloseFile (fp ); // 关闭文件句柄
首先跳出设置存储文件名窗口,使用者输入文件名后,打开选中文件(即输入的文件名命名的文件),并建立文件句柄。此后就可以向文件中写入数据,此处设置存储的文件格式如下: 基于VXI总线枪弹杀伤力测试系统应用程序开发(11):http://www.751com.cn/jixie/lunwen_1973.html