neoVI API Docs
All DocsProductsLearning CenterSupport
  • The neoVI API - Create your own software applications
  • Basic Operation - neoVI API
    • Using the neoVI API in Visual Studio: 32 bit DLL and 64 bit OS - neoVI API
    • Using the intrepidcs API in Visual Basic - neoVI API
    • Using the neoVI API in Visual C++ - neoVI API
    • Using the neoVI API in C# - neoVI API
    • Using the neoVI API in Borland C++ Builder - neoVI API
    • Using the neoVI API in Delphi - neoVI API
    • Using the API in LabVIEW - neoVI API
    • Using the neoVI API in LabWindows CVI - neoVI API
    • Unity3D Graphic Display API
    • Using the neoVI API in Excel - neoVI API
  • WIN32 API Overview - neoVI API
    • Basic Functions Overview - neoVI API
      • FindDevices Method
      • OpenNeoDevice Method - neoVI API
      • ClosePort Method - neoVI API
      • FreeObject Method - neoVI API
    • Message Functions Overview - neoVI API
      • GetMessages Method - neoVI API
      • TxMessages Method - neoVI API
      • TxMessagesEx Method - neoVI API
      • WaitForRxMessagesWithTimeOut Method - neoVI API
      • GetTimeStampForMsg Method - neoVI API
      • ISO15765 Message Functions Overview - neoVI API
        • ISO15765_EnableNetworks Method - neoVI API
        • ISO15765_TransmitMessage Method - neoVI API
        • ISO15765_ReceiveMessage Method - neoVI API
      • Transmitting Long Messages - neoVI API
    • Device Settings Functions Overview - neoVI API
      • GetConfiguration Method - neoVI API
      • SendConfiguration Method - neoVI API
      • neoVI Fire - neoVI API
        • GetFireSettings Method - neoVI API
        • SetFireSettings Method - neoVI API
      • neoVI FIRE 2 - neoVI API
        • GetFIRE2Settings Method - neoVI API
        • SetFire2Settings Method - neoVI API
      • ValueCAN3 - neoVI API
        • GetVCAN3Settings Method - neoVI API
        • SetVCAN3Settings Method - neoVI API
      • ValueCAN 4-1 and 4-2 - neoVI API
        • GetVCAN412Settings Method - neoVI API
        • SetVCAN412Settings Method - neoVI API
      • ValueCAN 4-4 - neoVI API
        • GetVCAN4Settings Method - neoVI API
        • SetVCAN4Settings Method - neoVI API
      • ValueCAN RF - neoVI API
        • GetVCANRFSettings Method - neoVI API
        • SetVCANRFSettings Method - neoVI API
      • RAD Galaxy - neoVI API
        • GetRADGalaxySettings Method - neoVI API
        • SetRADGalaxySettings Method - neoVI API
      • General Device Settings - neoVI API
        • SetBitRate Method - neoVI API
        • SetFDBitRate Method - neoVI API
        • GetDeviceSettings Method - neoVI API
        • SetDeviceSettings Method - neoVI API
        • GetHWFirmwareInfo Method - neoVI API
        • GetDLLFirmwareInfo Method - neoVI API
        • ForceFirmwareUpdate Method - neoVI API
        • GetDeviceParameters Method - neoVI API
        • SetDeviceParameters Method - neoVI API
        • SetReflashDisplayCallbacks Method - neoVI API
        • ClearReflashDisplayCallbacks Method - neoVI API
        • GetRTC Method - neoVI API
        • SetRTC Method - neoVI API
    • Error Functions Overview - neoVI API
      • GetLastAPIError Method - neoVI API
      • GetErrorMessages Method - neoVI API
      • GetErrorInfo Method - neoVI API
      • Error Messages - neoVI API
    • General Utility Functions Overview - neoVI API
      • ValidateHObject Method - neoVI API
      • GetDLLVersion Method - neoVI API
      • StartSocketServer Method - neoVI API
      • StopSocketServer Method - neoVI API
      • GetPerformanceParameters Method - neoVI API
      • ReadWritePhySettings Method - neoVI API
      • EnableDOIPLine Method - neoVI API
      • GetGPTPStatus Method - neoVI API
    • Deprecated Functions Overview - neoVI API
      • OpenPortEx Method - neoVI API
        • OpenPortEx Hardware Type Information - neoVI API
      • FindAllCOMDevices Method - neoVI API
      • FindAllUSBDevices Method - neoVI API
      • FindNeoDevices Method - neoVI API
      • EnableNetworkCom Method - neoVI API
      • CoreMini Script interface Overview - neoVI API
        • ScriptStart Method - neoVI API
        • ScriptStop Method - neoVI API
        • ScriptLoad Method - neoVI API
        • ScriptClear Method - neoVI API
        • ScriptStartFBlock Method - neoVI API
        • ScriptGetFBlockStatus Method - neoVI API
        • ScriptStopFBlock Method - neoVI API
        • ScriptGetScriptStatus Method - neoVI API
        • ScriptReadAppSignal Method - neoVI API
        • ScriptWriteAppSignal Method - neoVI API
    • Structures, Types, and Defines Overview - neoVI API
      • Setting Structures Overview - neoVI API
        • SFireSettings Structure
        • SFire2Settings Structure
        • SVCAN3Settings Structure
        • SVCANRFSettings Structure
        • SVCAN412Settings Structure
        • SVCAN4Settings Structure
        • SVCAN4IndSettings Structure
        • SRADGalaxySettings Structure
        • SRADStar2Settings Structure
        • SRADPlutoSettings Structure
        • SRADSuperMoonSettings Structure
        • SRADMoon2Settings Structure
        • SDeviceSettings Structure
        • Sub Setting Structures Overview - neoVI API
          • CAN_SETTINGS Structure
          • SWCAN_SETTINGS Structure
          • CANFD_SETTINGS Structure
          • LIN_SETTINGS Structure
          • ISO9141_KEYWORD2000_SETTINGS Structure
          • ISO9141_KEYWORD2000__INIT_STEP Structure
          • ETHERNET_SETTINGS Structure
          • ETHERNET_SETTINGS2 Structure
          • OP_ETH_GENERAL_SETTINGS Structure
          • OP_ETH_SETTINGS Structure
          • SPluto_CustomParams Structure
          • UART_SETTINGS Structure
          • RAD_GPTP_SETTINGS Structure
          • LOGGER_SETTINGS Structure
          • DISK_SETTINGS Structure
          • TIMESYNC_ICSHARDWARE_SETTINGS Structure
          • RAD_REPORTING_SETTINGS Structure
          • STextAPISettings Structure
          • gPTP Structures
            • GPTPStatus Structure
            • timestamp Structure
            • priority_vector Structure
            • port_identity Structure
            • clock_quality Structure
            • system_identity Structure
        • NeoDevice Structure
        • NeoDeviceEx Structure
        • stAPIFirmwareInfo Structure
        • Message Structures - neoVI API
        • Status Bitfields - neoVI API
        • Using an array instead of a message structure - intrepidcs API
        • icsSpyTime Structure
        • stCM_ISO157652_TxMessage Structure
        • stCM_ISO157652_RxMessage Structure
        • Valid parameter names for the SetDeviceParameter and GetDeviceParameter methods
        • neoVI API Data Types
        • PhyRegPktClauseMess_t Structure
        • neoVI Network ID List
  • Development FAQ's
    • How do I detect and handle disconnects?
    • How do I set parameters on a neoVI device?
    • How do I open more than one channel on a single piece of hardware? - neoVI API
    • How do I communicate on LIN - neoVI API
    • How do I send a Extended Frame or a High Voltage Wakeup or ISO9141/KW2K Init? - neoVI API
  • Unix-like Operating Systems - Support
  • J2534 Support - neoVI API
  • Vehicle Spy Text API
    • ECU Object - Vehicle Spy Text API
    • Labview Text API Interface to Vehicle Spy 3
  • Vehicle Spy VSB file Spec
  • Contact Us
    • Contact Information - Intrepid Control Systems, Inc
Powered by GitBook
LogoLogo

Applications

  • Cybersecurity
  • Data Logging
  • Simulate ECU Functions
  • Diagnostics, Testing and Validation

Products

  • Vehicle Network Adapters
  • Data Loggers
  • Software
  • Automotive Ethernet Tools

Support

  • Support Resources
  • Contact Support
  • Class Schedule & Registration
  • Training Video Library

Company

  • About
  • News
  • Events
  • Contact Us

Copyright © 2025 | All Rights Reserved

On this page
Edit on GitHub
Export as PDF
  1. WIN32 API Overview - neoVI API
  2. Message Functions Overview - neoVI API

TxMessages Method - neoVI API

PreviousGetMessages Method - neoVI APINextTxMessagesEx Method - neoVI API

Last updated 2 years ago

This method transmits messages asynchronously to vehicle networks using the neoVI hardware.

int _stdcall icsneoTxMessages(void * hObject, icsSpyMessage *pMsg, int lNetworkID, int lNumMessages);c+
Public Declare Function icsneoTxMessages Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pMsg As icsSpyMessage, ByVal lNetworkID As Int32, ByVal lNumMessages As Int32) As Int32
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoTxMessages(IntPtr hObject, ref icsSpyMessage pMsg, Int32 lNetworkID, Int32 lNumMessages);

Parameters

hObject

[in] Handle which specifies the driver object created by .

pMsg

[in] This is the address of the first element of an array of structures. This array will be loaded by the application software with messages that are to be transmitted by the hardware.

lNetworkID

[in] Specifies the network to transmit the message on. See 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).

lNumMessages

[in] Specifies the number of messages to be transmitted. This parameter should always be set to one unless you are transmitting a long Message. Transmitting long messages on ISO or J1708 is described in a .

Return Values

Returns 1 if successful, 0 if an error occurred. must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI_ERROR_DLL_ISOTX_DATA_BUFFER_ALLOC = 13

NEOVI_ERROR_DLL_NEOVI_NO_RESPONSE = 75

NEOVI_ERROR_DLL_ILLEGAL_TX_NETWORK= 90

NEOVI_ERROR_DLL_3G_DEVICE_LICENSE_NEEDS_TO_BE_UPGRADED = 190

Remarks

Transmit Report

You can also identify a particular transmitted message with DescriptionID field. This two byte field (only 14 bits are used) allows the programmer to assign an arbitrary number to a message. This number is then returned in the transmit report.

Examples

void * hObject = 0; // holds a handle to the neoVI object


icsSpyMessage stMsg;
int iResult;

// Load the message to be transmitted ArbID = FF standard data 0x22 0x52 0x12 0x28
stMsg.ArbIDOrHeader = 0xFF;
stMsg.NumberBytesData = 4;
stMsg.Data[0] = 0x22;
stMsg.Data[1] = 0x52;
stMsg.Data[2] = 0x12;
stMsg.Data[3] = 0x28;

// Status Bitfield standard ID no remote frame
stMsg.StatusBitField = 0;
stMsg.StatusBitField2 = 0;


// Transmit the message on high speed can
iResult = icsneoTxMessages(hObject,&stMsg,NETID_HSCAN,1);
if (iResult == 0)
    MessageBox(hWnd,TEXT("Problem Transmitting Messages"),TEXT("neoVI Example"),0);
Dim lResult As Long
Dim stMessagesTx As icsSpyMessage
Dim lNumberBytes As Long
Dim sDataArray(7) As String

sDataArray(0) = txtDataByte1.Text ''Put data from form in
sDataArray(1) = txtDataByte2.Text ''form of Array
sDataArray(2) = txtDataByte3.Text
sDataArray(3) = txtDataByte4.Text

stMessagesTx.ArbIDOrHeader = Val("&H" & txtArbID.Text) ''Set ArbID in structur

stMessagesTx.NumberBytesData = 4 ''Set the number of Data bytes

stMessagesTx.Data1 = Val("&H" & sDataArray(0)) ''Set data bytes in structure
stMessagesTx.Data2 = Val("&H" & sDataArray(1))
stMessagesTx.Data3 = Val("&H" & sDataArray(2))
stMessagesTx.Data4 = Val("&H" & sDataArray(3))

lResult = icsneoTxMessages(m_hObject, stMessagesTx, 1, 1) ''Send message
If Not CBool(lResult) Then ''Check the status of sent message
    MsgBox("Problem Transmitting Message")
End If
int iResult; //Storage for the Result from function call
icsSpyMessage stMessagesTx = new icsSpyMessage(); //Storage for TXMessage


//Set the ArbID information for TX message
stMessagesTx.ArbIDOrHeader = ConvertFromHex(txtArbID.Text);

//Set the number of Data Bytes and set the Data Bytes values
stMessagesTx.NumberBytesData = Convert.ToByte(4);
stMessagesTx.Data1=Convert.ToByte(ConvertFromHex(txtDataByte1.Text));
stMessagesTx.Data2=Convert.ToByte(ConvertFromHex(txtDataByte2.Text));
stMessagesTx.Data3=Convert.ToByte(ConvertFromHex(txtDataByte3.Text));
stMessagesTx.Data4=Convert.ToByte(ConvertFromHex(txtDataByte4.Text));

//Clear the Status BitFields
stMessagesTx.StatusBitField = 0;
stMessagesTx.StatusBitField2 = 0;

//Call the Tx funciton
iResult=icsNeoDll.icsneoTxMessages(m_hObject,ref stMessagesTx,1,0);

if(iResult== 0) //Check the status of the Function Call
{
    MessageBox.Show ("Problem Transmitting Message");
}

This function call adds a transmit message to the transmit queue. The message will be transmitted when the network is free and all previously transmitted messages have been transmitted. Transmitting long messages which are greater than 12 bytes on ISO or J1708 is described in a .

After the messages has been transmitted there will be a transmit report message returned from the device. The transmit report will be read out with . Any message read which has the SPY_STATUS_TX_MSG (icsSpyStatusTx) bit set in the is a transmit report.

The transmit report does not necessarily mean the message was transmitted successfully. For example, the Ford SCP network will return a Transmit Report if it had tried to send a message. Therefore, the programmer should always check the GlobalError Flag in the .

To transmit different messages, set the appropriate bits in the . For example, there are bits for init waveforms, extended identifiers and remote frames.

OpenNeoDevice
icsSpyMessage
NetworkIDList
different topic
GetLastAPIError
different topic
GetMessages
status bitfield
status bitfield
status bitfields