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

正文內(nèi)容

現(xiàn)代微機(jī)原理與接口技術(shù)接口第8章(文件)

2024-10-16 18:49 上一頁面

下一頁面
 

【正文】 誤處理 現(xiàn)代微機(jī)原理與接口技術(shù) 54 1. 通信中斷初始化 中斷方式串行通信程序設(shè)計(jì) ? 修改中斷向量, 按使用的端口 COM1或 COM2,接管中斷 0CH或中斷 0BH。 現(xiàn)代微機(jī)原理與接口技術(shù) 55 2. 通信中斷服務(wù)程序 ?首先讀取中斷識(shí)別寄存器 , 判斷中斷源 , 然后轉(zhuǎn)向?qū)?yīng)的處理子程序 。 因此 , 每處理完一種中斷源后 , 應(yīng)繼續(xù)讀取中斷識(shí)別寄存器 , 檢測(cè)D0是否為 “ 0”, 當(dāng) D0=0時(shí) , 表明還有未決中斷 , 應(yīng)該繼續(xù)分析中斷源并進(jìn)行中斷處理 。 3. 直接嵌入?yún)R編法 這種方法只能用在 Windows 98和 Windows 95操作系統(tǒng)下。 由于串口是硬件,所以 dwCreationDisposition一般為OPEN_EXISTING。 BOOL SetCommState( HANDLE hFile, //通信設(shè)備句柄 LPDCB lpDCB //設(shè)備控制塊 )。 現(xiàn)代微機(jī)原理與接口技術(shù) 63 ( 8)異步 I/O操作 異步(重疊) I/O操作是指應(yīng)用程序可以在后臺(tái)讀或?qū)憯?shù)據(jù),而在前臺(tái)做其他事情。 // 文件傳輸?shù)某跏嘉恢? DWORD OffsetHigh。 異步 I/O的時(shí)候, Windows可以用 WaitForSingleObject()函數(shù)來檢查事件對(duì)象。超時(shí)結(jié)構(gòu)如下: typedef struct _COMMTIMEOUTS { DWORD ReadIntervalTimeout。 //計(jì)算寫操作總超時(shí)的超時(shí)系數(shù) DWORD WriteTotalTimeoutConstant。 現(xiàn)代微機(jī)原理與接口技術(shù) 67 ( 10)通信狀態(tài)和通信錯(cuò)誤 如果串口發(fā)生奇偶錯(cuò)誤等錯(cuò)誤的時(shí)候, I/O操作會(huì)終止。 // 是否等待 DSR信號(hào) DWORD fRlsdHold : 1。 // EOF字符送出 DWORD fTxim : 1。 // 串口發(fā)送的字符數(shù) } COMSTAT, *LPCOMSTAT。 BOOL WaitCommEvent( HANDLE hFile, // 設(shè)備句柄 LPDWORD lpEvtMask, // 事件類型 LPOVERLAPPED lpOverlapped, // overlapped結(jié)構(gòu) )。 if(hCom==INVALID_HANDLE_VALUE) { dwError = GetLastError()。 //清干凈輸入、輸出緩沖區(qū) PurgeComm( hCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR )。 = 5000。TimeOuts)。 //讀串口原來的參數(shù)設(shè)置 =9600。 // 1位停止位 = TRUE 。 //串口參數(shù)配置 // 上述的 COMMTIMEOUTS結(jié)構(gòu)和 DCB都很重要,實(shí)際工作中需要仔細(xì)選擇參數(shù)。但是輔助線程很容易編程,通常也很有用。 ASSERT(hCommWatchThread!=NULL)。 //設(shè)置要監(jiān)視的事件 SetCommMask( hCom, EV_RXCHAR|EV_TXEMPTY )。 EV_RXCHAR) == EV_RXCHAR){ // 緩沖區(qū)中有數(shù)據(jù)到達(dá) COMSTAT ComStat 。ComStat ) 。dwBytesRead, amp。 dwBytesRead, TRUE ) ){ dwError = GetLastError()。 char szBuffer[count]。 //寫數(shù)據(jù) 現(xiàn)代微機(jī)原理與接口技術(shù) 81 int err=GetLastError()。 if(dwError == ERROR_IO_INCOMPLETE){ // 還沒有結(jié)束 dwBytesSent += dwBytesWritten。 if (!( NULL,style,CRect(0,0,0,0), this,ID_COMMCTRL) ){ TRACE0(Failed to create OLE Communications Control\n)。 //設(shè)置輸入緩沖區(qū)的字節(jié)數(shù) m_ComPort. SetOutBufferSize(512)。 //設(shè)置波特率等參數(shù) (1)。下面介紹事件驅(qū)動(dòng)方法:有事件(如接收到數(shù)據(jù))時(shí)通知程序。 void CMainFrame::OnCommMsm(){ VARIANT vResponse。 // 讀 SaveData(k, (unsigned char*) pvData)。 (Count)。 (COleVariant(array))。iCount。 void CMainFrame::OnCommSend() { …… // 準(zhǔn)備需要發(fā)送的命令,放在 TxData[]中 CByteArray array。 if(()==2) { k=()。 在 : protected: afx_msg void OnCommMsm()。 現(xiàn)代微機(jī)原理與接口技術(shù) 95 ⑷ .捕捉串口事項(xiàng)。 (1)。 // fail to create } 現(xiàn)代微機(jī)原理與接口技術(shù) 94 ⑶ .初始化串口 (1)。 } ...................... 現(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。WRITE_OS( npTTYInfo ), amp。dwBytesWritten, amp。 //通知主線程,串口收到數(shù)據(jù) } } } 現(xiàn)代微機(jī)原理與接口技術(shù) 80 ⑸ .在主線程中放入發(fā)送命令。 //讀數(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。 //輸入緩沖區(qū)有多少數(shù)據(jù)? 現(xiàn)代微機(jī)原理與接口技術(shù) 78 if (dwLength 0) { BOOL fReadStat 。 ClearCommError(hCom, amp。dwEvtMask, os )。注意OVERLAPPED結(jié)構(gòu)的使用,以及怎樣實(shí)現(xiàn)了異步通信。 hCommWatchThread= CreateThread( (LPSECURITY_ATTRIBUTES) NULL, //安全屬性 0,//初始化線程棧的大小,缺省為與主線程大小相同 (LPTHREAD_START_ROUTINE)CommWatchProc, //線程的全局函數(shù) GetSafeHwnd(), //此處傳入了主框架的句柄 0, amp。 Win32提供了兩種線程, 輔助線程 和 用戶界面線程。 // 不執(zhí)行奇偶校驗(yàn) SetCommState(hCom, amp。 // 8位數(shù)據(jù)位 = NOPARITY。 // 定義數(shù)據(jù)控制塊結(jié)構(gòu) GetCommState(hCom, amp。 = 5000。 = 1000。 //設(shè)置事件驅(qū)動(dòng)的類型 Set
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1