Attribute VB_Name = "Module1" Public Const NEODEVICE_BLUE As Long = 1 Public Const NEODEVICE_DW_VCAN As Long = 4 Public Const NEODEVICE_FIRE As Long = 8 Public Const NEODEVICE_VCAN3 As Long = 16 Public Const NEODEVICE_ANY As Long = 65535 '// Configuration Array constants '// high speed CAN neoVI / valuecan baud rate constants Public Const NEO_CFG_MPIC_HS_CAN_CNF1 = 512 + 10 Public Const NEO_CFG_MPIC_HS_CAN_CNF2 = 512 + 9 Public Const NEO_CFG_MPIC_HS_CAN_CNF3 = 512 + 8 Public Const NEO_CFG_MPIC_HS_CAN_MODE = 512 + 54 '// med speed CAN Public Const NEO_CFG_MPIC_MS_CAN_CNF1 = 512 + 22 Public Const NEO_CFG_MPIC_MS_CAN_CNF2 = 512 + 21 Public Const NEO_CFG_MPIC_MS_CAN_CNF3 = 512 + 20 Public Const NEO_CFG_MPIC_SW_CAN_CNF1 = 512 + 34 Public Const NEO_CFG_MPIC_SW_CAN_CNF2 = 512 + 33 Public Const NEO_CFG_MPIC_SW_CAN_CNF3 = 512 + 32 Public Const NEO_CFG_MPIC_LSFT_CAN_CNF1 = 512 + 46 Public Const NEO_CFG_MPIC_LSFT_CAN_CNF2 = 512 + 45 Public Const NEO_CFG_MPIC_LSFT_CAN_CNF3 = 512 + 44 '// Protocols Public Const SPY_PROTOCOL_CUSTOM = 0 Public Const SPY_PROTOCOL_CAN = 1 Public Const SPY_PROTOCOL_GMLAN = 2 Public Const SPY_PROTOCOL_J1850VPW = 3 Public Const SPY_PROTOCOL_J1850PWM = 4 Public Const SPY_PROTOCOL_ISO9141 = 5 Public Const SPY_PROTOCOL_Keyword2000 = 6 Public Const SPY_PROTOCOL_GM_ALDL_UART = 7 Public Const SPY_PROTOCOL_CHRYSLER_CCD = 8 Public Const SPY_PROTOCOL_CHRYSLER_SCI = 9 Public Const SPY_PROTOCOL_FORD_UBP = 10 Public Const SPY_PROTOCOL_BEAN = 11 Public Const SPY_PROTOCOL_LIN = 12 '//device ID's Public Const NETID_DEVICE = 0 Public Const NETID_HSCAN = 1 Public Const NETID_MSCAN = 2 Public Const NETID_SWCAN = 3 Public Const NETID_LSFTCAN = 4 Public Const NETID_FORDSCP = 5 Public Const NETID_J1708 = 6 Public Const NETID_AUX = 7 Public Const NETID_JVPW = 8 Public Const NETID_ISO = 9 Public Const NETID_LIN = 9 Public Const NETID_ISOPIC = 10 Public Const NETID_MAIN51 = 11 Public Const NETID_SCI = 13 Public Const NETID_ISO2 = 14 Public Const NETID_FIRE_HSCAN1 = 41 Public Const NETID_FIRE_HSCAN2 = 42 Public Const NETID_FIRE_MSCAN1 = 43 Public Const NETID_FIRE_MSCAN2 = 44 Public Const NETID_FIRE_HSCAN3 = 44 Public Const NETID_FIRE_SWCAN = 45 Public Const NETID_FIRE_LSFT = 46 Public Const NETID_FIRE_LIN1 = 47 Public Const NETID_FIRE_LIN2 = 48 Public Const NETID_FIRE_LIN3 = 49 Public Const NETID_FIRE_LIN4 = 50 Public Enum icsSpyDataStatusBitfield icsSpyStatusGlobalError = 2 ^ 0 icsSpyStatusTx = 2 ^ 1 icsSpyStatusXtdFrame = 2 ^ 2 icsSpyStatusRemoteFrame = 2 ^ 3 icsSpyStatusErrCRCError = 2 ^ 4 icsSpyStatusCANErrorPassive = 2 ^ 5 icsSpyStatusErrIncompleteFrame = 2 ^ 6 icsSpyStatusErrLostArbitration = 2 ^ 7 icsSpyStatusErrUndefined = 2 ^ 8 icsSpyStatusErrCANBusOff = 2 ^ 9 icsSpyStatusErrCANErrorWarning = 2 ^ 10 icsSpyStatusBusShortedPlus = 2 ^ 11 icsSpyStatusBusShortedGnd = 2 ^ 12 icsSpyStatusCheckSumError = 2 ^ 13 icsSpyStatusErrBadMessageBitTimeError = 2 ^ 14 icsSpyStatusIFRData = 2 ^ 15 icsSpyStatusHardwareCommError = 2 ^ 16 icsSpyStatusExpectedLengthError = 2 ^ 17 icsSpyStatusIncomingNoMatch = 2 ^ 18 icsSpyStatusBreak = 2 ^ 19 icsSpyStatusAVT_VSIRecOverflow = 2 ^ 20 icsSpyStatusTestTrigger = 2 ^ 21 icsSpyStatusAudioCommentType = 2 ^ 22 icsSpyStatusGPSDataValue = 2 ^ 23 icsSpyStatusAnalogDigitalInputValue = 2 ^ 24 icsSpyStatusTextCommentType = 2 ^ 25 icsSpyStatusNetworkMessageType = 2 ^ 26 icsSpyStatusVSI_TxUnderRun = 2 ^ 27 icsSpyStatusVSI_IFR_CRCBit = 2 ^ 28 icsSpyStatusInitMessage = 2 ^ 29 icsSpyStatusHighSpeed = 2 ^ 30 End Enum Public Enum icsSpyDataStatusBitfield2 icsSpyStatusHasValue = 2 ^ 0 icsSpyStatusValueIsBoolean = 2 ^ 1 icsSpyStatusHighVoltage = 2 ^ 2 icsSpyStatusLongMessage = 2 ^ 3 End Enum Public Type icsSpyMessage StatusBitField As Long '4 StatusBitField2 As Long 'new '4 TimeHardware As Long ' 4 TimeHardware2 As Long 'new ' 4 TimeSystem As Long ' 4 TimeSystem2 As Long TimeStampHardwareID As Byte 'new ' 1 TimeStampSystemID As Byte NetworkID As Byte 'new ' 1 NodeID As Byte Protocol As Byte MessagePieceID As Byte ' 1 ColorID As Byte '1 NumberBytesHeader As Byte ' 1 NumberBytesData As Byte ' 1 DescriptionID As Integer ' 2 ArbIDOrHeader As Long '// Holds (up to 3 byte 1850 header or 29 bit CAN header) '4 Data(0 To 7) As Byte '8 AckBytes(0 To 7) As Byte 'new '8 Value As Single ' 4 MiscData As Byte End Type Public Type icsSpyMessageJ1850 StatusBitField As Long '4 StatusBitField2 As Long 'new '4 TimeHardware As Long '4 TimeHardware2 As Long 'new ' 4 TimeSystem As Long '4 TimeSystem2 As Long TimeStampHardwareID As Byte 'new ' 1 TimeStampSystemID As Byte NetworkID As Byte 'new ' 1 NodeID As Byte Protocol As Byte MessagePieceID As Byte ' 1 new ColorID As Byte ' 1 NumberBytesHeader As Byte '1 NumberBytesData As Byte '1 DescriptionID As Integer '2 Header(0 To 3) As Byte '4 '// Holds (up to 3 byte 1850 header or 29 bit CAN header) Data(0 To 7) As Byte '8 AckBytes(0 To 7) As Byte 'new '8 Value As Single '4 MiscData As Byte End Type Public Type spyFilterLong StatusValue As Long StatusMask As Long Status2Value As Long Status2Mask As Long Header As Long HeaderMask As Long MiscData As Long MiscDataMask As Long ByteDataMsb As Long ByteDataLsb As Long ByteDataMaskMsb As Long ByteDataMaskLsb As Long HeaderLength As Long ByteDataLength As Long NetworkID As Long FrameMaster As Boolean bStuff1 As Byte bStuff2 As Byte ExpectedLength As Long NodeID As Long End Type Public Type icsSpyMessageLong StatusBitField As Long ' 4 StatusBitField2 As Long 'new '4 TimeHardware As Long TimeHardware2 As Long 'new ' 4 TimeSystem As Long '4 TimeSystem2 As Long TimeStampHardwareID As Byte 'new ' 1 TimeStampSystemID As Byte NetworkID As Byte 'new ' 1 NodeID As Byte Protocol As Byte MessagePieceID As Byte ' 1 ColorID As Byte ' 1 NumberBytesHeader As Byte ' NumberBytesData As Byte '2 DescriptionID As Integer '2 ArbIDOrHeader As Long '// Holds (up to 3 byte 1850 header or 29 bit CAN header) DataMsb As Long DataLsb As Long AckBytes(0 To 7) As Byte 'new '8 Value As Single MiscData As Byte End Type '//Structure for neoVI device types Public Type NeoDevice DeviceType As Long Handle As Long NumberOfClients As Long SerialNumber As Long MaxAllowedClients As Long End Type Public Type CAN_SETTINGS Mode As Byte SetBaudrate As Byte Baudrate As Byte NetworkType As Byte TqSeg1 As Byte TqSeg2 As Byte TqProp As Byte TqSync As Byte BRP As Integer auto_baud As Integer End Type Public Type SWCAN_SETTINGS Mode As Byte SetBaudrate As Byte Baudrate As Byte NetworkType As Byte TqSeg1 As Byte TqSeg2 As Byte TqProp As Byte TqSync As Byte BRP As Integer high_speed_auto_switch As Integer auto_baud As Integer End Type Public Type SVCAN3Settings can1 As CAN_SETTINGS can2 As CAN_SETTINGS network_enables As Integer network_enabled_on_boot As Integer iso15765_separation_time_offset As Integer perf_en As Integer misc_io_initial_ddr As Integer misc_io_initial_latch As Integer misc_io_report_period As Integer misc_io_on_report_events As Integer End Type Public Type LIN_SETTINGS Baudrate As Single spbrg As Integer brgh As Integer MasterResistor As Byte Mode As Byte End Type Public Type ISO9141_KEYWORD2000__INIT_STEP time_500us As Integer k As Integer l As Integer End Type Public Type ISO9141_KEYWORD2000_SETTINGS Baudrate As Single spbrg As Integer brgh As Integer Init_Step_0 As ISO9141_KEYWORD2000__INIT_STEP Init_Step_1 As ISO9141_KEYWORD2000__INIT_STEP Init_Step_2 As ISO9141_KEYWORD2000__INIT_STEP Init_Step_3 As ISO9141_KEYWORD2000__INIT_STEP Init_Step_4 As ISO9141_KEYWORD2000__INIT_STEP Init_Step_5 As ISO9141_KEYWORD2000__INIT_STEP Init_Step_6 As ISO9141_KEYWORD2000__INIT_STEP Init_Step_7 As ISO9141_KEYWORD2000__INIT_STEP Init_Step_8 As ISO9141_KEYWORD2000__INIT_STEP Init_Step_9 As ISO9141_KEYWORD2000__INIT_STEP Init_Step_10 As ISO9141_KEYWORD2000__INIT_STEP Init_Step_11 As ISO9141_KEYWORD2000__INIT_STEP Init_Step_12 As ISO9141_KEYWORD2000__INIT_STEP Init_Step_13 As ISO9141_KEYWORD2000__INIT_STEP Init_Step_14 As ISO9141_KEYWORD2000__INIT_STEP Init_Step_15 As ISO9141_KEYWORD2000__INIT_STEP init_step_count As Byte p2_500us As Integer p3_500us As Integer p4_500us As Integer chksum_enabled As Integer End Type Public Type SFireSettings can1 As CAN_SETTINGS can2 As CAN_SETTINGS can3 As CAN_SETTINGS can4 As CAN_SETTINGS swcan As SWCAN_SETTINGS lsftcan As CAN_SETTINGS lin1 As LIN_SETTINGS lin2 As LIN_SETTINGS lin3 As LIN_SETTINGS lin4 As LIN_SETTINGS cgi_enable As Integer cgi_baud As Integer cgi_tx_ifs_bit_times As Integer cgi_rx_ifs_bit_times As Integer cgi_chksum_enable As Integer network_enables As Integer network_enabled_on_boot As Integer pwm_man_timeout As Integer pwr_man_enable As Integer misc_io_initial_ddr As Integer misc_io_initial_latch As Integer misc_io_analog_enable As Integer misc_io_report_period As Integer misc_io_on_report_events As Integer ain_sample_period As Integer ain_threshold As Integer iso15765_separation_time_offset As Integer iso9141_kwp_enable As Integer iso9141_kwp_settings As ISO9141_KEYWORD2000_SETTINGS perf_en As Integer iso_parity As Integer iso_msg_termination As Integer End Type '// Function Declares ///////////////////////////////////////////////////////////////////////////// Public Declare Function icsneoFindNeoDevices Lib "icsneo40.dll" (ByVal DeviceTypes As Long, ByRef pNeoDevice As NeoDevice, ByRef pNumDevices As Long) As Long Public Declare Function icsneoOpenNeoDevice Lib "icsneo40.dll" (ByRef pNeoDevice As NeoDevice, ByRef hObject As Long, ByRef bNetworkIDs As Byte, ByVal bConfigRead As Long, ByVal bSyncToPC As Long) As Long Public Declare Function icsneoClosePort Lib "icsneo40.dll" (ByVal hObject As Long, ByRef pNumberOfErrors As Long) As Long Public Declare Function icsneoFreeObject Lib "icsneo40.dll" (ByVal hObject As Long) Public Declare Function icsneoOpenPortEx Lib "icsneo40.dll" (ByVal lPortNumber As Long, ByVal lPortType As Long, ByVal lDriverType As Long, ByVal lIPAddressMSB As Long, ByVal lIPAddressLSBOrBaudRate As Long, ByVal bConfigRead As Long, ByRef bNetworkID As Byte, ByRef hObject As Long) As Long Public Declare Function icsneoGetMessages Lib "icsneo40.dll" (ByVal hObject As Long, ByRef pMsg As icsSpyMessage, ByRef pNumberOfMessages As Long, ByRef pNumberOfErrors As Long) As Long Public Declare Function icsneoTxMessages Lib "icsneo40.dll" (ByVal hObject As Long, ByRef pMsg As icsSpyMessage, ByVal lNetworkID As Long, ByVal lNumMessages As Long) As Long Public Declare Function icsneoWaitForRxMessagesWithTimeOut Lib "icsneo40.dll" (ByVal hObject As Long, ByVal iTimeOut As Long) As Long Public Declare Function icsneoEnableNetworkRXQueue Lib "icsneo40.dll" (ByVal hObject As Long, ByVal iEnable As Long) As Long Public Declare Function icsneoGetTimeStampForMsg Lib "icsneo40.dll" (ByVal hObject As Long, ByRef pMsg As icsSpyMessage, ByRef pTimeStamp As Double) As Long Public Declare Function icsneoGetISO15765Status Lib "icsneo40.dll" (ByVal hObject As Long, ByVal lNetwork As Long, ByVal lClearTxStatus As Long, ByVal lClearRxStatus As Long, ByRef lTxStatus As Long, ByRef lRxStatus As Long) '//Public Declare Function icsneoSetISO15765RxParameters(byval hObject As Long, byval lNetwork As Long, byval lEnable As Long, ByRef pFF_CFMsgFilter as spyFilterLong, ByRef pTxMsg as icsSpyMessage, byval lCFTimeOutMs As Long, byval lFlowCBlockSize As Long,byval lUsesExtendedAddressing As Long, byval lUseHardwareIfPresent As Long) As void Public Declare Function icsneoGetConfiguration Lib "icsneo40.dll" (ByVal hObject As Long, ByRef pData As Byte, ByRef lNumBytes As Long) As Long Public Declare Function icsneoSendConfiguration Lib "icsneo40.dll" (ByVal hObject As Long, ByRef pData As Byte, ByVal lNumBytes As Long) As Long Public Declare Function icsneoGetFireSettings Lib "icsneo40.dll" (ByVal hObject As Long, ByRef pSettings As SFireSettings, ByVal iNumBytes As Long) As Long Public Declare Function icsneoSetFireSettings Lib "icsneo40.dll" (ByVal hObject As Long, ByRef pSettings As SFireSettings, ByVal iNumBytes As Long, ByVal bSaveToEEPROM As Long) As Long Public Declare Function icsneoGetVCAN3Settings Lib "icsneo40.dll" (ByVal hObject As Long, ByRef pSettings As SVCAN3Settings, ByVal iNumBytes As Long) As Long Public Declare Function icsneoSetVCAN3Settings Lib "icsneo40.dll" (ByVal hObject As Long, ByRef pSettings As SVCAN3Settings, ByVal iNumBytes As Long, ByVal bSaveToEEPROM As Long) As Long Public Declare Function icsneoSetBitRate Lib "icsneo40.dll" (ByVal hObject As Long, ByVal BitRate As Long, ByVal NetworkID As Long) As Long Public Declare Function icsneoGetDeviceParameters Lib "icsneo40.dll" (ByVal hObject As Long, ByRef pParameter As String, ByRef pValues As String, ByVal ValuesLength As Integer) As Long Public Declare Function icsneoSetDeviceParameters Lib "icsneo40.dll" (ByVal hObject As Long, ByRef pParmValue As String, ByRef pErrorIndex As Long, ByVal bSaveToEEPROM As Long) As Long Public Declare Function icsneoGetLastAPIError Lib "icsneo40.dll" (ByVal hObject As Long, ByRef pErrorNumber As Long) As Long Public Declare Function icsneoGetErrorMessages Lib "icsneo40.dll" (ByVal hObject As Long, ByRef pErrorMsgs As Long, ByRef pNumberOfErrors As Long) As Long Public Declare Function icsneoGetErrorInfo Lib "icsneo40.dll" (ByVal lErrorNumber As Long, ByVal sErrorDescriptionShort As String, ByVal sErrorDescriptionLong As String, ByRef lMaxLengthShort As Long, ByRef lMaxLengthLong As Long, ByRef lErrorSeverity As Long, ByRef lRestartNeeded As Long) As Long Public Declare Function icsneoValidateHObject Lib "icsneo40.dll" (ByVal hObject As Long) As Long Public Declare Function icsneoGetDLLVersion Lib "icsneo40.dll" () As Long Public Declare Function icsneoStartSockServer Lib "icsneo40.dll" (ByVal hObject As Long, ByVal iPort As Long) As Long Public Declare Function icsneoStopSockServer Lib "icsneo40.dll" (ByVal hObject As Long) As Long Public Declare Function icsneoScriptStart Lib "icsneo40.dll" (ByVal hObject As Long, ByVal iLocation As Long) As Long Public Declare Function icsneoScriptStop Lib "icsneo40.dll" (ByVal hObject As Long) As Long Public Declare Function icsneoScriptLoad Lib "icsneo40.dll" (ByVal hObject As Long, ByRef bin As Byte, ByVal Len_Bytes As Long, ByVal iLocation As Long) As Long Public Declare Function icsneoScriptClear Lib "icsneo40.dll" (ByVal hObject As Long, ByVal iLocation As Long) As Long Public Declare Function icsneoScriptStartFBlock Lib "icsneo40.dll" (ByVal hObject As Long, ByVal fb_index As Long) As Long Public Declare Function icsneoScriptGetFBlockStatus Lib "icsneo40.dll" (ByVal hObject As Long, ByVal fb_index As Long, ByRef piRunStatus As Long) As Long Public Declare Function icsneoScriptStopFBlock Lib "icsneo40.dll" (ByVal hObject As Long, ByVal fb_index As Long) As Long Public Declare Function icsneoScriptGetScriptStatus Lib "icsneo40.dll" (ByVal hObject As Long, ByRef piStatus As Long) As Long Public Declare Function icsneoScriptReadAppSignal Lib "icsneo40.dll" (ByVal hObject As Long, ByVal iIndex As Long, ByRef dValue As Double) As Long Public Declare Function icsneoScriptWriteAppSignal Lib "icsneo40.dll" (ByVal hObject As Long, ByVal iIndex As Long, ByVal dValue As Double) As Long Public Declare Function icsneoScriptReadRxMessage Lib "icsneo40.dll" (ByVal hObject As Long, ByVal iIndex As Long, ByRef pRxMessageMask As icsSpyMessage, ByRef pRxMessageValue As icsSpyMessage) As Long Public Declare Function icsneoScriptReadTxMessage Lib "icsneo40.dll" (ByVal hObject As Long, ByVal iIndex As Long, ByRef pTxMessage As icsSpyMessage) As Long Public Declare Function icsneoScriptWriteRxMessage Lib "icsneo40.dll" (ByVal hObject As Long, ByVal iIndex As Long, ByRef pRxMessageMask As icsSpyMessage, ByRef pRxMessageValue As icsSpyMessage) As Long Public Declare Function icsneoScriptWriteTxMessage Lib "icsneo40.dll" (ByVal hObject As Long, ByVal iIndex As Long, ByRef pTxMessage As icsSpyMessage) As Long '//Public Declare Function icsneoScriptReadISO15765_2_TxMessage(byval hObject As Long,byval iIndex As Long, stCM_ISO157652_ref TxMessage pTxMessage) As Long '//Public Declare Function icsneoScriptWriteISO15765_2_TxMessage(Int32 hObject, UInt32 iIndex, stCM_ISO157652_ref TxMessage pTxMessage) As Long Public Declare Function icsneoOpenPort Lib "icsneo40.dll" (ByVal lPortNumber As Long, ByVal lPortType As Long, ByVal lDriverType As Long, ByRef bNetworkID As Byte, ByRef bSCPIDs As Byte, ByRef hObject As Long) As Long Public Declare Function icsneoEnableNetworkCom Lib "icsneo40.dll" (ByVal hObject As Long, ByVal Enable As Long) As Long Public Declare Function icsneoFindAllCOMDevices Lib "icsneo40.dll" (ByVal lDriverType As Long, ByVal lGetSerialNumbers As Long, ByVal lStopAtFirst As Long, ByVal lUSBCommOnly As Long, ByRef lDeviceTypes As Long, ByRef p_lComPorts As Long, ByRef p_lSerialNumbers As Long, ByRef lNumDevices As Long) As Long Public Function icsneoGetDLLErrorInfo(ByVal lErrorNum As Long, sErrorShort As String, _ sErrorLong As String, lSeverity As Long, bRestart As Long) As Boolean Dim lErrorLongLength As Long Dim lErrorShortLength As Long Dim lRestart As Long Dim lResult As Long sErrorLong = String(255, 0) sErrorShort = String(255, 0) lErrorLongLength = 255 lErrorShortLength = 255 lResult = icsneoGetErrorInfo(lErrorNum, sErrorShort, sErrorLong, _ lErrorShortLength, lErrorLongLength, lSeverity, lRestart) sErrorShort = Left$(sErrorShort, lErrorShortLength) sErrorLong = Left$(sErrorLong, lErrorLongLength) bRestart = CBool(lRestart) icsneoGetDLLErrorInfo = CBool(lResult) End Function ''// this function returns a text description for a network ID Public Function GetStringForNetworkID(ByVal lNetworkID As Long) As String Select Case lNetworkID Case NETID_HSCAN GetStringForNetworkID = "HSCAN" Case NETID_MSCAN GetStringForNetworkID = "MSCAN" Case NETID_SWCAN GetStringForNetworkID = "SWCAN" Case NETID_LSFTCAN GetStringForNetworkID = "LSFTCAN" Case NETID_FORDSCP GetStringForNetworkID = "FORD SCP" Case NETID_J1708 GetStringForNetworkID = "J1708" Case NETID_AUX GetStringForNetworkID = "AUX" Case NETID_JVPW GetStringForNetworkID = "J1850 VPW" Case NETID_ISO GetStringForNetworkID = "ISO/UART" End Select End Function Public Function ConvertFromHex(ByVal sValue As String) As Double ConvertFromHex = Val("&H" & sValue) End Function Public Function icsneoGetTimeStampVCANneoPRO(ByRef TimeHardware As Integer, ByRef TimeHardware2 As Integer) As Double '//Dim NEOVIPRO_VCAN_TIMEHARDWARE2_SCALING As Double = 107.3741824 '//Dim NEOVIPRO_VCAN_TIMEHARDWARE_SCALING As Double = 0.000000025 icsneoGetTimeStampVCANneoPRO = NEOVIPRO_VCAN_TIMEHARDWARE2_SCALING * TimeHardware2 + NEOVIPRO_VCAN_TIMEHARDWARE_SCALING * TimeHardware End Function