新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 射擊模擬訓(xùn)練器激光靶設(shè)計(jì)

射擊模擬訓(xùn)練器激光靶設(shè)計(jì)

作者: 時(shí)間:2012-03-30 來(lái)源:網(wǎng)絡(luò) 收藏

m_CommDpj.SetRThreshold(10);//設(shè)置OnComm事件的響應(yīng)

m_Opened=m_CommDpj.SetPortOpen(m_Port);// 打開(kāi)指定的串口

打開(kāi)所需串口后,使用OnComm事件和CommEvent屬性捕捉并檢查通信事件和錯(cuò)誤的值。發(fā)生通信事件或錯(cuò)誤時(shí)將觸發(fā)OnComm事件,CommEvent屬性的值將被改變,應(yīng)用程序通過(guò)檢查CommEvent屬性值并作出相應(yīng)的反應(yīng)。以下為OnComm事件的源代碼:
VARIANT m_input1;
COleSafeArray m_input2;
long length,i;
if(m_CommDpj.GetCommEvent()==2)//接收緩沖區(qū)內(nèi)有字符
{
m_input1=m_CommDpj.GetInput();//讀取緩沖區(qū)內(nèi)的數(shù)據(jù)
m_input2=m_input1;//將VARIANT型變量轉(zhuǎn)換為ColeSafeArray型變量
length=m_input2.GetOneDimSize();//確定數(shù)據(jù)長(zhǎng)度
for(i=0;ilength;i++)
m_input2.GetElement(i,m_Data+i);//將數(shù)據(jù)轉(zhuǎn)換為BYTE型數(shù)組
FromDpj();//進(jìn)行事件處理
DpjLock=false;
}

4.4 數(shù)據(jù)文件的生成

數(shù)據(jù)文件才文本形式進(jìn)行存儲(chǔ)。在數(shù)據(jù)文檔中建立如下結(jié)構(gòu)體:
struct ShotData{
unsigned int m_uNum;//編號(hào)
unsigned int m_uSNum;//站號(hào)
unsigned int m_uPlot;//點(diǎn)
CTime m_Curtime;//當(dāng)前時(shí)間};

數(shù)據(jù)記錄的源代碼如下:
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(文件保存失敗!);
}

實(shí)時(shí)記錄函數(shù):
{
---
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);
---
}

模擬信號(hào)相關(guān)文章:什么是模擬信號(hào)


脈寬調(diào)制相關(guān)文章:脈寬調(diào)制原理
激光器相關(guān)文章:激光器原理


評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉