Skip to content

Node Simulation Examples

Node simulation supports both C and C++ compilation. Below are the examples in C++ for CAN and J1939.

/* This file is generated by BUSMASTER */
/* VERSION [1.1] */
/* BUSMASTER VERSION [1.7.0] */
/* PROTOCOL [J1939] */
/* Start J1939 include header */
#include <Windows.h>
#include <J1939Includes.h>
/* End J1939 include header */
/* Start J1939 global variable */
/* End J1939 global variable */
/* Start J1939 Function Prototype */
GCC_EXTERN void GCC_EXPORT OnTimer_Timer_1000( );
GCC_EXTERN void GCC_EXPORT OnKey_q(unsigned char KeyValue);
GCC_EXTERN void GCC_EXPORT OnPGN_All(STJ1939_MSG* RxMsg);
GCC_EXTERN void GCC_EXPORT OnEvent_DataConf(UINT32 unPGN, BYTE bySrc, BYTE byDest, BOOL bSuccess);
GCC_EXTERN void GCC_EXPORT OnEvent_AddressClaim(BYTE byAddress);
int Utils_(int x,int y);
GCC_EXTERN void GCC_EXPORT OnDLL_Load();
GCC_EXTERN void GCC_EXPORT OnDLL_Unload();
GCC_EXTERN void GCC_EXPORT OnTimer_dew_10( );
GCC_EXTERN void GCC_EXPORT OnBus_Connect();
GCC_EXTERN void GCC_EXPORT OnBus_Disconnect();
GCC_EXTERN void GCC_EXPORT OnPGNID_100(STJ1939_MSG* RxMsg);
/* End J1939 Function Prototype */
/* Start J1939 generated function - OnTimer_Timer_1000 */
void OnTimer_Timer_1000( )
{
STJ1939_MSG msg;
msg.m_sMsgProperties.m_byChannel = 1;
msg.m_sMsgProperties.m_eType = MSG_TYPE_DATA;
msg.m_sMsgProperties.m_eDirection = DIR_TX;
msg.m_sMsgProperties.m_uExtendedID.m_s29BitId.m_bySrcAddress = 5;
msg.m_unDLC = 5;
msg.m_pbyData = new BYTE[15];
BYTE tmp[] = {12, 34, 45, 56, 78};
memcpy(msg.m_pbyData, tmp, 5);
Trace("J1939 Time Handler");
SendMsg (&msg);
}/* End J1939 generated function - OnTimer_Timer_1000 */
/* Start J1939 generated function - OnKey_q */
void OnKey_q(unsigned char KeyValue)
{
STJ1939_MSG msg;
msg.m_sMsgProperties.m_byChannel = 1;
msg.m_sMsgProperties.m_eType = MSG_TYPE_DATA;
msg.m_sMsgProperties.m_eDirection = DIR_TX;
msg.m_sMsgProperties.m_uExtendedID.m_s29BitId.m_bySrcAddress = 5;
msg.m_unDLC = 5;
msg.m_pbyData = new BYTE[15];
BYTE tmp[] = {11, 22, 33, 44, 55};
memcpy(msg.m_pbyData, tmp, 5);
SendMsg (&msg);
}/* End J1939 generated function - OnKey_q */
/* Start J1939 generated function - OnPGN_All */
void OnPGN_All(STJ1939_MSG* RxMsg)
{
/* TODO */
Trace("MSG ALL");
STJ1939_MSG msg;
msg.m_sMsgProperties.m_byChannel = 1;
msg.m_sMsgProperties.m_eType = MSG_TYPE_DATA;
msg.m_sMsgProperties.m_eDirection = DIR_TX;
msg.m_sMsgProperties.m_uExtendedID.m_s29BitId.m_bySrcAddress = 5;
msg.m_unDLC = 8;
msg.m_pbyData = new BYTE[15];
BYTE tmp[] = {12, 34, 45, 56, 78};
memcpy(msg.m_pbyData, tmp, 5);
SendMsg (&msg);
}/* End J1939 generated function - OnPGN_All */
/* Start J1939 generated function - OnEvent_DataConf */
void OnEvent_DataConf(UINT32 unPGN, BYTE bySrc, BYTE byDest, BOOL bSuccess)
{
/* TODO */
Trace("Data Handler");
}/* End J1939 generated function - OnEvent_DataConf */
/* Start J1939 generated function - OnEvent_AddressClaim */
void OnEvent_AddressClaim(BYTE byAddress)
{
/* TODO */
Trace("Address Claim Event");
}/* End J1939 generated function - OnEvent_AddressClaim */
/* Start J1939 generated function - Utils_ */
int Utils_(int x,int y)
{
/* TODO */
}/* End J1939 generated function - Utils_ */
/* Start J1939 generated function - OnDLL_Load */
void OnDLL_Load()
{
Trace("Dll has been loaded");
/* TODO: Define and Initialise the following variables*/
UINT ReturnValue ;
ReturnValue = EnableLogging();
}/* End J1939 generated function - OnDLL_Load */
/* Start J1939 generated function - OnDLL_Unload */
void OnDLL_Unload()
{
Trace("Dll is unloaded");
/* TODO: Define and Initialise the following variables*/
UINT ReturnValue ;
ReturnValue = DisableLogging();
}/* End J1939 generated function - OnDLL_Unload */
/* Start J1939 generated function - OnTimer_dew_10 */
void OnTimer_dew_10( )
{
STJ1939_MSG msg;
msg.m_sMsgProperties.m_byChannel = 1;
msg.m_sMsgProperties.m_eType = MSG_TYPE_DATA;
msg.m_sMsgProperties.m_eDirection = DIR_TX;
msg.m_sMsgProperties.m_uExtendedID.m_s29BitId.m_bySrcAddress = 5;
msg.m_unDLC = 5;
msg.m_pbyData = new BYTE[15];
BYTE tmp[] = {12, 34, 45, 56, 78};
memcpy(msg.m_pbyData, tmp, 5);
Trace("J1939 Time Handler");
SendMsg (&msg);
}/* End J1939 generated function - OnTimer_dew_10 */
/* Start J1939 generated function - OnBus_Connect */
void OnBus_Connect()
{
Trace("Bus Disconnected");
}/* End J1939 generated function - OnBus_Connect */
/* Start J1939 generated function - OnBus_Disconnect */
void OnBus_Disconnect()
{
Trace("Bus Disconnected");
}/* End J1939 generated function - OnBus_Disconnect */
/* Start J1939 generated function - OnPGNID_100 */
void OnPGNID_100(STJ1939_MSG* RxMsg)
{
Trace("MSG ALL");
STJ1939_MSG msg;
msg.m_sMsgProperties.m_byChannel = 2;
msg.m_sMsgProperties.m_eType = MSG_TYPE_DATA;
msg.m_sMsgProperties.m_eDirection = DIR_TX;
msg.m_sMsgProperties.m_uExtendedID.m_s29BitId.m_bySrcAddress = 5;
msg.m_unDLC = 8;
msg.m_pbyData = new BYTE[15];
BYTE tmp[] = {18, 58, 45, 56, 11};
memcpy(msg.m_pbyData, tmp, 5);
SendMsg (&msg);
}/* End J1939 generated function - OnPGNID_100 */
```### CAN
```text
/* This file is generated by BUSMASTER */
/* VERSION [1.1] */
/* BUSMASTER VERSION [1.7.0] */
/* PROTOCOL [CAN] */
/* Start BUSMASTER include header */
#include <Windows.h>
#include <CANIncludes.h>
/* End BUSMASTER include header */
/* Start BUSMASTER global variable */
/* End BUSMASTER global variable */
/* Start BUSMASTER Function Prototype */
GCC_EXTERN void GCC_EXPORT OnMsg_All(STCAN_MSG RxMsg);
GCC_EXTERN void GCC_EXPORT OnKey_d(unsigned char KeyValue);
GCC_EXTERN void GCC_EXPORT OnError_Warning_Limit(SCAN_ERR ErrorMsg);
GCC_EXTERN void GCC_EXPORT OnDLL_Load();
GCC_EXTERN void GCC_EXPORT OnDLL_Unload();
GCC_EXTERN void GCC_EXPORT OnTimer_new_100( );
GCC_EXTERN void GCC_EXPORT OnBus_Connect();
GCC_EXTERN void GCC_EXPORT OnBus_Disconnect();
/* End BUSMASTER Function Prototype */
/* Start BUSMASTER generated function - OnMsg_All */
void OnMsg_All(STCAN_MSG RxMsg)
{
// Initialise message structure
RxMsg.m_unMsgID = 0x100; // Message ID
RxMsg.m_ucEXTENDED = FALSE; // Standard Message type
RxMsg.m_ucRTR = FALSE; // Not RTR type
RxMsg.m_ucDLC = 8; // Length is 8 Bytes
RxMsg.m_sWhichBit.m_aulData[0] = 10; // Lower 4 Bytes
RxMsg.m_sWhichBit.m_aulData[1] = 20; // Upper 4 Bytes
RxMsg.m_ucChannel = 1;
SendMsg(RxMsg);
}/* End BUSMASTER generated function - OnMsg_All */
/* Start BUSMASTER generated function - OnKey_d */
void OnKey_d(unsigned char KeyValue)
{
Connect();
}/* End BUSMASTER generated function - OnKey_d */
/* Start BUSMASTER generated function - OnError_Warning_Limit */
void OnError_Warning_Limit(SCAN_ERR ErrorMsg)
{
Trace("Warning Limit reached");
}/* End BUSMASTER generated function - OnError_Warning_Limit */
/* Start BUSMASTER generated function - OnDLL_Load */
void OnDLL_Load()
{
/* TODO: Define and Initialise the following variables*/
EnableLogging();
}/* End BUSMASTER generated function - OnDLL_Load */
/* Start BUSMASTER generated function - OnDLL_Unload */
void OnDLL_Unload()
{
/* TODO: Define and Initialise the following variables*/
DisableLogging();
}/* End BUSMASTER generated function - OnDLL_Unload */
/* Start BUSMASTER generated function - OnTimer_new_100 */
void OnTimer_new_100( )
{
// Initialise message structure
STCAN_MSG sMsg;
sMsg.m_unMsgID = 0x20; // Message ID
sMsg.m_ucEXTENDED = FALSE; // Standard Message type
sMsg.m_ucRTR = FALSE; // Not RTR type
sMsg.m_ucDLC = 8; // Length is 8 Bytes
sMsg.m_sWhichBit.m_aulData[0] = 10; // Lower 4 Bytes
sMsg.m_sWhichBit.m_aulData[1] = 20; // Upper 4 Bytes
sMsg.m_sWhichBit.m_aulData[2] = 30; // Upper 4 Bytes
sMsg.m_ucChannel = 1;
SendMsg(sMsg);
}/* End BUSMASTER generated function - OnTimer_new_100 */
/* Start BUSMASTER generated function - OnBus_Connect */
void OnBus_Connect()
{
Trace("Bus connected");
}/* End BUSMASTER generated function - OnBus_Connect */
/* Start BUSMASTER generated function - OnBus_Disconnect */
void OnBus_Disconnect()
{
Trace("Bus Disconnected");
}/* End BUSMASTER generated function - OnBus_Disconnect */

Authoritative source: BUSMASTER DITA help source node_simulation_examples.dita, compiled into BUSMASTER.CHM with the application.