線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1944
推到 Plurk!
推到 Facebook!

設定 COMMTIMEOUTS 沒有作用

尚未結案
shinnuei
一般會員


發表:32
回覆:48
積分:21
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-17 17:43:09 IP:59.120.xxx.xxx 未訂閱
請教各位先進,當我對一個設備做 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);
系統時間:2024-03-29 0:02:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!