VisulaBasicでもかなり細かいプログラム表現が可能だ。でもどうしても越えられない、というか、使いたい機能が提供されていない…。
InterFace社のActivX他ライブラリ関数には1mS単位の記載があった。が、この関数自体、どうやら1つのCHしか監視がされていないことがテストプログラムの測定でわかり、やはり独自に作るしかない、という道しかないようだ。
仕様は次のとおり。
・1mSのサンプリング周期で全CHデータ入力(デジタル信号)を捕らえたい…。
この1mSというキーワードでタイマーについていろいろと調べていくと、CPUパフォーマンスカウンタ、メディアタイマ、といった関連の情報が出てきた。
CPUパフォーマンスカウンタは経過時間を調べる用途には都合はよいが、1mS経過したらジャンプ、といった割込み仕様にはなっていない。(イベント的な…いわゆるジャンプでの利用はできない)
マルチメディアタイマというWinmm.Lib関数内にあるTimerProc()で使われる関数のみが、WindowsOS本体でどうやら最小1mSを提供している関数のようだ。
この関数TimerProc()は、Visualシリーズのイベントタイマーの内部でコールされる最小単位の関数であり、この関数を用いてプログラムを作成する場合、残念ながらVisualアイコンのタイマーイベントは競合の関係から一切利用できない制約がある。
そして、このTimerProc()関数を記述するためのVisual言語にはVisual C++でなければならないことが判明した。
逐次コンパイルのインタプリタ方式では動作速度が遅く、極限までに動作速度の効率を高めた、いわゆるネィティブプログラム方式、MFC(マイクロソフトファンデーションクラス)でしか提供されていないことがわかった。
やはり専門家用ツールソフト(C++)にはアセンブラ(ハードウェアアクセス)に近い機能が備わっていることをあらためて再認識した。
InterFace社のActivX他ライブラリ関数には1mS単位の記載があった。が、この関数自体、どうやら1つのCHしか監視がされていないことがテストプログラムの測定でわかり、やはり独自に作るしかない、という道しかないようだ。
仕様は次のとおり。
・1mSのサンプリング周期で全CHデータ入力(デジタル信号)を捕らえたい…。
この1mSというキーワードでタイマーについていろいろと調べていくと、CPUパフォーマンスカウンタ、メディアタイマ、といった関連の情報が出てきた。
CPUパフォーマンスカウンタは経過時間を調べる用途には都合はよいが、1mS経過したらジャンプ、といった割込み仕様にはなっていない。(イベント的な…いわゆるジャンプでの利用はできない)
マルチメディアタイマというWinmm.Lib関数内にあるTimerProc()で使われる関数のみが、WindowsOS本体でどうやら最小1mSを提供している関数のようだ。
この関数TimerProc()は、Visualシリーズのイベントタイマーの内部でコールされる最小単位の関数であり、この関数を用いてプログラムを作成する場合、残念ながらVisualアイコンのタイマーイベントは競合の関係から一切利用できない制約がある。
そして、このTimerProc()関数を記述するためのVisual言語にはVisual C++でなければならないことが判明した。
逐次コンパイルのインタプリタ方式では動作速度が遅く、極限までに動作速度の効率を高めた、いわゆるネィティブプログラム方式、MFC(マイクロソフトファンデーションクラス)でしか提供されていないことがわかった。
やはり専門家用ツールソフト(C++)にはアセンブラ(ハードウェアアクセス)に近い機能が備わっていることをあらためて再認識した。
PR