Visual C# .NETでご使用の際の注意点

Visual C# .NET

関数仕様

C#用のインターフェースとしてクラスライブラリを提供しています。ドライバーの関数は、クラスライブラリのメソッドから呼び出されます。クラスライブラリ中のメソッドは、元の関数からプレフィクスを除いた形で定義されています。元の関数からプレフィクスを除いた名称のメソッドを呼び出してください。

例)TimInit関数の場合
Ret = tim.Init();

関数引数、戻り値

関数引数、戻り値の内容はご使用になる開発言語に依存せず共通になります。詳細は[関数のリファレンス]を参照下さい。

サンプルプログラム

以下にあるサンプルをご使用下さい。

\Program Files\CONTEC\API-PAC(W32)\XXX\Samples\VCSNET
(XXXはDIO/AIO/CNT等)

プロジェクトの作成

Visual Studio .NETを起動し[ファイル(F)]-[新規作成(N)]-[プロジェクト(P)]を選択します。[新しいプロジェクト]ダイアログボックス[プロジェクトの種類(P)]から[Visual C#プロジェクト]を選択し、[テンプレート(T)]から[Windows アプリケーション]を選択します。
[プロジェクト名(N)]に作成するプロジェクト名を入力し、[場所(L)]に新しいプロジェクト用のサブディレクトリを作成するディレクトリを、必要に応じて入力します。
[OK]ボタンをクリックすると、プロジェクトが作成されます。

クラスライブラリのインクルード

Visual C# .NETでドライバの関数を使用するにはクラスライブラリcsファイルが必要となります。
[プロジェクト(P)]-[既存項目の追加(G)]からcsファイルを追加します。
ネームスペースの追加
クラスライブラリ中のメソッドを使用するために、ネームスペースを追加します。C#ソースコード(拡張子.csファイル)の先頭に、以下の一行を追加してください。

例)TIMERの場合
using CtimerwCs;

クラスインスタンスの作成

クラスライブラリを使用するために、クラスのインスタンスを作成します。
C#ソースコード(拡張子.csファイル)中の、フォームクラスの先頭に以下の行を追加します。

例)TIMERの場合

public class Form1 :System.Windows.Forms.Form
{
Ctimerw  timerw = new Ctimerw(); //←追加

関数リファレンスの書式について

Visual C++とVisual C# .NETでは型宣言が変更になっています。
その為、書式の引数の型は、サンプルプログラムにある関数宣言を参照してください。

型宣言の変更例
Visual C++        Visual C# .NET
BYTE *      →    string もしくは StringBuilder
DWORD      →    uint
DWORD *   →    ref uint もしくは uint[]

コールバック関数使用時の注意点

Visual C# .NETではコールバック関数によるインターバルタイマイベントの通知を行う場合は、
コールバック関数のメモリアドレスを固定するための処理を追加する必要があります。

ここでは、これらの処理のために必要なコード例として、インターバルタイマイベント処理の場合を例として示します。
詳細はサンプルプログラムを参照してください。

■グローバル変数として宣言します。

GCHandle                           gCh;
PTM_INTERVAL_CALLBACK  pdelegate_func;
IntPtr                                pfunc;

■Loadメソッドの中で割り込み処理用デリゲートを初期化し、ガベージコレクションにより破棄されないように参照を追加。

pdelegate_func = new PTM_INTERVAL_CALLBACK(CallBackProc);
gCh= GCHandle.Alloc(pdelegate_func);

■Closedメソッドの中でハンドルを開放します。

gCh.Free();

■関数の固定ポインタを取得します。

pfunc = Marshal.GetFunctionPointerForDelegate(pdelegate_func);

■TimTimerCallBackProcでは取得した固定ポインタを指定します。

Ret = timerw.TimerCallBackProc(Id, pfunc, Temp);