1. 程式人生 > >一套基於模板匹配的語音識別技術 提取語音的特征,並建立模板庫 可以將語音識別技術應用於機器人

一套基於模板匹配的語音識別技術 提取語音的特征,並建立模板庫 可以將語音識別技術應用於機器人

not bitblt switch uil terminal dia process ack context

  1. 視圖類,廢話少說,看看帶註釋的源碼
  2. #include "stdafx.h"
  3. #include "robot.h"
  4. #include"Label.h"
  5. #include "robotDoc.h"
  6. #include "robotView.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CRobotView
  14. IMPLEMENT_DYNCREATE(CRobotView, CFormView)
  15. BEGIN_MESSAGE_MAP(CRobotView, CFormView)
  16. //{{AFX_MSG_MAP(CRobotView)
  17. ON_WM_CTLCOLOR()
  18. ON_WM_TIMER()
  19. //}}AFX_MSG_MAP
  20. ON_MESSAGE(WM_COMMNOTIFY, OnCommNotify)
  21. END_MESSAGE_MAP()
  22. /////////////////////////////////////////////////////////////////////////////
  23. // CRobotView construction/destruction
  24. CRobotView::CRobotView()
  25. : CFormView(CRobotView::IDD)
  26. {
  27. //{{AFX_DATA_INIT(CRobotView)
  28. //}}AFX_DATA_INIT
  29. // TODO: add construction code here
  30. m_ncomand1=10;
  31. m_bflag=0;
  32. m_nsudu=1;
  33. m_ngzq=0;
  34. m_nguanjie;
  35. m_nfangxiang;
  36. m_nmsg[0]=0;
  37. m_njishu=0;
  38. m_nmsg[1]=0;
  39. m_nmsg[2]=0;
  40. m_nmsg[3]=0;
  41. m_nmsg[4]=0;
  42. m_nsum=0;
  43. m_ndelay=0;
  44. nLength=0;
  45. m_recflag=1;
  46. m_failflag=1;
  47. m_brush.CreateSolidBrush(RGB(40,98,122)); // 生成一綠色刷子
  48. }
  49. CRobotView::~CRobotView()
  50. {
  51. }
  52. void CRobotView::DoDataExchange(CDataExchange* pDX)
  53. {
  54. CFormView::DoDataExchange(pDX);
  55. //{{AFX_DATA_MAP(CRobotView)
  56. //DDX_Control(pDX, IDC_EDIT1, m_edit1);
  57. DDX_Control(pDX, IDC_STATIC_LINK, m_link);
  58. DDX_Control(pDX, IDC_STATIC_1, m_ml);
  59. DDX_Control(pDX, IDC_STATIC_4, m_workpart);
  60. DDX_Control(pDX, IDC_STATIC_COMMAND, m_command);
  61. DDX_Control(pDX, IDC_STATIC_STATUS, m_static);
  62. DDX_Control(pDX, IDC_STATIC_BUCHANG, m_buchangshu);
  63. DDX_Control(pDX, IDC_STATIC_5, m_buchang);
  64. DDX_Control(pDX, IDC_STATIC_3, m_sudu);
  65. DDX_Control(pDX, IDC_STATIC_2, m_zhuangtai);
  66. //}}AFX_DATA_MAP
  67. }
  68. BOOL CRobotView::PreCreateWindow(CREATESTRUCT& cs)
  69. {
  70. // TODO: Modify the Window class or styles here by modifying
  71. // the CREATESTRUCT cs
  72. return CFormView::PreCreateWindow(cs);
  73. }
  74. /////////////////////////////////////////////////////////////////////////////
  75. // CRobotView diagnostics
  76. #ifdef _DEBUG
  77. void CRobotView::AssertValid() const
  78. {
  79. CFormView::AssertValid();
  80. }
  81. void CRobotView::Dump(CDumpContext& dc) const
  82. {
  83. CFormView::Dump(dc);
  84. }
  85. CRobotDoc* CRobotView::GetDocument() // non-debug version is inline
  86. {
  87. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CRobotDoc)));
  88. return (CRobotDoc*)m_pDocument;
  89. }
  90. #endif //_DEBUG
  91. /////////////////////////////////////////////////////////////////////////////
  92. // CRobotView message handlers
  93. void CRobotView::OnDraw(CDC* pDC)
  94. {
  95. // TODO: Add your specialized code here and/or call the base class
  96. SuduDisplay(m_nsudu);
  97. GzqDisplay(m_ngzq);
  98. }
  99. void CRobotView::OnInitialUpdate()
  100. {
  101. CFormView::OnInitialUpdate();
  102. // TODO: Add your specialized code here and/or call the base class
  103. m_link.SetLink(TRUE)
  104. .SetTextColor(RGB(0,0,255))
  105. .SetFontUnderline(TRUE)
  106. .SetLinkCursor(AfxGetApp()->LoadCursor(IDC_ICON1));
  107. m_command.SetFontSize(24)
  108. .SetFontName("Terminal")
  109. .SetTextColor(RGB(240,240,40));
  110. m_static.SetFontSize(24)
  111. .SetTextColor(RGB(240,240,40));
  112. m_workpart.SetFontSize(24)
  113. .SetFontBold(TRUE)
  114. .SetTextColor(RGB(0,240,0));
  115. m_buchangshu.SetFontSize(24)
  116. .SetTextColor(RGB(240,240,40));
  117. m_buchang.SetFontSize(24)
  118. .SetFontBold(TRUE)
  119. .SetTextColor(RGB(0,240,0));
  120. m_sudu.SetFontSize(24)
  121. .SetFontBold(TRUE)
  122. .SetTextColor(RGB(0,240,0));
  123. m_zhuangtai.SetFontSize(24)
  124. .SetFontBold(TRUE)
  125. .SetTextColor(RGB(0,240,0));
  126. m_ml.SetFontSize(24)
  127. .SetLinkCursor(AfxGetApp()->LoadCursor(IDC_ICON1))
  128. .SetFontBold(TRUE)
  129. .SetTextColor(RGB(0,240,0));
  130. GetParentFrame()->RecalcLayout();
  131. ResizeParentToFit();
  132. }
  133. LRESULT CRobotView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
  134. {
  135. // TODO: Add your specialized code here and/or call the base class
  136. if(message == (WM_USER + 1002))
  137. ProcessMessage(wParam, lParam);
  138. else if(message==(WM_USER+1003))
  139. ProcessMyMessage();
  140. return CFormView::WindowProc(message, wParam, lParam);
  141. }
  142. void CRobotView::ProcessMessage(WPARAM wParam, LPARAM lParam)
  143. {
  144. CRobotDoc* pDoc=GetDocument();
  145. char* l[57] = {"零","一","二",///012
  146. "三","四","五","六","七","八","九","執行","各關節歸零","大臂正轉",///12
  147. "大臂反轉","小臂正轉","小臂反轉","手腕正轉","手腕反轉","手爪張開","手爪閉合","上升","下降","大臂運行",///13--22
  148. "大臂負運行","小臂運行","小臂負運行","手腕運行","手腕負運行","手爪運行","手爪負運行","升降運行",////23---30
  149. "升降負運行","大臂歸零","小臂歸零","手腕歸零","手爪歸零","升降歸零","速度加","原點記憶",///31---38
  150. "系統復位","示教盒","","","回原點","速度減","區號加","區號減","單步再現","周期再現",///39---48
  151. "連續再現","返回","繼續","數據記憶","讀取數據","設置串口","打開串口","關閉串口"};
  152. CString strcomand;
  153. CString strstatus;
  154. m_recflag=1;
  155. if(!pDoc->m_bConnected)
  156. {
  157. KillTimer(1);
  158. MessageBox("請先打開串口");
  159. return;
  160. }
  161. if(wParam==100)
  162. {
  163. KillTimer(1);
  164. if(!m_failflag)
  165. {
  166. CWnd* pWnd=GetDlgItem(IDC_STATIC_5);
  167. pWnd->SetWindowText("");
  168. pWnd=GetDlgItem(IDC_STATIC_BUCHANG);
  169. pWnd->SetWindowText("");
  170. pWnd=GetDlgItem(IDC_STATIC_COMMAND);
  171. pWnd->SetWindowText("請輸入新的命令");
  172. pWnd=GetDlgItem(IDC_STATIC_STATUS);
  173. pWnd->SetWindowText("執行完畢");
  174. m_ncomand1=0;
  175. }
  176. else
  177. MessageBox("請檢查連線是否正確或下位機是否打開","通信失敗",MB_ICONWARNING);
  178. }
  179. else if(wParam>=11&&wParam<=56)
  180. {
  181. m_bflag=0;
  182. m_ncomand1=wParam;
  183. strcomand=l[m_ncomand1];
  184. CWnd* pWnd=GetDlgItem(IDC_STATIC_COMMAND);
  185. pWnd->SetWindowText(strcomand);
  186. pWnd=GetDlgItem(IDC_STATIC_STATUS);
  187. pWnd->SetWindowText("");
  188. pWnd=GetDlgItem(IDC_STATIC_5);
  189. pWnd->SetWindowText("");
  190. pWnd=GetDlgItem(IDC_STATIC_BUCHANG);
  191. pWnd->SetWindowText("");
  192. m_nsum=0;
  193. m_njishu=0;
  194. }
  195. else if(wParam>=0&&wParam<=9)
  196. {
  197. if(m_ncomand1>=12&&m_ncomand1<=21)
  198. {
  199. m_bflag=1;
  200. m_nmsg[m_njishu]=wParam;
  201. //pWnd=GetDlgItem(IDC_STATIC_COMMAND);
  202. //pWnd->SetWindowText(strcomand);
  203. CWnd* pWnd=GetDlgItem(IDC_STATIC_5);
  204. pWnd->SetWindowText("步長:");
  205. ++m_njishu;
  206. if(m_njishu==1)
  207. {
  208. CString m_stemp;
  209. m_nsum=m_nmsg[0];
  210. m_stemp.Format("%d",m_nsum);
  211. pWnd=GetDlgItem(IDC_STATIC_BUCHANG);
  212. pWnd->SetWindowText(m_stemp);
  213. }
  214. if(m_njishu==2)
  215. {
  216. CString m_stemp;
  217. m_nsum=m_nmsg[0]*10+m_nmsg[1];
  218. m_stemp.Format("%d",m_nsum);
  219. pWnd=GetDlgItem(IDC_STATIC_BUCHANG);
  220. pWnd->SetWindowText(m_stemp);
  221. }
  222. if(m_njishu==3)
  223. {
  224. CString m_stemp;
  225. m_nsum=m_nmsg[0]*100+m_nmsg[1]*10+m_nmsg[2];
  226. //m_nmsg[0]=0;
  227. //m_nmsg[1]=0
  228. // m_nmsg[2]=0;
  229. // m_njishu=0;
  230. m_stemp.Format("%d",m_nsum);
  231. pWnd=GetDlgItem(IDC_STATIC_BUCHANG);
  232. pWnd->SetWindowText(m_stemp);
  233. }
  234. if(m_njishu==4)
  235. {
  236. CString m_stemp;
  237. m_nsum=m_nmsg[0]*1000+m_nmsg[1]*100+m_nmsg[2]*10+m_nmsg[3];
  238. m_stemp.Format("%d",m_nsum);
  239. pWnd=GetDlgItem(IDC_STATIC_BUCHANG);
  240. pWnd->SetWindowText(m_stemp);
  241. }
  242. if(m_njishu>4)
  243. {
  244. m_njishu=1;
  245. m_nmsg[0]=m_nmsg[4];
  246. CString m_stemp;
  247. m_nsum=m_nmsg[0];
  248. m_stemp.Format("%d",m_nsum);
  249. pWnd=GetDlgItem(IDC_STATIC_BUCHANG);
  250. pWnd->SetWindowText(m_stemp);
  251. m_nmsg[1]=0;
  252. m_nmsg[2]=0;
  253. m_nmsg[3]=0;
  254. }
  255. }
  256. else
  257. ; //MessageBox("清先輸入運動步數命令");
  258. }
  259. else if(wParam=10)
  260. { SetTimer(1,500,NULL);
  261. if(m_ncomand1>=11&&m_ncomand1<=56)
  262. {
  263. if(!m_bflag)
  264. {
  265. strstatus="正在執行命令,請稍後.....";
  266. CWnd* pWnd=GetDlgItem(IDC_STATIC_STATUS);
  267. pWnd->SetWindowText(strstatus);
  268. Execute(m_ncomand1);
  269. }
  270. else //if(m_ncomand1>=12&&m_ncomand1<=21)
  271. {
  272. unsigned char m_uhi,m_ulo;
  273. m_nmsg[0]=0;
  274. m_nmsg[1]=0;
  275. m_nmsg[2]=0;
  276. m_nmsg[3]=0;
  277. m_njishu=0;
  278. /// CWnd* pWnd=GetDlgItem(IDC_STATIC_STATUS);
  279. /// pWnd->SetWindowText("正在執行命令,請稍後.....");
  280. switch(m_ncomand1)
  281. {
  282. case(12):
  283. m_nguanjie=01;
  284. m_nfangxiang=00;
  285. m_uhi=(unsigned char)(m_nsum/256);
  286. m_ulo=(unsigned char)(m_nsum-m_uhi*256);
  287. m_ndelay=(m_nsum+500)/m_nsudu;
  288. Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay);
  289. break;
  290. case(13):
  291. m_nguanjie=0x01;
  292. m_nfangxiang=0xff;
  293. m_uhi=(unsigned char)(m_nsum/256);
  294. m_ulo=(unsigned char)(m_nsum-m_uhi*256);
  295. m_ndelay=(m_nsum+500)/m_nsudu;
  296. Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay);
  297. break;
  298. case(14):
  299. m_nguanjie=0x02;
  300. m_nfangxiang=0x00;
  301. m_uhi=(unsigned char)(m_nsum/256);
  302. m_ulo=(unsigned char)(m_nsum-m_uhi*256);
  303. m_ndelay=(m_nsum)/(m_nsudu*3);
  304. Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay);
  305. break;
  306. case(15):
  307. m_nguanjie=0x02;
  308. m_nfangxiang=0xff;
  309. m_uhi=(unsigned char)(m_nsum/256);
  310. m_ulo=(unsigned char)(m_nsum-m_uhi*256);
  311. m_ndelay=(m_nsum)/(m_nsudu*3);
  312. Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay);
  313. break;
  314. case(16):
  315. m_nguanjie=0x04;
  316. m_nfangxiang=0x00;
  317. m_uhi=(unsigned char)(m_nsum/256);
  318. m_ulo=(unsigned char)(m_nsum-m_uhi*256);
  319. m_ndelay=(m_nsum+500)/m_nsudu;
  320. Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay);
  321. break;
  322. case(17):
  323. m_nguanjie=0x04;
  324. m_nfangxiang=0xff;
  325. m_uhi=(unsigned char)(m_nsum/256);
  326. m_ulo=(unsigned char)(m_nsum-m_uhi*256);
  327. m_ndelay=(m_nsum+500)/m_nsudu;
  328. Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay);
  329. break;
  330. case(18):
  331. m_nguanjie=0x05;
  332. m_nfangxiang=0x00;
  333. m_uhi=(unsigned char)(m_nsum/256);
  334. m_ulo=(unsigned char)(m_nsum-m_uhi*256);
  335. m_ndelay=(m_nsum+500)/m_nsudu;
  336. Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay);
  337. break;
  338. case(19):
  339. m_nguanjie=0x05;
  340. m_nfangxiang=0xff;
  341. m_uhi=(unsigned char)(m_nsum/256);
  342. m_ulo=(unsigned char)(m_nsum-m_uhi*256);
  343. m_ndelay=(m_nsum+500)/m_nsudu;
  344. Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay);
  345. break;
  346. case(20):
  347. m_nguanjie=0x03;
  348. m_nfangxiang=0x00;
  349. m_uhi=(unsigned char)(m_nsum/256);
  350. m_ulo=(unsigned char)(m_nsum-m_uhi*256);
  351. m_ndelay=(m_nsum+500)/(m_nsudu*2);
  352. Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay);
  353. break;
  354. case(21):
  355. m_nguanjie=0x03;
  356. m_nfangxiang=0xff;
  357. m_uhi=(unsigned char)(m_nsum/256);
  358. m_ulo=(unsigned char)(m_nsum-m_uhi*256);
  359. m_ndelay=(m_nsum+500)/(m_nsudu*2);
  360. Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay);
  361. break;
  362. }
  363. }
  364. m_failflag=1;}
  365. else
  366. MessageBox("清先輸入命令");
  367. }
  368. else
  369. MessageBox("不能識別,請重新輸入命令");
  370. }
  371. void CRobotView::ProcessMyMessage()
  372. {
  373. CDC *PDc=GetDC();
  374. m_failflag=0;
  375. switch(m_ncomand1)
  376. {
  377. case(37):
  378. {
  379. m_nsudu++;
  380. if(m_nsudu==6)
  381. m_nsudu=1;
  382. OnDraw(PDc);
  383. }
  384. break;
  385. case(44):
  386. {
  387. m_nsudu--;
  388. if(m_nsudu==0)
  389. m_nsudu=5;
  390. OnDraw(PDc);
  391. }
  392. break;
  393. case(45):
  394. {
  395. m_ngzq++;
  396. if(m_ngzq==8)
  397. m_ngzq=0;
  398. OnDraw(PDc);
  399. }
  400. break;
  401. case(46):
  402. {
  403. m_ngzq--;
  404. if(m_ngzq==-1)
  405. m_ngzq=7;
  406. OnDraw(PDc);
  407. }
  408. break;
  409. }
  410. CWnd* pWnd=GetDlgItem(IDC_STATIC_COMMAND);
  411. pWnd->SetWindowText("請輸入新的命令");
  412. pWnd=GetDlgItem(IDC_STATIC_STATUS);
  413. pWnd->SetWindowText("執行完畢");
  414. m_ncomand1=0;
  415. //}
  416. //else
  417. // MessageBox("請檢查連線是否正確或下位機是否打開","通信失敗",MB_ICONWARNING);
  418. }
  419. void CRobotView::SuduDisplay(int n)
  420. {
  421. CWnd* pWnd=GetDlgItem(IDC_STATIC_SUDU);
  422. CDC* pControlDC=pWnd->GetDC();
  423. pWnd->Invalidate();
  424. pWnd->UpdateWindow();
  425. pControlDC->SelectStockObject(BLACK_BRUSH);
  426. CBitmap mBit;
  427. CDC MemDC;
  428. MemDC.CreateCompatibleDC(NULL);
  429. switch(n)
  430. {
  431. case 0:
  432. mBit.LoadBitmap(IDB_BMP10);
  433. break;
  434. case 1:
  435. mBit.LoadBitmap(IDB_BMP11);
  436. break;
  437. case 2:
  438. mBit.LoadBitmap(IDB_BMP12);
  439. break;
  440. case 3:
  441. mBit.LoadBitmap(IDB_BMP13);
  442. break;
  443. case 4:
  444. mBit.LoadBitmap(IDB_BMP14);
  445. break;
  446. case 5:
  447. mBit.LoadBitmap(IDB_BMP15);
  448. break;
  449. default:
  450. //mBit.LoadBitmap(IDB_BMP0);
  451. MessageBox("error");
  452. }
  453. CBitmap *pOldBit=MemDC.SelectObject(&mBit);
  454. pControlDC->BitBlt(0,0,900,700,&MemDC,0,0,SRCCOPY);
  455. MemDC.SelectObject(pOldBit);
  456. }
  457. void CRobotView::GzqDisplay(int n)
  458. {
  459. CWnd* pWnd=GetDlgItem(IDC_STATIC_GONGZUOQU);
  460. CDC* pControlDC=pWnd->GetDC();
  461. pWnd->Invalidate();
  462. pWnd->UpdateWindow();
  463. pControlDC->SelectStockObject(BLACK_BRUSH);
  464. CBitmap mBit;
  465. CDC MemDC;
  466. MemDC.CreateCompatibleDC(NULL);
  467. switch(n)
  468. {
  469. case 0:
  470. mBit.LoadBitmap(IDB_BMP10);
  471. break;
  472. case 1:
  473. mBit.LoadBitmap(IDB_BMP11);
  474. break;
  475. case 2:
  476. mBit.LoadBitmap(IDB_BMP12);
  477. break;
  478. case 3:
  479. mBit.LoadBitmap(IDB_BMP13);
  480. break;
  481. case 4:
  482. mBit.LoadBitmap(IDB_BMP14);
  483. break;
  484. case 5:
  485. mBit.LoadBitmap(IDB_BMP15);
  486. break;
  487. case 6:
  488. mBit.LoadBitmap(IDB_BMP16);
  489. break;
  490. case 7:
  491. mBit.LoadBitmap(IDB_BMP17);
  492. break;
  493. default:
  494. //mBit.LoadBitmap(IDB_BMP0);
  495. MessageBox("error");
  496. }
  497. CBitmap *pOldBit=MemDC.SelectObject(&mBit);
  498. pControlDC->BitBlt(0,0,900,700,&MemDC,0,0,SRCCOPY);
  499. MemDC.SelectObject(pOldBit);
  500. }
  501. void CRobotView::Execute(int n)
  502. {
  503. CRobotDoc* pDoc=GetDocument();
  504. unsigned char send1;
  505. switch(n)
  506. {
  507. case(11):
  508. home();
  509. break;
  510. case(12):
  511. {//大臂正傳
  512. unsigned char send[6]={0x53,0x01,0x00,0x00,0x07,0x18};
  513. for(int i=0;i<=5;i++)
  514. pDoc->WriteComm(&send[i],1);
  515. Sleep(2000/m_nsudu);
  516. break;
  517. }
  518. case(13):
  519. {
  520. unsigned char send[6]={0x53,0x01,0xff,0x00,0x07,0x18};
  521. for(int i=0;i<=5;i++)
  522. pDoc->WriteComm(&send[i],1);
  523. // pDoc->ReadComm(&buf,1);
  524. // if(nLength)
  525. //// {
  526. // str.Format("%d",buf);
  527. // m_edit1.SetSel(-1, 0);
  528. // m_edit1.ReplaceSel(str); // 向編輯視圖中插入收到的字符
  529. // }
  530. // else
  531. // MessageBox("fjdklfjsdklgjsdfkl");
  532. Sleep(2000/m_nsudu);
  533. break;
  534. }
  535. case(14)://xiaobizhengzhuan
  536. {
  537. unsigned char send[6]={0x53,0x02,0x00,0x00,0x0f,0xe3};
  538. for(int i=0;i<=5;i++)
  539. pDoc->WriteComm(&send[i],1);
  540. Sleep(2000/m_nsudu);
  541. break;
  542. }
  543. case(15)://小臂反轉
  544. {
  545. unsigned char send[6]={0x53,0x02,0xff,0x00,0x0f,0xe3};
  546. for(int i=0;i<=5;i++)
  547. pDoc->WriteComm(&send[i],1);
  548. Sleep(2000/m_nsudu);
  549. break;
  550. }
  551. case(16)://手腕正轉
  552. {
  553. unsigned char send[6]={0x53,0x04,0x00,0x00,0x00,0xff};
  554. for(int i=0;i<=5;i++)
  555. pDoc->WriteComm(&send[i],1);
  556. Sleep(1000/m_nsudu);
  557. break;
  558. }
  559. case(17)://shouwanfanzhuan
  560. {
  561. unsigned char send[6]={0x53,0x04,0xff,0x00,0x00,0xff};
  562. for(int i=0;i<=5;i++)
  563. pDoc->WriteComm(&send[i],1);
  564. Sleep(1000/m_nsudu);
  565. }
  566. break;
  567. case(18)://shouzhuazhangkai
  568. {
  569. unsigned char send[6]={0x53,0x05,0x00,0x00,0x00,0x43};
  570. for(int i=0;i<=5;i++)
  571. pDoc->WriteComm(&send[i],1);
  572. Sleep(2000/m_nsudu);
  573. }
  574. break;
  575. case(19):
  576. {
  577. unsigned char send[6]={0x53,0x05,0xff,0x00,0x00,0xf3};
  578. for(int i=0;i<=5;i++)
  579. pDoc->WriteComm(&send[i],1);
  580. Sleep(2000/m_nsudu);
  581. }
  582. break;
  583. case(20)://shangsheng
  584. {
  585. unsigned char send[6]={0x53,0x03,0x00,0x00,0x02,0xe3};
  586. for(int i=0;i<=5;i++)
  587. pDoc->WriteComm(&send[i],1);
  588. Sleep(1000/m_nsudu);
  589. }
  590. break;
  591. case(21):
  592. {
  593. unsigned char send[6]={0x53,0x03,0xff,0x00,0x02,0xe3};
  594. for(int i=0;i<=5;i++)
  595. pDoc->WriteComm(&send[i],1);
  596. Sleep(1000/m_nsudu);
  597. }
  598. break;
  599. /* case(22)://dabiyunxing
  600. {
  601. unsigned char send[3]={0x63,0x01,0x00};
  602. for(int i=0;i<=2;i++)
  603. pDoc->WriteComm(&send[i],1);
  604. Sleep(2000);
  605. }
  606. break;
  607. case(23):
  608. {
  609. unsigned char send[3]={0x63,0x01,0xff};
  610. for(int i=0;i<=2;i++)
  611. pDoc->WriteComm(&send[i],1);
  612. Sleep(2000);
  613. }
  614. break;
  615. case(24)://xiaobiyunxing
  616. {
  617. unsigned char send[3]={0x63,0x02,0x00};
  618. for(int i=0;i<=2;i++)
  619. pDoc->WriteComm(&send[i],1);
  620. Sleep(2000);
  621. }
  622. break;
  623. case(25):
  624. {
  625. unsigned char send[3]={0x63,0x02,0xff};
  626. for(int i=0;i<=2;i++)
  627. pDoc->WriteComm(&send[i],1);
  628. Sleep(2000);
  629. }
  630. break;
  631. case(26)://shouwanyunxing
  632. {
  633. unsigned char send[3]={0x63,0x04,0x00};
  634. for(int i=0;i<=2;i++)
  635. pDoc->WriteComm(&send[i],1);
  636. Sleep(2000);
  637. }
  638. break;
  639. case(27):
  640. {
  641. unsigned char send[3]={0x63,0x04,0xff};
  642. for(int i=0;i<=2;i++)
  643. pDoc->WriteComm(&send[i],1);
  644. Sleep(2000);
  645. }
  646. break;
  647. case(28)://shouzhuayunxing
  648. {
  649. unsigned char send[3]={0x63,0x05,0x00};
  650. for(int i=0;i<=2;i++)
  651. pDoc->WriteComm(&send[i],1);
  652. Sleep(2000);
  653. }
  654. break;
  655. case(29):
  656. {
  657. unsigned char send[3]={0x63,0x05,0xff};
  658. for(int i=0;i<=2;i++)
  659. pDoc->WriteComm(&send[i],1);
  660. Sleep(2000);
  661. }
  662. break;
  663. case(30)://shengjiangyunxing
  664. {
  665. unsigned char send[3]={0x63,0x03,0x00};
  666. for(int i=0;i<=2;i++)
  667. pDoc->WriteComm(&send[i],1);
  668. Sleep(2000);
  669. }
  670. break;
  671. case(31):
  672. {
  673. unsigned char send[3]={0x63,0x05,0xff};
  674. for(int i=0;i<=2;i++)
  675. pDoc->WriteComm(&send[i],1);
  676. Sleep(2000);
  677. }
  678. break;
  679. */
  680. case(32)://dabiguiling
  681. {
  682. unsigned char send[2]={0xa3,0x01};
  683. for(int i=0;i<=1;i++)
  684. pDoc->WriteComm(&send[i],1);
  685. Sleep(18000);
  686. }
  687. break再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://www.cnblogs.com/captainbed

一套基於模板匹配的語音識別技術 提取語音的特征,並建立模板庫 可以將語音識別技術應用於機器人