• 検索結果がありません。

CanSetFifoTrigger

ドキュメント内 GPC-4851 (ページ 45-51)

第4章 リファレンス

5. CanSetFifoTrigger

●Visual C# .NET(x86 専用)

[DllImport(“IFCan.dll”)]

public static extern uint CanSetFifoTrigger(

uint DeviceHandle, uint FifoKind, uint TriggerValue, uint FifoTimeout );

●Visual Basic .NET(x86、x64 共用)

Declare Function CanSetFifoTrigger Lib "IFCan.DLL"( _ ByVal DeviceHandle As IntPtr, _

ByVal FifoKind As Integer, _ ByVal TriggerValue As Integer, _ ByVal FifoTimeout As Integer _ ) As Integer

●Visual Basic .NET(x86 専用)

Declare Function CanSetFifoTrigger Lib "IFCan.DLL"( _ ByVal DeviceHandle As Integer, _

ByVal FifoKind As Integer, _ ByVal TriggerValue As Integer, _ ByVal FifoTimeout As Integer _ ) As Integer

【パラメータ】

hDeviceHandle

CanOpenPort 関数で取得したデバイスハンドルを指定してください。

dwFifoKind

設定する FIFO を選択します。下記の中から選択してください。

識別子 値 内容

CAN_RECEIVE_FIFO 0 受信 FIFO(※1) CAN_ERROR_FIFO 1 エラーFIFO

CAN_SEND_FIFO 2 送信 FIFO(※1, 2)

※1 高機能版、CAN FD 版 CAN 製品のみ有効です。

※2 FIFO 送信モードに設定していない場合はエラーとなります。

dwTriggerValue

トリガ値を下記の値で指定します。デフォルトは 0 です。

識別子 値 内容

CAN_TRIGGER_1 0 受信/エラーFIFO 内のデータ数が 0→1 で割り込み発生。

送信 FIFO の場合、FIFO 内のデータ数が 1→0 で割り込み発生。

CAN_TRIGGER_16 1 受信/エラーFIFO 内のデータ数が 15→16 で割り込み発生。

送信 FIFO の場合、FIFO 内のデータ数が 16→15 で割り込み発生。

CAN_TRIGGER_32 2 受信/エラーFIFO 内のデータ数が 31→32 で割り込み発生。

送信 FIFO の場合、FIFO 内のデータ数が 32→31 で割り込み発生。

CAN_TRIGGER_48 3 受信/エラーFIFO 内のデータ数が 47→48 で割り込み発生。

送信 FIFO の場合、FIFO 内のデータ数が 48→47 で割り込み発生。

dwFifoTimeout

受信 FIFO、エラーFIFO 内のタイムアウト時間を設定します。単位は 100μs です。

新しく FIFO 内にデータが挿入されてから、dwFifoTimeout 時間の間にトリガが発生しない 場合、割り込みが発生するようになります。

例えば、受信 FIFO のトリガ設定を行うために、dwFifoKind に CAN_RECEIVE_FIFO を設定 し、dwTriggerValue に CAN_TRIGGER_48、dwFifoTimeout に 5 を設定した場合、受信 FIFO 内のデータ数が 48 になれば、トリガ条件が満たされたことになり、(ドライバ内で)割り 込みが発生します。また、受信 FIFO 内のデータ数が 48 より少ない場合、受信データが受 信 FIFO に挿入されてから、次のデータが受信 FIFO に挿入される前に、500μs(5×100μ

s)が経過すると、タイムアウトとみなされ、(ドライバ内で)割り込みが発生します。

デフォルトは、エラーFIFO、受信 FIFO いずれも 4 です。

設定可能範囲は 1~255 です。

送信 FIFO 設定時は、設定値は無効となります。

【戻り値】

正常終了した場合は、IFCAN_ERROR_SUCCESSが返されます。

IFCAN_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ い。

【備考】

本関数は、スタンダード版 CAN 製品では使用することはできません。

【使用例】

●C 言語 INT nRet;

HANDLE hDeviceHandle;

DWORD dwTrigger;

DWORD dwTimeout;

hDeviceHandle = CanOpenPort(“IFCAN1”);

: :

// 受信 FIFO トリガを設定します dwTrigger = CAN_TRIGGER_16;

dwTimeout = 8;

nRet = CanSetFifoTrigger(hDeviceHandle, CAN_RECEIVE_FIFO, dwTrigger, dwTimeout);

●Visual Basic

Dim lpszName As String Dim hDeviceHandle As Long Dim nRet As Long

Dim dwTrigger As Long Dim dwTimeout As Long

lpszName = "IFCAN1" & Chr( 0 )

hDeviceHandle = CanOpenPort(lpszName) :

‘ 受信 FIFO トリガを設定します dwTrigger = CAN_TRIGGER_16 dwTimeout = 8

nRet = CanSetFifoTrigger(hDeviceHandle, CAN_RECEIVE_FIFO, dwTrigger, dwTimeout)

●Delphi var

lpszName: String;

hDeviceHandle: THandle;

nRet: Integer;

dwTrigger: DWORD;

dwTimeout: DWORD;

lpszName := ‘IFCAN1’;

hDeviceHandle := CanOpenPort(lpszName);

: :

// 受信 FIFO トリガを設定します dwTrigger := CAN_TRIGGER_16;

dwTimeout := 8;

nRet := CanSetFifoTrigger(hDeviceHandle, CAN_RECEIVE_FIFO, dwTrigger, dwTimeout);

●Visual C# .NET uint Ret;

IntPtr DeviceHandle;

uint Trigger;

uint Timeout;

DeviceHandle = IFCCAN_ANY.CanOpenPort(“IFCAN1”);

// 受信 FIFO トリガを設定します Trigger = IFCCAN_ANY.CAN_TRIGGER_16;

Timeout = 8;

Ret = IFCCAN_ANY.CanSetFifoTrigger(DeviceHandle, IFCCAN_ANY.CAN_RECEIVE_FIFO, Trigger, Timeout);

●Visual Basic .NET

Dim DeviceHandle As Integer Dim Ret As Integer

Dim Trigger As Integer Dim Timeout As Integer

DeviceHandle = IFCCAN_ANY.CanOpenPort(“IFCAN1”) :

‘ 受信 FIFO トリガを設定します

Trigger = IFCCAN_ANY.CAN_TRIGGER_16 Timeout = 8

Ret = IFCCAN_ANY.CanSetFifoTrigger(DeviceHandle, IFCCAN_ANY.CAN_RECEIVE_FIFO, _ Trigger, Timeout)

●Visual C++ CLR プロジェクト unsigned int Ret;

IntPtr DeviceHandle;

unsigned int Trigger;

unsigned int Timeout;

DeviceHandle = IFCCAN_ANY::CanOpenPort(“IFCAN1”);

// 受信 FIFO トリガを設定します

Trigger = IFCCAN_ANY::CAN_TRIGGER_16;

Timeout = 8;

Ret = IFCCAN_ANY::CanSetFifoTrigger(DeviceHandle, IFCCAN_ANY::CAN_RECEIVE_FIFO, Trigger, Timeout);

デバイス名「IFCAN1」の CAN インタフェースの受信 FIFO トリガを設定します。

ドキュメント内 GPC-4851 (ページ 45-51)