// Copyright 2005 Doi Shigeki // list304.cpp // mmtimerを使った出力速度のチェック // winmm.libをリンクに追加すること #include #include #include #include"list302.h" // USB関係の関数 void CALLBACK timerProc( UINT, UINT, DWORD, DWORD, DWORD); HANDLE husb; BYTE m; main() { int r; MMRESULT timerid; printf("CQ_USBのテスト\n"); husb = CreateFile( "\\\\.\\Ezusb-0", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0); printf("ハンドル値 = %d \n",(int)husb ); if( (int)husb < 0 ){ printf("USBデバイスがオープンできません\n"); return 0; } r = SetPortConfig( husb, 0, // PIOモード 0, 0,0,0,1,0); // PBのみ出力 printf("コンフィグレーション結果 = %d( 0以外:ok) \n", r); printf("何かキーを押すと終了します\n"); m=0; // タイマー割り込み関数の登録 timerid = timeSetEvent(10, // 間隔[ms] 0, // 分解能:最高 timerProc, // タイマ関数 NULL, // ユーザーパラメータ TIME_PERIODIC | TIME_CALLBACK_FUNCTION // 動作フラグ ); if( !timerid ){ printf("タイマー登録に失敗"); return 0; } printf("1分後終了します\n"); Sleep( 60 * 1000); // タイマー割り込み関数の登録抹消 timeKillEvent( timerid ); CloseHandle( husb ); } // タイマー割り込みの処理 void CALLBACK timerProc(UINT , UINT , DWORD , DWORD , DWORD ) { PIOWrite( husb, 1, m ); m++; return; }