寫入COM PORT失敗 |
答題得分者是:aftcast
|
Solaris2005
一般會員 發表:7 回覆:13 積分:4 註冊:2003-05-19 發送簡訊給我 |
請教各位前輩,
(1)的寫法, 寫到comport, write file 成功之後, 卻要2到3秒, 合理嗎? 是不是我有什麼地方寫錯了? (2)的寫法, 寫到comport, 失敗, 卻立即回應, 這樣是錯在什麼地方? ================================================== (1) hCom = CreateFile("COM1", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); (2) hCom = CreateFile("COM1", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,, NULL); // 以下在兩種寫法不變 if(hCom == INVALID_HANDLE_VALUE) { return false; } DCB dcb; if(!GetCommState(hCom, &dcb)) { return false; } dcb.BaudRate = 19200; dcb.ByteSize = 8; dcb.Parity = ODDPARITY; dcb.StopBits = ONESTOPBIT; if(SetCommState(hCom, &dcb) == 0) { return false; } char sCommandBuf[MAX_COMMAND_NUM]; DWORD dwBytesWritten; if(!WriteFile(hCom, sCommandBuf, sizeof(sCommandBuf), &dwBytesWritten, NULL)) { // ng } else { // ok } |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
你好,
(1) 2至3秒並不一定不合理,而且你的baud rate 19200而已,若資料量大的話則有可能數秒。 (2) 第二種寫法FILE_FLAG_OVERLAPPED的參數,會立即回應是正確的!,它本來就是會立即回應。這種寫法較複雜,要自己實作event的處理,詳情google一下應該有不少的文章! ===================引 用 Solaris2005 文 章=================== 請教各位前輩, (1)的寫法, 寫到comport, write file 成功之後, 卻要2到3秒, 合理嗎? 是不是我有什麼地方寫錯了? (2)的寫法, 寫到comport, 失敗, 卻立即回應, 這樣是錯在什麼地方? ================================================== (1) hCom = CreateFile("COM1", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); (2) hCom = CreateFile("COM1", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,, NULL); // 以下在兩種寫法不變 if(hCom == INVALID_HANDLE_VALUE) { return false; } DCB dcb; if(!GetCommState(hCom, &dcb)) { return false; } dcb.BaudRate = 19200; dcb.ByteSize = 8; dcb.Parity = ODDPARITY; dcb.StopBits = ONESTOPBIT; if(SetCommState(hCom, &dcb) == 0) { return false; } char sCommandBuf[MAX_COMMAND_NUM]; DWORD dwBytesWritten; if(!WriteFile(hCom, sCommandBuf, sizeof(sCommandBuf), &dwBytesWritten, NULL)) { // ng } else { // ok }
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
Solaris2005
一般會員 發表:7 回覆:13 積分:4 註冊:2003-05-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |