微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 射击模拟训练器激光靶设计

射击模拟训练器激光靶设计

时间:03-30 来源:互联网 点击:

件或错误时将触发OnComm事件,CommEvent属性的值将被改变,应用程序通过检查CommEvent属性值并作出相应的反应。以下为OnComm事件的源代码:
VARIANT m_input1;
COleSafeArray m_input2;
long length,i;
if(m_CommDpj.GetCommEvent()==2)//接收缓冲区内有字符
{
m_input1=m_CommDpj.GetInput();//读取缓冲区内的数据
m_input2=m_input1;//将VARIANT型变量转换为ColeSafeArray型变量
length=m_input2.GetOneDimSize();//确定数据长度
for(i=0;ilength;i++)
m_input2.GetElement(i,m_Data+i);//将数据转换为BYTE型数组
FromDpj();//进行事件处理
DpjLock=false;
}

4.4 数据文件的生成

数据文件才文本形式进行存储。在数据文档中建立如下结构体:
struct ShotData{
unsigned int m_uNum;//编号
unsigned int m_uSNum;//站号
unsigned int m_uPlot;//射击点
CTime m_Curtime;//当前时间};

数据记录的源代码如下:
void CJGBDoc::GetFileName()//获取记录文件名
{
CString m_str;
GetCurrentDirectory(128,m_str.GetBuffer(128));
m_str.ReleaseBuffer(-1);
CFileDialog dlg(false,Txt,m_str+\*.Txt,NULL,记录文件(*.Txt));
if(dlg.DoModal()==IDOK)
{
if(file.Open(dlg.GetPathName(),CFile::modeRead)!=0)
{
if(AfxMessageBox(文件已存在,是否覆盖?,MB_YESNO)==IDNO)
{
AfxMessageBox(文件保存失败!);
return;
}
file.Close();
}
if(file.Open(dlg.GetPathName(),CFile::modeWrite|CFile::modeCreate)==0)
{
AfxMessageBox(文件保存失败!);
}
}
else
AfxMessageBox(文件保存失败!);
}

实时记录函数:
{
---
CString m_record;
m_record.Format(%d,%d,%d,%s,m_pDoc-> ShotData.m_uNum,
m_pDoc-> ShotData.m_uNum, m_pDoc-> ShotData.m_uNum
m_pDoc-> ShotData.m_CurTime.Format (%y-%m-%d %H:%M:%S));
file.Write(m_record);
---
}

5、结论

激光靶研制出样机后,与模拟射击训练用手枪进行了联调,试验表明,激光靶设计合理,满足设计技术指标要求,工作稳定可靠。通过采用模拟射击训练,一方面可以降低训练成本,另一方面也可消除意外事故,因此模拟射击训练器有很好的应用前景。

参考文献
[1] 王福瑞. 单片微机测控系统设计大全.北京航空航天大学出版社,1998.4
[2] 李大友.微型机算计接口技术.清华大学出版社,1998.5
[3] David J.Kruglinski,Scot Wingo,George Shepherd ,Programming Visual C++ 6.0技术内幕
1999.5

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top