第4章 リファレンス
6. CanGetFifoTrigger
●Visual C# .NET(x86 専用)
[DllImport(“IFCan.dll”)]
public static extern uint CanGetFifoTrigger(
uint DeviceHandle, uint FifoKind, out uint TriggerValue, out uint FifoTimeout );
●Visual Basic .NET(x86、x64 共用)
Declare Function CanGetFifoTrigger Lib "IFCan.DLL"( _ ByVal DeviceHandle As IntPtr, _
ByVal FifoKind As Integer, _ ByRef TriggerValue As Integer, _ ByRef FifoTimeout As Integer _ ) As Integer
●Visual Basic .NET(x86 専用)
Declare Function CanGetFifoTrigger Lib "IFCan.DLL"( _ ByVal DeviceHandle As Integer, _
ByVal FifoKind As Integer, _ ByRef TriggerValue As Integer, _ ByRef 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 内のタイムアウト時間が格納されます。単位は 100μs です。
新しく FIFO 内にデータが挿入されてから、dwFifoTimeout 時間の間にトリガが発生しない 場合、割り込みが発生するようになります。
例 え ば 、 dwFifoKind に CAN_RECEIVE_FIFO 、 dwTriggerValue に CAN_TRIGGER_48 、 dwFifoTimeout に 5 を設定した場合、受信 FIFO 内のデータ数が 48 になれば、トリガ条件 が満たされたことになり、割り込みが発生しますが、受信 FIFO 内のデータ数が 48 より少 ない場合、受信データが受信 FIFO に挿入されてから、次のデータが受信 FIFO に挿入され る前に、500μs(5×100μs)が経過すると、タイムアウトとみなされ、割り込みが発生 します。
デフォルトは、エラーFIFO、受信 FIFO いずれも 4 です。
送信 FIFO 設定時は、0 が返されます。
【戻り値】
正常終了した場合は、IFCAN_ERROR_SUCCESSが返されます。
IFCAN_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ い。
【備考】
本関数は、スタンダード版 CAN 製品では使用することはできません。
【使用例】
●C 言語 INT nRet;
HANDLE hDeviceHandle;
DWORD dwTrigger;
DWORD dwTimeout;
hDeviceHandle = CanOpenPort(“IFCAN1”);
: :
// 受信 FIFO トリガを取得します
nRet = CanGetFifoTrigger(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 トリガを取得します
nRet = CanGetFifoTrigger(hDeviceHandle, CAN_RECEIVE_FIFO, dwTrigger, dwTimeout)
●Delphi var
lpszName: String;
hDeviceHandle: THandle;
nRet: Integer;
dwTrigger: DWORD;
dwTimeout: DWORD;
lpszName := ‘IFCAN1’;
hDeviceHandle := CanOpenPort(lpszName);
: :
// 受信 FIFO トリガを取得します
nRet := CanGetFifoTrigger(hDeviceHandle, CAN_RECEIVE_FIFO, dwTrigger, dwTimeout);
●Visual C# .NET uint Ret;
IntPtr DeviceHandle;
uint Trigger;
uint Timeout;
DeviceHandle = IFCCAN_ANY.CanOpenPort(“IFCAN1”);
:
// 受信 FIFO トリガを取得します
●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 トリガを取得します
Ret = IFCCAN_ANY.CanGetFifoTrigger(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 トリガを取得します
Ret = IFCCAN_ANY::CanGetFifoTrigger(DeviceHandle, IFCCAN_ANY::CAN_RECEIVE_FIFO, Trigger, Timeout);
デバイス名「IFCAN1」の CAN インタフェースの受信 FIFO トリガを取得します。