設定 COMMTIMEOUTS 沒有作用 |
尚未結案
|
shinnuei
一般會員 發表:32 回覆:48 積分:21 註冊:2002-03-13 發送簡訊給我 |
請教各位先進,當我對一個設備做 SetCommTimeouts 後,卻發現有設沒設的結果都是一樣的,我故意把設備關機,再對他做寫入的動作,程式就卡在那一行,直到我重新把設備打開後,程式才會繼續往下跑,請問這是少了什麼步驟呢?
目前找到一篇相關的問題,但是還是不能解決這個問題
【BCB】【問題】WriteFile(hComm,&ch,1,&lrc,NULL) 被鎖住在這一行程式
http://delphi.ktop.com.tw/topic.php?topic_id=31589
hPrn=CreateFile("LPT1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if(hPrn == INVALID_HANDLE_VALUE){return;} PurgeComm(hPrn,PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR |PURGE_RXCLEAR); AnsiString commset; commset = "96,N,8,1"; BuildCommDCB(commset.c_str(), &dcb); dcb.fBinary = true; dcb.fAbortOnError = true; dcb.fOutX = true; dcb.fDtrControl = DTR_CONTROL_ENABLE; dcb.fRtsControl = RTS_CONTROL_DISABLE; dcb.fDsrSensitivity = false; dcb.fOutxCtsFlow = false; dcb.fOutxDsrFlow = false; SetCommState(hPrn, &dcb); Sleep(300); // timeout 控制 COMMTIMEOUTS to; memset(&to,0,sizeof(to)); to.ReadIntervalTimeout = 0;//讀出逾時 to.ReadTotalTimeoutMultiplier = 0; to.ReadTotalTimeoutConstant = 50; to.WriteTotalTimeoutMultiplier = 5;//寫入逾時 to.WriteTotalTimeoutConstant = 50; SetCommTimeouts(hPrn,&to); memset(Buffer, 0x00, sizeof(Buffer)); sprintf(Buffer, "%c%c%c", 0x10, 0x05, 1); WriteFile(hPrn, Buffer, strlen(Buffer), &dwfile, NULL); |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |