Дипломная работа: Разработка программного обеспечения для голосового управления трехмерными моделями функционирования промышленных роботов
void
BuildFormat(PCMWAVEFORMAT& fmt, DWORD dwFormat); protected:
virtual void
DoDataExchange(CDataExchange* pDX);
virtual BOOL OnlnitDialogO;
afxmsg void
OnSelchangeFormat();
afxmsg void
OnClickedPlay();
afxjmsg void
OnClickedRecordO;
afxmsg void
OnClickedStop();
afxmsg void
OnSelchangeSource();
virtual void OnCancel();
virtual void OnOK();
afxmsg void
OnDrawItem(int nlDCtl, LPDRAW1TEMSTRUCT IpDrawItemStruct); afxmsg void
OnMeasureItem(int rJDCtl, LPMEASUREITEMSTRUCT IpMeasureltemStruct); afxmsg void
OnClickedOpenData(); afxmsg void OnUpdate();
afxmsg void
OnHScroll(UTNT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnGraphicQ;
afxmsg void OnHamming();
afxmsg void OnFilterQ;
afxmsg void OnFurjeQ;
afx_msg void
OnObrfurje();
afxmsg void OnClip();
DECLARE_MESSAGE_MAP()};
class CGraphicDlg: public
CDialog
{public:
CWaveOutDevice* mjOutDev;
CGraphicDlg(CWnd* pParent = NULL); enum { IDD = IDD GRAPHIC };
protected:
virtual void DoDataExchange(CDataExchange* pDX);
protected:
afxmsg void OnGraphicQ;
DECLAREMESS AGE_MAP()}; class CHammingDlg: public CDialog {public:
CWaveOutDevice*
m_pOutDev; CHammingDlg(CWnd* pParent = NULL); enum {IDD = IDD HAMMING };
protected:
virtual void DoDataExchange(CDataExchange* pDX);
protected:
afxmsg void OnHammingO;
DECLAREMESSAGEMAPO); class CFurjeDlg. public CDialog {public:
CWaveOutDevice*
m_pOutDev; CFurjeDlg(CWnd* pParent = NULL); enum {IDD = IDDFURJE }; protected:
virtual void DoDataExchange(CDataExchange* pDX);
protected:
afxmsg void OnFurjeO;
DECLAREMESSAGEMAPO}; class CObrFurjeDlg: public CDialog {public:
CWaveOutDevice*
m_pOutDev; CObrFurjeDlg(CWnd* pParent = NULL); enum { IDD = IDD OBRFURJE };
protected:
virtual void DoDataExchange(CDataExchange* pDX);
protected:
afxmsg void OnObrfurje();
DECLAREMESSAGEMAPO}; class CClipDlg. public CDialog {public:
CWaveOutDevice*
m_pOutDev; CClipDlg(CWnd* pParent = NULL); enum { IDD = EDDCLIP }; protected:
virtual void DoDataExchange(CDataExchange* pDX);
ON_BN_CLICKED(IDC_GRAPHIC,
OnGraphic) ON_BN_CLICKED(IDC_HAMMrNG, OnHamming) ON_BN_CLICKED(IDC_FILTER OnFilter) ON_BN_CLICKED(IDC_FURJE, OnFurje) ON_BN_CLICKED(IDC_OBRFURJE, OnObrfurje)
ON_BN_CLICKED(IDC_CLIP, OnClip) END_MESSAGE_MAP() BOOL
CRecordDlg::OnInitDialog()
void CRecordDlg::OnSelchangeFormatO
{OnClickedStopO;}
void CRecordDlg::OnClickedPIayO
{SetMode(PLAYING);
CClientDCdc(this);}
void CRecordDlg.
OnClickedRecordO
{ SetMode(RECORDLNG);}
void CRecordDlg.
OnClickedStopO
{SetMode(S AMPLING);}
void CRecordDlg::OnSelchangeSource()
{OnClickedStopO;
FillFormatListO;}
void CRecordDlg::OnCancelO
{ OnClickedStopO;
SetMode(IDLE);
mVU.DestroyWindowO;
if (m_pWave) {delete
m_pWave;
m_pWave = NULL;}
CDialog::OnCancel();}
void CRecordDlg. OnOKO
{ OnClickedStopO;
SetMode(IDLE);
mVU.DestroyWindowO;
CDialog::OnOK();}
void
CRecordDlg::FillDeviceList()
{miNumDevs =
wavelnGetNumDevsO;
if (miNumDevs == 0) {
AfxMessageBox("There
are no suitable input devices");
EndDialog(IDCANCEL);
return;}
if (m_pDevCaps) delete
m_pDevCaps;
m_pDevCaps = new
WAVEINCAPSfmiNumDevs];
m_cbSource.ResetContent();
for (int i=0; KmiNumDevs;
i++) {
waveInGetDevCaps(i,&m_pDevCaps[i],sizeof(WAVEINCAPS));
m_pDevCaps[i].wMid = i;
m_cbSource.AddString((LPCSTR)&m_pDevCaps[i]);}
mcbSource. SetCurSel(0);}
void CRecordDlg.:FillFormatList()
{
mcbFormat.ResetContentO;
int iSel =
m_cbSource.GetCurSel();
if(iSel = CBERR) return;
WAVEINCAPS* pCaps =
(WAVEINCAPS*) m_cbSource.GetItemData(iSel);
ASSERT(pCaps);
DWORD dwMask =
0x00000001;
for(inti=0; i<12; i++)
{
if (pCaps->dwFormats
& dwMask) {
m_cbFormat.AddString((LPCSTR)dwMask);}
dwMask = dwMask « 1; }
mcbFormat. SetCurSel(O);}
void CRecordDlg.OnDrawItem(int
nlDCtl, LPDRAWITEMSTRUCT pDI) {char* pszText = NULL; switch (nlDCtl) { case
IDC_SOURCE: {
WAVEINCAPS* pCaps =
(WAVEINCAPS*)(pDI->itemData); pszText = pCaps->szPname; } break;
case IDC FORMAT: {
switch(pDI->itemData) { case WAVE_FORMAT_1M08: pszText = "11.025 kHz, 8
bit, mono"; break;
case WAVE_FORMAT_1S08:
pszText = "11.025 kHz, 8 bit, stereo"; break;
case WAVE_FORMAT_lM16:
pszText = "11.025 kHz, 16 bit, mono"; break;
case WAVE_F0RMAT_1S16.
pszText = "22.05 kHz, 16 bit, stereo"; break;
case WAVE_FORMAT_2M08:
pszText = "22.05 kHz, 8 bit, mono"; break;
case WAVE_FORMAT_2S08:
pszText = "22.05 kHz, 8 bit, stereo"; break;
case WAVE_FORMAT_2M16:
pszText = "22.05 kHz, 16 bit, mono"; break;
case WAVEJFORMATJ2S16.
pszText = "22.05 kHz, 16 bit, stereo"; break;
case WAVEJ?ORMAT_4M08:
pszText = "44.1 kHz, 8 bit, mono"; break;
case WAVE_FORMAT_4S08:
pszText = "44.1 kHz, 8 bit, stereo"; break;
case WAVE_FORMAT_4M16:
pszText = "44.1 kHz, 16 bit, mono"; break;
case WAVE_FORMAT_4S16:
pszText = "44.1 kHz,
16 bit, stereo";
break; default:
pszText =
"Unknown";
break;} } break; default:
break;} if (IpszText)
return;
: ^rawTextCpDI^hDC^szText.-L&CpDI^rcItem),
DTLEFT | DTVCENTER); if (pDI->itemState & ODSSELECTED) {
::InvertRect(pDI->hDC,
&(pDI->rcItem));} if (PDI->itemState & ODS_FOCUS) {
::DrawFocusRect(pDI->hDC,
&(pDI->rdtem)); }}
void CRecordDlg::OnMeasureItem(int ruDCtl,
LPMEASUREITEMSTRUCT lpMeasureltemStruct) { CClientDC dc (this);
TEXTMETRIC tm;
dc.
GetTextMetrics(&tm);
lpMeasureItemStruct->itemHeight
= tm.tmHeight;} void CRecordDlg::SetMode(MODE m) { CClientDC dc(this); if (m =
miMode) return; if (m_pWave) m_pWave->Stop(); switch (miMode) {case
SAMPLING: case RECORDING: mlnDev.ResetO; m_InDev.Close(); break; case PLAYING:
break;
case OPEN:
break;}
miMode = IDLE;
switch (m) {case
SAMPLING:
f case RECORDING.
{int iSel = m_cbSource.GetCurSel(); if(iSel =
CBERR) return;
WAVEINCAPS* pCaps = (WAVEINCAPS*)
m_cbSource.GetItemData(iSeI);
ASSERT(pCaps);
UINT uiBD = pCaps->wMid;
iSel = m_cbFormat.GetCurSel();
if(iSel == CBERR) return;
DWORD dwFormat = mcbFormat.GetltemData(iSel);
ASSERT(dwFormat);
PCMWAVEFORMAT fmt;
BuildFormat(fmt, dwFormat);
if (!m_InDev.Open(uiID, &fmt)) return;
if (m = SAMPLING) {
mSampleWave.DeleteAllO;
mSampleWave.
Create(&frnt);
m_SampleWave.Record(&m_InDev,
1024,&m_NotifyObj); } else if (m — RECORDING) { if (!m_pWave) m_pWave = new
CWave; ASSERT(m_pWave); mjpWave->Create(&fmt);
m_pWave->Record(&mJnDev,4096,&m_NotifyObj);}
case PLAYING, if
(m_pWave) m_pWave->Play(NULL, &m_NotifyObj); break;
case OPEN.
if (m_pWave)
m_pWave->OpenData(NULL, &m_NotifyObj,&dc); break;} miMode = m,
if ((mjMode = PLAYING) ||
(mjMode = RECORDING)! |(m_iMode btnStop.EnableWindow(TRUE);
} else
{m_btnStop.EnableWindow(FALSE);}
if (mjMode = PLAYING) { m_btnPlay.EnableWindow(FALSE);
} else {mbtnPlay.EnableWindow(TRUE);}
if (m_iMode = OPEN)
{mbtnOpenData.EnableWindow(FALSE); } else {mbtnOpenData.EnableWindow(TRUE);} if
(mjMode = RECORDING) {m_btnRecord.EnableWindow(FALSE); } else {m_btnRecord.EnableWindow(TRUE);}}
void CRecordDlg::NewData(CWave *pWave, CWaveBlock* pBlock) { ASSERT(pWave);
ASSERT(pBlock);
PCMWAVEFORMAT* pwf =
(PCMWAVEFORMAT*) pWave->GetFormat(); ASSERT(pwf->wf.wFormatTag =
WAVEFORMATPCM); int iCount = pBlock->GefNumSamples(); if
(pwf->wBitsPerSample = 8) {
BYTE* pData =
(BYTE*)pBlock->GetSamplesO; BYTE bMax - 0; while (iCount—) {
if (*pData > bMax)
bMax = *pData; pData++;}
if (bMax < 128) { bMax
= 0;} else {bMax -= 128;} m_VU.SetValue(bMax « 8, bMax « 8); } else {ASSERT(sizeof(short
int) = 2); short int* pData = (short int*) pBlock->GetSamples(); int iMax =
0;
while (iCount—) {if
(*pData > iMax) iMax = *pData;
pData++;}
m_VU.SetValue(iMax, iMax);} if(m_iMode!= RECORDING) {
pWave->GetBlockList()->FreeAll();}} void CRecordDlg::EndPlayback(CWave
*pWave) { ASSERT(pWave); SetMode(SAMPLjrNG);}
void
CRecordDlg::BuildFormat(PCMWAVEFORMAT& fmt, DWORD dwFormat) { ASSERT(dwFormat);
fmt.wf.wFormatTag = WAVEFORMATPCM; switch (dwFormat) { case WAVE_FORMAT_1M08:
fmt.wf.nChannels = 1; rmtwf.nSamplesPerSec = 11025; fmtwBitsPerSample = 8;
break;
case WAVE_F0RMAT_1M16:
fmt.wf.nChannels = 1; fmt.wf.nSamplesPerSec = 11025; fmt.wBitsPerSample = 16;
break;
case WAVE_FORMAT_1S08:
fmt.wf.nChannels = 2; fmt.wf.nSamplesPerSec = 11025; fmt.wBitsPerSample = 8;
break;
case WAVE_F0RMAT_1S16:
fmt.wf.nChannels = 2; fmtwf.nSamplesPerSec = 11025; fmt.wBitsPerSample = 16;
break;
case WAVE_FORMAT_2M08:
fmt.wf.nChannels = 1; fmt.wf.nSamplesPerSec = 22050; fmt.wBitsPerSample = 8;
break;
case WAVE FORMAT 2M16 fmt.wf.nChannels
= 1; fmt.wf.nSamplesPerSec = 22050; fmt.wBitsPerSample = 16; break;
case WAVE_FORMAT_2S08:
fmt.wf.nChannels = 2; fmt.wf.nSamplesPerSec = 22050; fmt.wBitsPerSample = 8;
break;
case WAVE_FORMAT_2S16:
fmt.wfnChannels = 2; fmt.wf.nSamplesPerSec = 22050;
fmt.wBitsPerSatnple = 16; break;
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 |