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

正文內(nèi)容

api串口通信實(shí)例(留存版)

2025-08-04 06:55上一頁面

下一頁面
  

【正文】 /* Serial Port Config */ /* misc parameters */ = 0。 if(!SetCommState(hComm,amp。 return true。 { // Stores number of bytes read } // close if (bRead) // Overlapped structureif (!bResult){DWORD dwError = GetLastError()。system(pause)。VOID ExitThread(DWORD dwExitCode)。一種方式是讓線程進(jìn)入等待狀態(tài),直到指定內(nèi)核對(duì)象中的任何一個(gè)變?yōu)橐淹ㄖ獱顟B(tài)。通常,在寫WINDOWS程序的時(shí)候我們會(huì)用 GetLastError()來獲得錯(cuò)誤代號(hào),進(jìn)而想要知道具體出錯(cuò)原因(文本描述),我們可以用 FormatMessage函數(shù)來得到。lpSource:指定了FORMAT_MESSAGE_FROM_HMODULE的話,此參數(shù)表示模塊的HANDLE指定了FORMAT_MESSAGE_FROM_STRING的話,此參數(shù)表示id字串通常為:NULL。os)){GetOverlappedResult(hComm,amp。case EV_BREAK:PostMessage(Parent,WM_COMM_BREAK,0,0)。fOOP = dwErrors amp。fRXPARITY = dwErrors amp。如果設(shè)置為FALSE,當(dāng)事件被一個(gè)等待線程釋放以后,系統(tǒng)將會(huì)自動(dòng)將事件狀態(tài)復(fù)原為無信號(hào)狀態(tài)。名稱的其它部分除了反斜杠(\),可以使用任意字符。系統(tǒng)將自動(dòng)將此函數(shù)置為無符號(hào)狀態(tài)?! ∈褂铆h(huán)境:  Windows NT/2000:  Windows 95/98:需要Windows 95或更高版本  頭文件:;需要包含 。使用ResetEvent函數(shù)將事件對(duì)象的狀態(tài)置為無信號(hào)狀態(tài)?! 〗K端服務(wù)(Terminal Services):名稱中可以加入Global\或是Local\的前綴,這樣可以明確的將對(duì)象創(chuàng)建在全局的或事務(wù)的命名空間。  Windows NT/2000:lpEventAttributes的結(jié)構(gòu)中的成員為新的事件指定了一個(gè)安全符。fTXFULL = dwErrors amp。// Get error flags.fDNS = dwErrors amp。break。os,0,sizeof(OVERLAPPED))。 //消息ID是個(gè)字串,不是個(gè)DWORD通常為:返回值是WAIT_OBJECT_0與(WAIT_OBJECT_0 + dwCount1)之間的一個(gè)值。DWORD WaitForMultipleObject(DWORD dwCount , CONST HANDLE* phObject, BOOL fWaitAll, DWORD dwMillisecinds)。要說明的一點(diǎn)是,目前大多數(shù)的計(jì)算機(jī)都是單處理器(CPU)的,為了運(yùn)行所有這些線程,操作系統(tǒng)為每個(gè)獨(dú)立線程安排一些CPU時(shí)間,操作系統(tǒng)以輪換方式向線程提供時(shí)間片,這就給人一種假象,好象這些線程都在同時(shí)運(yùn)行。PurgeComm(hComm, PURGE_RXCLEAR | PURGE_TXCLEAR | PURGE_RXABORT | PURGE_TXABORT)。 = 0。 TRUE)。 }DWORD BytesRead = 0。 }timeouts)) = 0。 = rate。if(!GetCommState(hComm,amp。 0,當(dāng)由SetCommMask函數(shù)所指定的事件產(chǎn)生時(shí)這個(gè)函數(shù)將返回TRUE。如果規(guī)定了讀/寫操作的超時(shí),那么當(dāng)超過規(guī)定時(shí)間后,hEvent成員會(huì)變成有信號(hào)的。 //輸入緩沖區(qū)中的字節(jié)數(shù) DWORD cbOutQue。}/************* program end***************************************/ else COMMTIMEOUTS timeouts。 = 0。 = 0。memset(amp。hComm = CreateFile(portname, //串口號(hào) SetCommTimeouts(m_hCom, amp。}COMMTIMEOUTS, LPCOMMTIMEOUTS。 SetCommMask()說明:用途:設(shè)置串口通信事件。 char EvtChar。 WORD XonLim。 DWORD fBinary: 1。參數(shù)說明: hFile:串口句柄 lpDCB:設(shè)備控制塊(Device Control Block)結(jié)構(gòu)地址。}elsereturn true。}/************************** program end***************************************/ GENERIC_READ | GENERIC_WRITE, //允許讀寫lpSecurityAttributes定義安全屬性,一般不用,可設(shè)為NULL。 DWORD dwCreationDisposition, HANDLE CreateFile(LPCTSTR lpFileName,常用函數(shù)及作用下:函數(shù)名 設(shè)定被監(jiān)控事件 WaitCommEvent 接收數(shù)據(jù) GetOverlappedResult HANDLE hTemplateFile )。實(shí)例1:/******************} 0, //通訊設(shè)備必須以獨(dú)占方式打開第三節(jié) 設(shè)置串口 //CTS線上的硬件握手 //發(fā)送錯(cuò)誤協(xié)議 BYTE ByteSize。 char XoffChar。 設(shè)置超時(shí)設(shè)置需要一個(gè)結(jié)構(gòu)體COMMTIMEOUTS。每個(gè)操作的總限時(shí)時(shí)間等于ReadTotalTimeoutMultiplier成員乘以讀操作所需字節(jié)數(shù)再加上該值的和。參數(shù)說明:HANDLE hFile,//串口名稱字符串dwFlags共有四種 flags:  PURGE_TXABORT:終止目前正在進(jìn)行的(背景)寫入動(dòng)作  PURGE_RXABORT:終正目前正在進(jìn)行的(背景)讀取動(dòng)作  PURGE_TXCLEAR: flush寫入的 buffer  PURGE_TXCLEAR: flush讀取的 buffer}elsereturn true。 = 0。 return true。open=openport(2)。 3CE_IOE:通信設(shè)備發(fā)生輸入/輸出錯(cuò)誤。上式執(zhí)行完后,我們利用此 數(shù)值就可以用ReadFile()函數(shù)去讀串口中的數(shù)據(jù)了。關(guān)閉串口的語句為CloseHandle()。HANDLE hEvent。OVERLAPPED m_ov。DCB dcb。 =WriteTotalMultiplier。 1, bRead = TRUE。 bRead = TRUE。 // Overlapped structure m_szWriteBuffer, // Pointer to message buffer in calling finction}}}} // end if(bWrite)if (!bWrite){bWrite = TRUE。 amp。 Message Length: %d\n, BytesSent, strlen((char*)m_szWriteBuffer))?! 【€程是進(jìn)程內(nèi)部的一個(gè)執(zhí)行單元。CreateThread()函數(shù)有一個(gè)HANDLE類型的返回值,用來標(biāo)識(shí)創(chuàng)建的線程,因此,應(yīng)該定義一個(gè)HANDLE類型的變量用于保存這個(gè)句柄(不是必須)。 LPVOID lpParameter,一般情況為(LPTHREAD_START_ROUTINE)ThreadFunc,ThreadFunc是線程函數(shù)名; lpParameter:指定了線程執(zhí)行時(shí)傳送給線程的32位參數(shù),即線程函數(shù)的參數(shù); dwCreationFlags:控制線程創(chuàng)建的附加標(biāo)志,可以取兩種值。一般情況下,線程運(yùn)行結(jié)束之后,線程函數(shù)正常返回,但是應(yīng)用程序可以調(diào)用TerminateThread強(qiáng)行終止某一線程的執(zhí)行。如果在等待的時(shí)候規(guī)定的時(shí)間到了,那么該函數(shù)無論如何都會(huì)返回。 DWORD dwFlags, LPTSTR lpBuffer, FORMAT_MESSAGE_FROM_SYSTEM,nSize:如果未指定FORMAT_MESSAGE_ALLOCATE_BUFFER,則為自己提供的緩沖區(qū)大小否則為系統(tǒng)LocalAlloc分配之最小緩沖區(qū)大小。case EV_TXEMPTY:PostMessage(Parent,WM_COMM_TXEMPTY,0,0)。}}操作舉例2:COMSTAT Stat。 CE_MODE。名字是對(duì)大小寫敏感的。備注:  調(diào)用CreateEvent函數(shù)返回的句柄,該句柄具有EVENT_ALL_ACCESS權(quán)限去訪問新的事件對(duì)象,同時(shí)它可以在任何有此事件對(duì)象句柄的函數(shù)中使用?!   ‘?dāng)指定的對(duì)象的狀態(tài)被置為有信號(hào)狀態(tài)時(shí),單對(duì)象等待函數(shù)將返回。這時(shí)候,由于bManualReset和bInitialState參數(shù)已經(jīng)在創(chuàng)建事件的進(jìn)程中設(shè)置,這兩個(gè)參數(shù)將被忽略。常用于內(nèi)存空間初始化。 CE_BREAK。BOOL fOOP, fOVERRUN, fPTO, fRXOVER, fRXPARITY, fTXFULL。case EV_ERR:switch(dwError){case CE_FRAME:err=0。WaitForMultipleObjects函數(shù)的返回值告訴調(diào)用線程,為什么它會(huì)被重新調(diào)度。hHandle為要監(jiān)視的對(duì)象(一般為同步對(duì)象,也可以是線程)的句柄;dwMilliseconds為hHandle對(duì)象所設(shè)置的超時(shí)值,單位為毫秒; 當(dāng)在某一線程中調(diào)用該函數(shù)時(shí),線程暫時(shí)掛起,系統(tǒng)監(jiān)視hHandle所指向的對(duì)象的狀態(tài)。 使用TerminateThread()終止某個(gè)線程的執(zhí)行是不安全的,可能會(huì)引起系統(tǒng)不穩(wěn)定;雖然該函數(shù)立即終止線程的執(zhí)行,但并不釋放線程所占用的資源。 DWORD dwStackSize,關(guān)閉句柄的方法是調(diào)用CloseHandle()函數(shù)。主執(zhí)行線程終止了,進(jìn)程也就隨之終止。} amp。 amp。BOOL bResult = TRUE。 // Stores number of bytes read if (!bRead) switch (dwError = GetLastError())BytesRead, // Read one byte} COMMTIMEOUTS timeouts。 { = 0x13。 = DTR_CONTROL_DISABLE。 = NOPARITY。int rate= rate_arg。DWORD如果采用異步方式,則在調(diào)用ReadFile或WriteFile函數(shù)時(shí)必需指定一個(gè)Overlapped結(jié)構(gòu),調(diào)用后程序可繼續(xù)執(zhí)行其它操作,在合適的地方再調(diào)用函數(shù)GetOverlappedResult判斷異步重疊操作是否完成(判斷OVERLAPPED結(jié)構(gòu)中的hEvent是否被置位)。例如,在重疊操作時(shí)如果操作還未完成函數(shù)就返回,那么函數(shù)就返回FALSE,而且GetLastError函數(shù)返回ERROR_IO_PENDING。串行口讀寫的同步、異步方式是在打開端口的同時(shí)給dwGlagsAndAttributes參數(shù)傳入適當(dāng)?shù)闹刀O(shè)定的。 5CE_OVERRUN:溢出錯(cuò)誤,緩沖區(qū)容量不足,數(shù)據(jù)將丟失。if(setupdcb(9600))printf(setupDCB success\n)。bool setuptimeout(DWORD ReadInterval,DWORD ReadTotalMultiplier,DWORD ReadTotalconstant,DWORD WriteTotalMultiplier,DWORD WriteTotalconstant){ = sizeof(dcb)。bool setupdcb(int rate_arg)//設(shè)置DCB{ WriteTotalTimeoutMultiplier和WriteTotalTimeoutconstant的意義和作用分別與ReadTotalTimeoutMultiplier和ReadT
點(diǎn)擊復(fù)制文檔內(nèi)容
物理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1