新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 射击模拟训练器激光靶设计

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

作者:时间:2012-03-30来源:网络收藏

m_CommDpj.SetRThreshold(10);//设置OnComm事件的响应

m_Opened=m_CommDpj.SetPortOpen(m_Port);// 打开指定的串口

打开所需串口后,使用OnComm事件和CommEvent属性捕捉并检查通信事件和错误的值。发生通信事件或错误时将触发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);
---
}

模拟信号相关文章:什么是模拟信号


脉宽调制相关文章:脉宽调制原理
激光器相关文章:激光器原理


评论


相关推荐

技术专区

关闭