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

用 printer port 產生 pulse 的問題

答題得分者是:AJCooer
Just4U
初階會員


發表:38
回覆:56
積分:28
註冊:2002-03-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-13 16:32:19 IP:211.74.xxx.xxx 未訂閱
我用 printer port 做 I/O 一直有個問題, 以下程式為按下 button 在 printer port pin DR0 產生 5 個 pulse, 正常狀況下 pulse width = 2 us, 但有時某一個 pulse width = 16 us(差很多), 我也在站上 download 一個 NTPORT v2.3 來替換原來的 I/O, 但情形一樣, 請問有人知道如何解決這種狀況嗎? 謝謝!!! 我的 PC 資料 : WinXP, AMD700MHz, BCB5 void __fastcall TForm1::Button1Click(TObject *Sender) { for(int i = 0; i < 5; i ) { Outport(0x378, 0x01); Outport(0x378, 0x00); } }
AJCooer
初階會員


發表:48
回覆:52
積分:25
註冊:2004-02-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-17 11:58:11 IP:220.130.xxx.xxx 未訂閱
你好 你可以抓系統時間來送出pulse. 底下為範例 void dly(DWORD MSecs,int id) { LARGE_INTEGER rStart, rEnd, rFreq; char ss[82]; DWORD dw1,dw2; double db; //{ 取得頻率 } QueryPerformanceFrequency(&rFreq); rEnd.QuadPart =( MSecs * rFreq.QuadPart * 1E-3 ); if(id == 1) rEnd.QuadPart =( MSecs * rFreq.QuadPart * 1E-6 ); //{ 進入迴圈前取得開始計數值 } QueryPerformanceCounter(&rStart); rEnd.QuadPart = rStart.QuadPart; //{ 主迴圈 } //starttime(); while ( rStart.QuadPart < rEnd.QuadPart ) { QueryPerformanceCounter(&rStart); //{ 取得目前計數值 } } } id = 1時計時單位為us id = 0時計時單位為ms
系統時間:2024-04-29 20:05:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!