ISO15765_TransmitMessage
Method - intrepidcs API
C/C++ declare -
VB.NET declare - C#
declare - Parameters - Return
Values - Remarks - C/C++ example
- VB.NET example
- C# example
This method transmits a message using ISO15765-2 on a CAN network. icsneoISO15765_EnableNetwroks must be called before using icsneoISO15765_TransmitMessage. PCI bytes and Flow control decoding is taken care of by the dll for the transaction.
void
_stdcall icsneoISO15765_TransmitMessage(void * hObject, unsigned long ulNetworkID,stCM_ISO157652_TxMessage *pMsg,unsigned long ulBlockingTimeout);Visual Basic .NET Declare
Public
Declare
Function
icsneoISO15765_TransmitMessage
Lib
"icsneo40.dll"
(ByVal
hObject As
IntPtr,
ByVal
ulNetworkID As
Integer,
ByRef
pMsg As
stCM_ISO157652_TxMessage,
ByVal
ulBlockingTimeout As
Integer)
As
Int32
C# Declare
[DllImport("icsneo40.dll")]
public
static
extern
Int32
icsneoISO15765_TransmitMessage(IntPtr
hObject,Int32
ulNetworkID,ref
stCM_ISO157652_TxMessage
pMsg,Int32
ulBlockingTimeout);
hObject
[in] Handle which specifies the driver object
created with the OpenPort method.
ulNetwork
[in] Specifies the network to transmit the message on. See
NetworkID
List for a list of valid Network ID values. Network support varies by neoVI
device. NETID_DEVICE transmits on to the neoVI Device Virtual Network
(see users manual).
stCM_ISO157652_TxMessage
[in] This is the address of the
stCM_ISO15765_TxMessage structure. The structure contains the properties for the
multi frame message transaction.
ulBlockingTimeout
[in] Amount of time in ms to wait for flow
controls before timing out.
None.
None.
Examples
C/C++ Example
long
lResult;
int iNetwork = 1;
int iCounter = 0;
//Create
Message and adjust array to proper size
stCM_ISO157652_TxMessage tx_msg;
::ZeroMemory(&tx_msg,sizeof(stCM_ISO157652_TxMessage));
//enable
ISO15765 on HS CAN
lResult =
icsneoISO15765_EnableNetworks(m_hObject,NETID_HSCAN);
tx_msg.id = 0x7E0;
//ArbID of the message
tx_msg.vs_netid = NETID_HSCAN;
//Network to use
tx_msg.num_bytes = 64;
//The number of data bytes to use
tx_msg.padding = 0xAA;//Set
Padding Byte
//Set
the Flags
tx_msg.flags = 0;
tx_msg.paddingEnable =
true;
//Set
Flow control message
tx_msg.fc_id = 0x7E8;
//ArbID for the flow control Frame
tx_msg.fc_id_mask = 0xFFF;
//The flow control arb filter mask (response id from
receiver)
tx_msg.flowControlExtendedAddress =
0xFE; //Extended ID
tx_msg.fs_timeout = 0x100;
//Flow Control Time out in ms
tx_msg.fs_wait = 0x3000;
//Flow Control FS=Wait Timeout ms
tx_msg.blockSize = 0;
//Block size (for sending flow Control)
tx_msg.stMin = 0;
//Fill
data
for(iCounter
= 0;iCounter<64;iCounter++)
{
tx_msg.data[iCounter] =
iCounter;
}
lResult =
icsneoISO15765_TransmitMessage(m_hObject, NETID_HSCAN, &tx_msg, 3000);
C# Example
int
lResult;
int
iCounter;
int
iNetwork = 1;
byte[]
DataBytes = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
//Create Message and adjust
array to proper size
stCM_ISO157652_TxMessage
tx_msg = new
stCM_ISO157652_TxMessage();
tx_msg.data = new
byte[4096];
//enable ISO15765
lResult =
icsNeoDll.icsneoISO15765_EnableNetworks(m_hObject,
1);
tx_msg.id = 0x7E0;
//ArbID
of the message
tx_msg.vs_netid = 1;
//Network to use
tx_msg.num_bytes = 64;
//The number of data bytes to use
tx_msg.padding = 0xAA;
//Set Padding Byte
//Set Flags
int
iFlags=0;
iFlags = (iFlags | Convert.ToInt32(CSnet.stCM_ISO157652_TxMessage_Flags.paddingEnable));
//Enable Padding
tx_msg.flags = Convert.ToUInt16(iFlags);
//Set up Flow control
tx_msg.fc_id = 0x7E8;
//ArbID
for the flow control Frame
tx_msg.fc_id_mask = 0xFFF;
//The flow control arb filter
mask (response id from receiver)
tx_msg.fs_timeout = 0x100;
//Flow Control Time out in ms
tx_msg.fs_wait = 0x3000;
//Flow Control FS=Wait Timeout ms
tx_msg.blockSize = 0;//Block
size (for sending flow Control)
tx_msg.stMin = 0;
//Fill data
for
(iCounter = 0; iCounter < DataBytes.GetUpperBound(0);iCounter ++)
{
tx_msg.data[iCounter] = DataBytes[iCounter];
}
lResult = icsNeoDll.icsneoISO15765_TransmitMessage(m_hObject,
iNetwork,ref
tx_msg, 3000);
Visual Basic .NET Example
Dim
lResult
As
Integer
Dim iCounter
As
Integer
Dim iNetwork
As
Integer
= 1
Dim
DataIn() As
Byte
=
{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}
'//Create Message and adjust array to proper size
Dim
tx_msg As
stCM_ISO157652_TxMessage
tx_msg.data =
New
Byte(4096)
{}
'//Create Flow Control
Receive filter
Dim
flow_cntrl_msg As
New
stCM_ISO157652_RxMessage
IntrepidCS API Documentation - (C) Copyright 2000-2022 Intrepid Control Systems, Inc. (www.intrepidcs.com) |
Last Updated : Monday, July 03, 2017