LabWindowsCVI非同期タイマの使用

2463 ワード

私はソフトウェアバージョンでLabWindows CVI 8.5バージョンを使っています.私も去年模索し始めました.C言語の基礎があるので(私は電子を勉強していますが、大学はデジタル回路とC言語の授業が毎回高い以外、他のいくつかの授業は先生の気持ちに頼っています)、勉強するのは難しくないと思います.結局私はプログラミング科のクラスで生まれていません.だから后のコードはとても规范的ではないかもしれませんが、専门家の皆さんに教えてほしいです.何か间违っているか悪い习惯があったら、私に言ってください.弟は先にここでありがとうございます.くだらないことを言わないで、本題に来ました.
LabWindows CVIコントロールの追加には、次の図のようなTimerがあります.同期タイマーですが、複数のタイマーを使って同僚と仕事をすると、このタイミングが中断して卵が痛くなります.特に通信中は、メインインタフェースの機能反応が満足できないので、非同期タイマーを作って処理する必要があります.次の手順に従います.
  
 
まず、メインプログラムのソースファイルに必要なヘッダファイルを追加し、エンジニアリングに非同期タイマを追加する.Cファイルを作成します.元のファイルはCVIインストールディレクトリに配置されます.アドレスは一般的にC:Program FilesNational InstrumentsCVI 85toolslibtoolboxです.拡張子は.h/.c/.fpです.このうち.fpはコントロールのリソースファイルです.非同期タイマの名前はasynctmrで、この3つのファイルをそれぞれプロジェクトの対応するディレクトリに追加して、それから工事ファイルの中でヘッダファイルをロードして、下図に入ります
インポートヘッダファイル:#include"asynctmr.h"
次に非同期タイマの作成を開始します.main()は、割り込みが発生したときに実行される関数としてコールバック関数名を前に申請します.これは必ず以下の形式で命名し、int CVICALLBACKNAV_Timer (int reserved, int timerId, int event, void *callbackData, int eventData1, int eventData2);//CNIアップロードデータを処理する非同期タイマコールバック関数を定義します.
そのうちCNI_Timerはコールバック関数の名前で、その他は変更できません.
次に非同期タイマを作成します
3つの文があります
       plNAV_TEMER = NewAsyncTimer (1.0, -1, 0, NAV_Timer,"");//非同期タイマの作成
       SetAsyncTimerAttribute (plNAV_TEMER, ASYNC_ATTR_ENABLED, 0);
SetAsyncTimerAttribute (plNAV_TEMER, ASYNC_ATTR_INTERVAL, 0.05);
plNAV_TEMERはstatic intタイプのパラメータで、非同期タイマのハンドルを保存したり、プロパティを設定したり、リソースを解放したりするときに使用します.
SetAsyncTimerAttribute (plNAV_TEMER, ASYNC_ATTR_ENABLED, 0);この変調文は非同期タイマに使用可能であり,最後のパラメータが0の場合は割り込みプログラムを実行せず,1の場合は割り込みプログラムを実行し,この文でタイマの動作状態を制御することができる.パラメータplNAV_TEMERとは、どのコントロールやインタフェースを呼び出すかということです.
SetAsyncTimerAttribute (plNAV_TEMER, ASYNC_ATTR_INTERVAL, 0.05);この文はタイマ中断時間を定義し,0.05は50 msで1回中断することを示す.
最後に非同期タイマリソースを解放します.文は
DiscardAsyncTimer(plNAV_TEMER);//非同期タイマの解放
これはプログラム終了時にリリースすることが望ましいが、途中で必要であればSetAsyncTimerAttribute(plNAV_TEMER,ASYNC_ATTR_ENABLED,0)を通過することができる.この文はタイマーを一時停止します.
最後に割り込みコールバックプログラムを作成し、作成したフォーマットは
int CVICALLBACK NAV_Timer (int reserved, int timerId, int event,
void*callbackData,int eventData 1,int eventData 2)/CNIアップロードデータの定義処理
{
         switch (event)
       {
              case EVENT_COMMIT:

       ここにあなたの処理手順を書いてください.
                    
                     break;
       }
       return 0;
 
}
弟は私が初めて専門の学習文書を書いたので、皆さんがもっとアドバイスしてくれることを望んでいます.