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

CanStopCyclicSendMessage

ドキュメント内 GPC-4851 (ページ 56-71)

第4章 リファレンス

7. CanStopCyclicSendMessage

【パラメータ】

hDeviceHandle

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

【戻り値】

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

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

【備考】

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

【使用例】

●C 言語 INT nRet;

CAN_MESSAGE CanMessage;

HANDLE hDeviceHandle;

unsigned long ulSendValue;

hDeviceHandle = CanOpenPort(“IFCAN1”);

: :

// 送信メッセージ長のセット CanMessage.ulLength = 4;

// 送信メッセージの ID をセット

CanMessage.ulID = 0x01 | CAN_EXT_FRAME;

// フラグの設定

CanMessage.ulFlag = 0;

// 300ms 周期

CanMessage.ulTime = 300*100;

// 送信メッセージの内容をコピー

*(unsigned long*)CanMessage[i].bData = ulSendValue;

nRet = CanActivate(hDeviceHandle);

// 300ms 周期で送信

nRet = CanCyclicSendMessage(hDeviceHandle, CanMessage);

: :

// 周期送信の停止

nRet = CanStopCyclicSendMessage(hDeviceHandle);

●Visual Basic

Dim lpszName As String Dim hDeviceHandle As Long Dim CanMessage As CAN_MESSAGE Dim bSendValue(0 To 3) As Byte Dim nRet As Long

lpszName = "IFCAN1" & Chr( 0 )

hDeviceHandle = CanOpenPort(lpszName) :

‘ 送信メッセージ長のセット CanMessage.ulLength = 4

‘ 送信メッセージの ID をセット

CanMessage.ulID = &H01 Or CAN_EXT_FRAME

‘ フラグの設定

CanMessage.ulFlag = 0 ‘ 300ms 周期

CanMessage.ulTime = 300*100 ‘ 送信メッセージの内容をコピー CanMessage.bData(0) = bSendValue(0) CanMessage.bData(1) = bSendValue(1) CanMessage.bData(2) = bSendValue(2) CanMessage.bData(3) = bSendValue(3) nRet = CanActivate(hDeviceHandle)

‘ 300ms 周期で送信

nRet = CanCyclicSendMessage(hDeviceHandle, CanMessage) :

‘ 周期送信の停止

nRet = CanStopCyclicSendMessage(hDeviceHandle)

●Delphi var

lpszName: String;

hDeviceHandle: THandle;

CanMessage: CAN_MESSAGE;

bSendValue: array[0..3] of Byte;

nRet: Integer;

i: Integer;

lpszName := ‘IFCAN1’;

hDeviceHandle := CanOpenPort(lpszName);

: :

// 送信メッセージ長のセット CanMessage.ulLength := 4;

// 送信メッセージの ID をセット

CanMessage.ulID := $01 | CAN_EXT_FRAME;

// フラグの設定

CanMessage.ulFlag := 0;

// 300ms 周期

CanMessage.ulTime := 300*100;

// 送信メッセージの内容をコピー CanMessage.bData[0] := bSendValue[0];

CanMessage.bData[1] := bSendValue[1];

CanMessage.bData[2] := bSendValue[2];

CanMessage.bData[3] := bSendValue[3];

nRet := CanActivate(hDeviceHandle);

// 300ms 周期で送信

nRet := CanCyclicSendMessage(hDeviceHandle, CanMessage);

: :

// 周期送信の停止

nRet := CanStopCyclicSendMessage(hDeviceHandle);

●Visual C# .NET uint Ret;

IFCCAN_ANY.CAN_MESSAGE CanMessage = new IFCCAN_ANY.CAN_MESSAGE();

IntPtr DeviceHandle;

DeviceHandle = IFCCAN_ANY.CanOpenPort(“IFCAN1”);

// Data 配列の初期化

CanMessage.InitializeArray();

// 送信メッセージ長のセット CanMessage.Length = 4;

// 送信メッセージの ID をセット

CanMessage.ID = 0x01 | IFCCAN_ANY.CAN_EXT_FRAME;

// フラグの設定 CanMessage.Flag = 0;

// 300ms 周期

CanMessage.Time = 300*100;

// 送信メッセージの内容をセット CanMessage.Data[0] = 0x01;

CanMessage.Data[1] = 0x02;

CanMessage.Data[2] = 0x03;

CanMessage.Data[3] = 0x04;

Ret = IFCCAN_ANY.CanActivate(DeviceHandle);

// 300ms 周期で送信

Ret = IFCCAN_ANY.CanCyclicSendMessage(DeviceHandle, ref CanMessage);

// 周期送信の停止

Ret = IFCCAN_ANY.CanStopCyclicSendMessage(DeviceHandle);

●Visual Basic .NET

Dim DeviceHandle As Integer

Dim CanMessage As IFCCAN_ANY.CAN_MESSAGE = New IFCCAN_ANY.CAN_MESSAGE Dim Ret As Integer

DeviceHandle = IFCCAN_ANY.CanOpenPort(“IFCAN1”) :

‘ Data 配列の初期化

CanMessage.InitializeArray()

‘ 送信メッセージ長のセット CanMessage.Length = 4

‘ 送信メッセージの ID をセット

CanMessage.ID = &H01 Or IFCCAN_ANY.CAN_EXT_FRAME

‘ フラグの設定 CanMessage.Flag = 0

‘ 300ms 周期

CanMessage.Time = 300*100

‘ 送信メッセージの内容をコピー CanMessage.Data(0) = &H01 CanMessage.Data(1) = &H02 CanMessage.Data(2) = &H03 CanMessage.Data(3) = &H04

Ret = IFCCAN_ANY.CanActivate(DeviceHandle)

‘ 300ms 周期で送信

Ret = IFCCAN_ANY.CanCyclicSendMessage(DeviceHandle, CanMessage) :

‘ 周期送信の停止

Ret = IFCCAN_ANY.CanStopCyclicSendMessage(DeviceHandle)

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

IFCCAN_ANY::CAN_MESSAGE CanMessage;

IntPtr DeviceHandle;

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

// Data 配列の初期化

CanMessage.InitializeArray();

// 送信メッセージ長のセット CanMessage.Length = 4;

// 送信メッセージの ID をセット

CanMessage.ID = 0x01 | IFCCAN_ANY::CAN_EXT_FRAME;

// フラグの設定 CanMessage.Flag = 0;

// 300ms 周期

CanMessage.Time = 300*100;

// 送信メッセージの内容をセット CanMessage.Data[0] = 0x01;

CanMessage.Data[1] = 0x02;

CanMessage.Data[2] = 0x03;

CanMessage.Data[3] = 0x04;

Ret = IFCCAN_ANY::CanActivate(DeviceHandle);

// 300ms 周期で送信

Ret = IFCCAN_ANY::CanCyclicSendMessage(DeviceHandle, CanMessage);

// 周期送信の停止

Ret = IFCCAN_ANY::CanStopCyclicSendMessage(DeviceHandle);

デバイス名「IFCAN1」の CAN インタフェースの周期送信を停止します。

8. CanStopMultiCyclicSendMessage

【機能】

CAN メッセージの周期送信を停止します。

データ送信中にこの関数を実行すると、現在送信中のデータの送信が完了してから、周期送信 が停止されます。

この関数で周期送信を停止した場合、周期送信停止イベントは発生しません。

【書式】

●C 言語

INT CanStopMultiCyclicSendMessage(

HANDLE hDeviceHandle, DWORD dwRoute );

●Visual Basic

Declare Function CanStopMultiCyclicSendMessage Lib "IFCan.DLL"( _ ByVal hDeviceHandle As Long, _

ByVal dwRoute As Long _ )As Long

●Delphi

function CanStopMultiCyclicSendMessage(

hDeviceHandle: THandle;

dwRoute: DWORD

): Integer; stdcall; external ‘IFCan.DLL’;

●Visual C# .NET(x86、x64 共用)

[DllImport(“IFCan.dll”)]

public static extern uint CanStopMultiCyclicSendMessage(

IntPtr DeviceHandle, uint Route

);

●Visual C# .NET(x86 専用)

[DllImport(“IFCan.dll”)]

public static extern uint CanStopMultiCyclicSendMessage(

uint DeviceHandle, uint Route

);

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

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

ByVal Route As Integer _ ) As Integer

●Visual Basic .NET(x86 専用)

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

ByVal Route As Integer _ ) As Integer

【パラメータ】

hDeviceHandle

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

dwRoute

周期送信を停止するメッセージの番号を 1~12 の範囲で指定します。

【戻り値】

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

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

【備考】

本関数は、PCI-485420P、CPZ-485420P、PEX-485420、CSI-485420、PEX-H485940P で使用できま す。

【使用例】

●C 言語 INT nRet;

CAN_MESSAGE CanMessage;

HANDLE hDeviceHandle;

hDeviceHandle = CanOpenPort(“IFCAN1”);

: :

// 送信周期を 100ms に設定

nRet = CanSetTransmissionCycle(hDeviceHandle, CAN_ROUTE_4_6, 100*1000);

// 送信メッセージのセット CanMessage.ulLength = 4;

CanMessage.ulID = 0x01;

CanMessage.ulFlag = 0;

CanMessage.ulTime = 0;

CanMessage[0].bData = 0x11;

CanMessage[1].bData = 0x22;

CanMessage[2].bData = 0x33;

CanMessage[3].bData = 0x44;

nRet = CanActivate(hDeviceHandle);

// メッセージ番号 4 の周期送信開始

nRet = CanMultiCyclicSendMessage(hDeviceHandle, 4, CanMessage);

: :

// メッセージ番号 4 の周期送信の停止

nRet = CanStopMultiCyclicSendMessage(hDeviceHandle, 4);

●Visual Basic

Dim lpszName As String Dim hDeviceHandle As Long Dim CanMessage As CAN_MESSAGE Dim nRet As Long

lpszName = "IFCAN1" & Chr( 0 )

hDeviceHandle = CanOpenPort(lpszName) :

‘ 送信周期を 100ms に設定

nRet = CanSetTransmissionCycle(hDeviceHandle, CAN_ROUTE_4_6, 100*1000)

‘ 送信メッセージのセット CanMessage.ulLength = 4 CanMessage.ulID = &H01 CanMessage.ulFlag = 0 CanMessage.ulTime = 0 CanMessage[0].bData = &H11 CanMessage[1].bData = &H22 CanMessage[2].bData = &H33 CanMessage[3].bData = &H44 nRet = CanActivate(hDeviceHandle)

‘ メッセージ番号 4 の周期送信開始

nRet = CanMultiCyclicSendMessage(hDeviceHandle, 4, CanMessage) :

‘ メッセージ番号 4 の周期送信の停止

nRet = CanStopMultiCyclicSendMessage(hDeviceHandle, 4)

●Delphi nRet: Integer;

lpszName := ‘IFCAN1’;

hDeviceHandle := CanOpenPort(lpszName);

: :

// 送信周期を 100ms に設定

nRet := CanSetTransmissionCycle(hDeviceHandle, CAN_ROUTE_4_6, 100*1000);

// 送信メッセージのセット CanMessage.ulLength := 4;

CanMessage.ulID := $01;

CanMessage.ulFlag := 0;

CanMessage.ulTime := 0;

CanMessage.bData[0] := $11;

CanMessage.bData[1] := $22;

CanMessage.bData[2] := $33;

CanMessage.bData[3] := $44;

nRet := CanActivate(hDeviceHandle);

// メッセージ番号 4 の周期送信開始

nRet := CanMultiCyclicSendMessage(hDeviceHandle, 4, CanMessage);

: :

// メッセージ番号 4 の周期送信の停止

nRet := CanStopMultiCyclicSendMessage(hDeviceHandle, 4);

●Visual C# .NET uint Ret;

IFCCAN_ANY.CAN_MESSAGE CanMessage = new IFCCAN_ANY.CAN_MESSAGE();

IntPtr DeviceHandle;

DeviceHandle = IFCCAN_ANY.CanOpenPort(“IFCAN1”);

: :

// 送信周期を 100ms に設定

Ret = IFCCAN_ANY.CanSetTransmissionCycle(DeviceHandle, CAN_ROUTE_4_6, 100*1000);

// 送信メッセージのセット CanMessage.InitializezArray();

CanMessage.Length = 4;

CanMessage.ID = 0x01;

CanMessage.Flag = 0;

CanMessage.Time = 0;

CanMessage.Data[0] = 0x11;

CanMessage.Data[1] = 0x22;

CanMessage.Data[2] = 0x33;

CanMessage.Data[3] = 0x44;

Ret = IFCCAN_ANY.CanActivate(DeviceHandle);

// メッセージ番号 4 の周期送信開始

Ret = IFCCAN_ANY.CanMultiCyclicSendMessage(DeviceHandle, 4, ref CanMessage);

: :

// メッセージ番号 4 の周期送信の停止

Ret = IFCCAN_ANY.CanStopMultiCyclicSendMessage(DeviceHandle, 4);

●Visual Basic .NET

Dim DeviceHandle As Integer

Dim CanMessage As IFCCAN_ANY.CAN_MESSAGE = New IFCCAN_ANY.CAN_MESSAGE Dim Ret As Integer

DeviceHandle = IFCCAN_ANY.CanOpenPort(“IFCAN1”) :

‘ 送信周期を 100ms に設定

Ret = IFCCAN_ANY.CanSetTransmissionCycle(DeviceHandle, CAN_ROUTE_4_6, 100*1000)

‘ 送信メッセージのセット CanMessage.InitializeArray() CanMessage.Length = 4

CanMessage.ID = &H01 CanMessage.Flag = 0 CanMessage.Time = 0 CanMessage.Data(0) = &H11 CanMessage.Data(1) = &H22 CanMessage.Data(2) = &H33 CanMessage.Data(3) = &H44

Ret = IFCCAN_ANY.CanActivate(DeviceHandle)

‘ メッセージ番号 4 の周期送信開始

Ret = IFCCAN_ANY.CanMultiCyclicSendMessage(DeviceHandle, 4, CanMessage) :

‘ メッセージ番号 4 の周期送信の停止

Ret = IFCCAN_ANY.CanStopMultiCyclicSendMessage(hDeviceHandle, 4)

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

IFCCAN_ANY::CAN_MESSAGE CanMessage;

IntPtr DeviceHandle;

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

: :

// 送信周期を 100ms に設定

Ret = IFCCAN_ANY::CanSetTransmissionCycle(DeviceHandle,

IFCCAN_ANY::CAN_ROUTE_4_6, 100*1000);

// 送信メッセージのセット CanMessage.InitializezArray();

CanMessage.Length = 4;

CanMessage.ID = 0x01;

CanMessage.Flag = 0;

CanMessage.Time = 0;

CanMessage.Data[0] = 0x11;

CanMessage.Data[1] = 0x22;

CanMessage.Data[2] = 0x33;

CanMessage.Data[3] = 0x44;

Ret = IFCCAN_ANY::CanActivate(DeviceHandle);

// メッセージ番号 4 の周期送信開始

Ret = IFCCAN_ANY::CanMultiCyclicSendMessage(DeviceHandle, 4, CanMessage);

: :

// メッセージ番号 4 の周期送信の停止

Ret = IFCCAN_ANY::CanStopMultiCyclicSendMessage(DeviceHandle, 4);

デバイス名「IFCAN1」の CAN インタフェースの周期送信を停止します。

ドキュメント内 GPC-4851 (ページ 56-71)