freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

現(xiàn)代微機(jī)原理與接口技術(shù)接口第8章-資料下載頁(yè)

2025-09-25 18:49本頁(yè)面
  

【正文】 S) NULL, //安全屬性 0,//初始化線程棧的大小,缺省為與主線程大小相同 (LPTHREAD_START_ROUTINE)CommWatchProc, //線程的全局函數(shù) GetSafeHwnd(), //此處傳入了主框架的句柄 0, amp。dwThreadID )。 ASSERT(hCommWatchThread!=NULL)。 現(xiàn)代微機(jī)原理與接口技術(shù) 77 ⑷ 為輔助線程寫一個(gè)全局函數(shù),主要完成數(shù)據(jù)接收的工作。注意OVERLAPPED結(jié)構(gòu)的使用,以及怎樣實(shí)現(xiàn)了異步通信。 UINT CommWatchProc(HWND hSendWnd){ DWORD dwEvtMask=0 。 //設(shè)置要監(jiān)視的事件 SetCommMask( hCom, EV_RXCHAR|EV_TXEMPTY )。 // 等待串口通信事件的發(fā)生 WaitCommEvent( hCom, amp。dwEvtMask, os )。 // 檢測(cè)返回的 dwEvtMask,知道發(fā)生了什么串口事件: if ((dwEvtMask amp。 EV_RXCHAR) == EV_RXCHAR){ // 緩沖區(qū)中有數(shù)據(jù)到達(dá) COMSTAT ComStat 。 DWORD dwLength。 ClearCommError(hCom, amp。dwErrorFlags, amp。ComStat ) 。 dwLength = 。 //輸入緩沖區(qū)有多少數(shù)據(jù)? 現(xiàn)代微機(jī)原理與接口技術(shù) 78 if (dwLength 0) { BOOL fReadStat 。 fReadStat = ReadFile( hCom, lpBuffer, dwLength, amp。dwBytesRead, amp。READ_OS( npTTYInfo ) )。 //讀數(shù)據(jù) // 注 :在 CreareFile()時(shí)使用了 FILE_FLAG_OVERLAPPED,現(xiàn)在ReadFile()也必須使用 LPOVERLAPPED結(jié)構(gòu) .否則 ,函數(shù)會(huì)不正確地報(bào)告讀操作已完成了 . 使用 LPOVERLAPPED結(jié)構(gòu) , ReadFile()立即返回 ,不必等待讀操作完成 ,實(shí)現(xiàn)異步通信 .此時(shí) , ReadFile()返回 FALSE, GetLastError()返回 ERROR_IO_PENDING. 現(xiàn)代微機(jī)原理與接口技術(shù) 79 if (!fReadStat){ if (GetLastError() == ERROR_IO_PENDING){ while(!GetOverlappedResult( hCom, amp。READ_OS( npTTYInfo ), amp。 dwBytesRead, TRUE ) ){ dwError = GetLastError()。 if(dwError == ERROR_IO_INCOMPLETE) continue; //緩沖區(qū)數(shù)據(jù)沒有讀完,繼續(xù) …… …… ::PostMessage((HWND)hSendWnd, WM_NOTIFYPROCESS, 0,0)。 //通知主線程,串口收到數(shù)據(jù) } } } 現(xiàn)代微機(jī)原理與接口技術(shù) 80 ⑸ .在主線程中放入發(fā)送命令。 BOOL fWriteStat 。 char szBuffer[count]。 ………… //準(zhǔn)備好發(fā)送的數(shù)據(jù),放在 szBuffer[]中 fWriteStat = WriteFile(hCom, szBuffer, dwBytesToWrite, amp。dwBytesWritten, amp。WRITE_OS( npTTYInfo ) )。 //寫數(shù)據(jù) 現(xiàn)代微機(jī)原理與接口技術(shù) 81 int err=GetLastError()。 if (!fWriteStat) { if(GetLastError() == ERROR_IO_PENDING){ while(!GetOverlappedResult( hCom, amp。WRITE_OS( npTTYInfo ), amp。dwBytesWritten, TRUE ) ) { dwError = GetLastError()。 if(dwError == ERROR_IO_INCOMPLETE){ // 還沒有結(jié)束 dwBytesSent += dwBytesWritten。 continue。 } ...................... 現(xiàn)代微機(jī)原理與接口技術(shù) 82 MSComm控件進(jìn)行串口編程 ⑴ . 在當(dāng)前 Project中插入 MSComm控件 現(xiàn)代微機(jī)原理與接口技術(shù) 83 現(xiàn)代微機(jī)原理與接口技術(shù) 84 現(xiàn)代微機(jī)原理與接口技術(shù) 85 現(xiàn)代微機(jī)原理與接口技術(shù) 86 現(xiàn)代微機(jī)原理與接口技術(shù) 87 現(xiàn)代微機(jī)原理與接口技術(shù) 88 現(xiàn)代微機(jī)原理與接口技術(shù) 89 現(xiàn)代微機(jī)原理與接口技術(shù) 90 現(xiàn)代微機(jī)原理與接口技術(shù) 91 現(xiàn)代微機(jī)原理與接口技術(shù) 92 現(xiàn)代微機(jī)原理與接口技術(shù) 93 ⑵ . 在 MSComm控件 : protected: CMSComm m_ComPort。 在 ::OnCreare()中 : DWORD style=WS_VISIBLE|WS_CHILD。 if (!( NULL,style,CRect(0,0,0,0), this,ID_COMMCTRL) ){ TRACE0(Failed to create OLE Communications Control\n)。 return 1。 // fail to create } 現(xiàn)代微機(jī)原理與接口技術(shù) 94 ⑶ .初始化串口 (1)。 //選擇 COM? m_ComPort. SetInBufferSize(1024)。 //設(shè)置輸入緩沖區(qū)的字節(jié)數(shù) m_ComPort. SetOutBufferSize(512)。 //設(shè)置輸入緩沖區(qū)的字節(jié)數(shù) if(!()) //打開串口 (TRUE)。 (1)。 //設(shè)置輸入方式為二進(jìn)制方式 (9600,n,8,1)。 //設(shè)置波特率等參數(shù) (1)。 //為 1表示有一個(gè)字符引發(fā)一個(gè)事件 (0)。 現(xiàn)代微機(jī)原理與接口技術(shù) 95 ⑷ .捕捉串口事項(xiàng)。 MSComm控件可以采用輪詢或事件驅(qū)動(dòng)的方法從端口獲取數(shù)據(jù)。下面介紹事件驅(qū)動(dòng)方法:有事件(如接收到數(shù)據(jù))時(shí)通知程序。在程序中需要捕獲并處理這些通訊事件。 在 : protected: afx_msg void OnCommMsm()。 DECLARE_EVENTSINK_MAP() 在 : BEGIN_EVENTSINK_MAP(CMainFrame,CFrameWnd ) ON_EVENT(CMainFrame,ID_COMMCTRL,1,OnCommMsm,VTS_NONE) //映射 ActiveX控件事件 END_EVENTSINK_MAP() 現(xiàn)代微機(jī)原理與接口技術(shù) 96 ⑸ .串口讀。 void CMainFrame::OnCommMsm(){ VARIANT vResponse。 int k。 if(()==2) { k=()。 //接收到的字符數(shù)目 if(k0) { vResponse=()。 // 讀 SaveData(k, (unsigned char*) pvData)。 } // 接收到字符, MSComm控件發(fā)送事件 } …… // 處理其他 MSComm控件 } 現(xiàn)代微機(jī)原理與接口技術(shù) 97 ⑸ .串口寫。 void CMainFrame::OnCommSend() { …… // 準(zhǔn)備需要發(fā)送的命令,放在 TxData[]中 CByteArray array。 ()。 (Count)。 for(i=0。iCount。i++) (i, TxData[i])。 (COleVariant(array))。 // 發(fā)送數(shù)據(jù) }
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1