Module bas_neoVI Public Const NEODEVICE_BLUE As Int32 = 1 Public Const NEODEVICE_DW_VCAN As Int32 = 4 Public Const NEODEVICE_FIRE As Int32 = 8 Public Const NEODEVICE_VCAN3 As Int32 = 16 Public Const NEODEVICE_ANY As Int32 = 65535 '// Configuration Array constants '// high speed CAN neoVI / valuecan baud rate constants Public Const NEO_CFG_MPIC_HS_CAN_CNF1 As Int16 = 512 + 10 Public Const NEO_CFG_MPIC_HS_CAN_CNF2 As Int16 = 512 + 9 Public Const NEO_CFG_MPIC_HS_CAN_CNF3 As Int16 = 512 + 8 Public Const NEO_CFG_MPIC_HS_CAN_MODE As Int16 = 512 + 54 '// med speed CAN Public Const NEO_CFG_MPIC_MS_CAN_CNF1 As Int16 = 512 + 22 Public Const NEO_CFG_MPIC_MS_CAN_CNF2 As Int16 = 512 + 21 Public Const NEO_CFG_MPIC_MS_CAN_CNF3 As Int16 = 512 + 20 Public Const NEO_CFG_MPIC_SW_CAN_CNF1 As Int16 = 512 + 34 Public Const NEO_CFG_MPIC_SW_CAN_CNF2 As Int16 = 512 + 33 Public Const NEO_CFG_MPIC_SW_CAN_CNF3 As Int16 = 512 + 32 Public Const NEO_CFG_MPIC_LSFT_CAN_CNF1 As Int16 = 512 + 46 Public Const NEO_CFG_MPIC_LSFT_CAN_CNF2 As Int16 = 512 + 45 Public Const NEO_CFG_MPIC_LSFT_CAN_CNF3 As Int16 = 512 + 44 '// Protocols Public Const SPY_PROTOCOL_CUSTOM As Int16 = 0 Public Const SPY_PROTOCOL_CAN As Int16 = 1 Public Const SPY_PROTOCOL_GMLAN As Int16 = 2 Public Const SPY_PROTOCOL_J1850VPW As Int16 = 3 Public Const SPY_PROTOCOL_J1850PWM As Int16 = 4 Public Const SPY_PROTOCOL_ISO9141 As Int16 = 5 Public Const SPY_PROTOCOL_Keyword2000 As Int16 = 6 Public Const SPY_PROTOCOL_GM_ALDL_UART As Int16 = 7 Public Const SPY_PROTOCOL_CHRYSLER_CCD As Int16 = 8 Public Const SPY_PROTOCOL_CHRYSLER_SCI As Int16 = 9 Public Const SPY_PROTOCOL_FORD_UBP As Int16 = 10 Public Const SPY_PROTOCOL_BEAN As Int16 = 11 Public Const SPY_PROTOCOL_LIN As Int16 = 12 '//device ID's Public Const NETID_DEVICE As Int32 = 0 Public Const NETID_HSCAN As Int32 = 1 Public Const NETID_MSCAN As Int32 = 2 Public Const NETID_SWCAN As Int32 = 3 Public Const NETID_LSFTCAN As Int32 = 4 Public Const NETID_FORDSCP As Int32 = 5 Public Const NETID_J1708 As Int32 = 6 Public Const NETID_AUX As Int32 = 7 Public Const NETID_JVPW As Int32 = 8 Public Const NETID_ISO As Int32 = 9 Public Const NETID_LIN As Int32 = 9 Public Const NETID_ISOPIC As Int32 = 10 Public Const NETID_MAIN51 As Int32 = 11 Public Const NETID_SCI As Int32 = 13 Public Const NETID_ISO2 As Int32 = 14 Public Const NETID_FIRE_HSCAN1 As Int32 = 41 Public Const NETID_FIRE_HSCAN2 As Int32 = 42 Public Const NETID_FIRE_MSCAN1 As Int32 = 43 Public Const NETID_FIRE_MSCAN2 As Int32 = 44 Public Const NETID_FIRE_HSCAN3 As Int32 = 44 Public Const NETID_FIRE_SWCAN As Int32 = 45 Public Const NETID_FIRE_LSFT As Int32 = 46 Public Const NETID_FIRE_LIN1 As Int32 = 47 Public Const NETID_FIRE_LIN2 As Int32 = 48 Public Const NETID_FIRE_LIN3 As Int32 = 49 Public Const NETID_FIRE_LIN4 As Int32 = 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 Structure icsSpyMessage Dim StatusBitField As Int32 '4 Dim StatusBitField2 As Int32 'new '4 Dim TimeHardware As UInt32 ' 4 Dim TimeHardware2 As UInt32 'new ' 4 Dim TimeSystem As UInt32 ' 4 Dim TimeSystem2 As UInt32 Dim TimeStampHardwareID As Byte 'new ' 1 Dim TimeStampSystemID As Byte Dim NetworkID As Byte 'new ' 1 Dim NodeID As Byte Dim Protocol As Byte Dim MessagePieceID As Byte ' 1 Dim ColorID As Byte '1 Dim NumberBytesHeader As Byte ' 1 Dim NumberBytesData As Byte ' 1 Dim DescriptionID As Int16 ' 2 Dim ArbIDOrHeader As Int32 '// Holds (up to 3 byte 1850 header or 29 bit CAN header) '4 Dim Data1 As Byte '8 Dim Data2 As Byte Dim Data3 As Byte Dim Data4 As Byte Dim Data5 As Byte Dim Data6 As Byte Dim Data7 As Byte Dim Data8 As Byte Dim AckBytes1 As Byte 'new '8 Dim AckBytes2 As Byte Dim AckBytes3 As Byte Dim AckBytes4 As Byte Dim AckBytes5 As Byte Dim AckBytes6 As Byte Dim AckBytes7 As Byte Dim AckBytes8 As Byte Dim Value As Single ' 4 Dim MiscData As Byte End Structure Public Structure icsSpyMessageJ1850 Dim StatusBitField As Int32 '4 Dim StatusBitField2 As Int32 'new '4 Dim TimeHardware As UInt32 '4 Dim TimeHardware2 As UInt32 'new ' 4 Dim TimeSystem As UInt32 '4 Dim TimeSystem2 As UInt32 Dim TimeStampHardwareID As Byte 'new ' 1 Dim TimeStampSystemID As Byte Dim NetworkID As Byte 'new ' 1 Dim NodeID As Byte Dim Protocol As Byte Dim MessagePieceID As Byte ' 1 new Dim ColorID As Byte ' 1 Dim NumberBytesHeader As Byte '1 Dim NumberBytesData As Byte '1 Dim DescriptionID As Int16 '2 Dim Header1 As Byte '4 '// Holds (up to 3 byte 1850 header or 29 bit CAN header) Dim Header2 As Byte Dim Header3 As Byte Dim Header4 As Byte Dim Data1 As Byte '8 Dim Data2 As Byte Dim Data3 As Byte Dim Data4 As Byte Dim Data5 As Byte Dim Data6 As Byte Dim Data7 As Byte Dim Data8 As Byte Dim AckBytes1 As Byte Dim AckBytes2 As Byte Dim AckBytes3 As Byte Dim AckBytes4 As Byte Dim AckBytes5 As Byte Dim AckBytes6 As Byte Dim AckBytes7 As Byte Dim AckBytes8 As Byte Dim Value As Single '4 Dim MiscData As Byte End Structure '//Structure for neoVI device types Public Structure NeoDevice Dim DeviceType As Int32 Dim Handle As Int32 Dim NumberOfClients As Int32 Dim SerialNumber As Int32 Dim MaxAllowedClients As Int32 End Structure Public Structure CAN_SETTINGS Dim Mode As Byte Dim SetBaudrate As Byte Dim Baudrate As Byte Dim NetworkType As Byte Dim TqSeg1 As Byte Dim TqSeg2 As Byte Dim TqProp As Byte Dim TqSync As Byte Dim BRP As Int16 Dim auto_baud As Int16 End Structure Public Structure SWCAN_SETTINGS Dim Mode As Byte Dim SetBaudrate As Byte Dim Baudrate As Byte Dim NetworkType As Byte Dim TqSeg1 As Byte Dim TqSeg2 As Byte Dim TqProp As Byte Dim TqSync As Byte Dim BRP As Int16 Dim high_speed_auto_switch As Int16 Dim auto_baud As Int16 End Structure Public Structure SVCAN3Settings Dim Can1 As CAN_SETTINGS Dim Can2 As CAN_SETTINGS Dim Network_enables As Int16 Dim Network_enabled_on_boot As Int16 Dim Iso15765_separation_time_offset As Int16 Dim Perf_en As Int16 Dim Misc_io_initial_ddr As Int16 Dim Misc_io_initial_latch As Int16 Dim Misc_io_report_period As Int16 Dim Misc_io_on_report_events As Int16 End Structure Public Structure LIN_SETTINGS Dim Baudrate As Int32 Dim spbrg As Int16 Dim brgh As Int16 Dim MasterResistor As Byte Dim Mode As Byte End Structure Public Structure ISO9141_KEYWORD2000_SETTINGS Dim Baudrate As Int32 Dim spbrg As Int16 Dim brgh As Int16 Dim Init_Step_0 As ISO9141_KEYWORD2000__INIT_STEP Dim Init_Step_1 As ISO9141_KEYWORD2000__INIT_STEP Dim Init_Step_2 As ISO9141_KEYWORD2000__INIT_STEP Dim Init_Step_3 As ISO9141_KEYWORD2000__INIT_STEP Dim Init_Step_4 As ISO9141_KEYWORD2000__INIT_STEP Dim Init_Step_5 As ISO9141_KEYWORD2000__INIT_STEP Dim Init_Step_6 As ISO9141_KEYWORD2000__INIT_STEP Dim Init_Step_7 As ISO9141_KEYWORD2000__INIT_STEP Dim Init_Step_8 As ISO9141_KEYWORD2000__INIT_STEP Dim Init_Step_9 As ISO9141_KEYWORD2000__INIT_STEP Dim Init_Step_10 As ISO9141_KEYWORD2000__INIT_STEP Dim Init_Step_11 As ISO9141_KEYWORD2000__INIT_STEP Dim Init_Step_12 As ISO9141_KEYWORD2000__INIT_STEP Dim Init_Step_13 As ISO9141_KEYWORD2000__INIT_STEP Dim Init_Step_14 As ISO9141_KEYWORD2000__INIT_STEP Dim Init_Step_15 As ISO9141_KEYWORD2000__INIT_STEP Dim init_step_count As Byte Dim p2_500us As Int16 Dim p3_500us As Int16 Dim p4_500us As Int16 Dim chksum_enabled As Int16 End Structure Public Structure ISO9141_KEYWORD2000__INIT_STEP Dim time_500us As Int16 Dim k As Int16 Dim l As Int16 End Structure Public Structure SFireSettings Dim can1 As CAN_SETTINGS Dim can2 As CAN_SETTINGS Dim can3 As CAN_SETTINGS Dim can4 As CAN_SETTINGS Dim swcan As SWCAN_SETTINGS Dim lsftcan As CAN_SETTINGS Dim lin1 As LIN_SETTINGS Dim lin2 As LIN_SETTINGS Dim lin3 As LIN_SETTINGS Dim lin4 As LIN_SETTINGS Dim cgi_enable As Int16 Dim cgi_baud As Int16 Dim cgi_tx_ifs_bit_times As Int16 Dim cgi_rx_ifs_bit_times As Int16 Dim cgi_chksum_enable As Int16 Dim network_enables As Int16 Dim network_enabled_on_boot As Int16 Dim pwm_man_timeout As Int16 Dim pwr_man_enable As Int16 Dim misc_io_initial_ddr As Int16 Dim misc_io_initial_latch As Int16 Dim misc_io_analog_enable As Int16 Dim misc_io_report_period As Int16 Dim misc_io_on_report_events As Int16 Dim ain_sample_period As Int16 Dim ain_threshold As Int16 Dim iso15765_separation_time_offset As Int16 Dim iso9141_kwp_enable As Int16 Dim iso9141_kwp_settings As ISO9141_KEYWORD2000_SETTINGS Dim perf_en As Int16 Dim iso_parity As Int16 Dim iso_msg_termination As Int16 End Structure Public Declare Function icsneoFindNeoDevices Lib "icsneo40.dll" (ByVal DeviceTypes As UInt32, ByRef pNeoDevice As NeoDevice, ByRef pNumDevices As Int32) As Int32 Public Declare Function icsneoOpenNeoDevice Lib "icsneo40.dll" (ByRef pNeoDevice As NeoDevice, ByRef hObject As Int32, ByRef bNetworkIDs As Byte, ByVal bConfigRead As Int32, ByVal bSyncToPC As Int32) As Int32 Public Declare Function icsneoClosePort Lib "icsneo40.dll" (ByVal hObject As Int32, ByRef pNumberOfErrors As Int32) As Int32 Public Declare Function icsneoFreeObject Lib "icsneo40.dll" (ByVal hObject As Int32) Public Declare Function icsneoOpenPortEx Lib "icsneo40.dll" (ByVal lPortNumber As Int32, ByVal lPortType As Int32, ByVal lDriverType As Int32, ByVal lIPAddressMSB As Int32, ByVal lIPAddressLSBOrBaudRate As Int32, ByVal bConfigRead As Int32, ByRef bNetworkID As Byte, ByRef hObject As Int32) As Int32 Public Declare Function icsneoGetMessages Lib "icsneo40.dll" (ByVal hObject As Int32, ByRef pMsg As icsSpyMessage, ByRef pNumberOfMessages As Int32, ByRef pNumberOfErrors As Int32) As Int32 Public Declare Function icsneoTxMessages Lib "icsneo40.dll" (ByVal hObject As Int32, ByRef pMsg As icsSpyMessage, ByVal lNetworkID As Int32, ByVal lNumMessages As Int32) As Int32 Public Declare Function icsneoWaitForRxMessagesWithTimeOut Lib "icsneo40.dll" (ByVal hObject As Int32, ByVal iTimeOut As UInt32) As Int32 Public Declare Function icsneoEnableNetworkRXQueue Lib "icsneo40.dll" (ByVal hObject As Int32, ByVal iEnable As Int32) As Int32 Public Declare Function icsneoGetTimeStampForMsg Lib "icsneo40.dll" (ByVal hObject As Int32, ByRef pMsg As icsSpyMessage, ByRef pTimeStamp As Double) As Int32 Public Declare Function icsneoGetISO15765Status Lib "icsneo40.dll" (ByVal hObject As Int32, ByVal lNetwork As Int32, ByVal lClearTxStatus As Int32, ByVal lClearRxStatus As Int32, ByRef lTxStatus As Int32, ByRef lRxStatus As Int32) '//Public Declare Function icsneoSetISO15765RxParameters(byval hObject as Int32, byval lNetwork as Int32, byval lEnable as Int32, ByRef pFF_CFMsgFilter as spyFilterLong, ByRef pTxMsg as icsSpyMessage, byval lCFTimeOutMs as Int32, byval lFlowCBlockSize as Int32,byval lUsesExtendedAddressing as Int32, byval lUseHardwareIfPresent as Int32) As void Public Declare Function icsneoGetConfiguration Lib "icsneo40.dll" (ByVal hObject As Int32, ByRef pData As Byte, ByRef lNumBytes As Int32) As Int32 Public Declare Function icsneoSendConfiguration Lib "icsneo40.dll" (ByVal hObject As Int32, ByRef pData As Byte, ByVal lNumBytes As Int32) As Int32 Public Declare Function icsneoGetFireSettings Lib "icsneo40.dll" (ByVal hObject As Int32, ByRef pSettings As SFireSettings, ByVal iNumBytes As Int32) As Int32 Public Declare Function icsneoSetFireSettings Lib "icsneo40.dll" (ByVal hObject As Int32, ByRef pSettings As SFireSettings, ByVal iNumBytes As Int32, ByVal bSaveToEEPROM As Int32) As Int32 Public Declare Function icsneoGetVCAN3Settings Lib "icsneo40.dll" (ByVal hObject As Int32, ByRef pSettings As SVCAN3Settings, ByVal iNumBytes As Int32) As Int32 Public Declare Function icsneoSetVCAN3Settings Lib "icsneo40.dll" (ByVal hObject As Int32, ByRef pSettings As SVCAN3Settings, ByVal iNumBytes As Int32, ByVal bSaveToEEPROM As Int32) As Int32 Public Declare Function icsneoSetBitRate Lib "icsneo40.dll" (ByVal hObject As Int32, ByVal BitRate As Int32, ByVal NetworkID As Int32) As Int32 Public Declare Function icsneoGetDeviceParameters Lib "icsneo40.dll" (ByVal hObject As Int32, ByRef pParameter As Char, ByRef pValues As Char, ByVal ValuesLength As Int16) As Int32 Public Declare Function icsneoSetDeviceParameters Lib "icsneo40.dll" (ByVal hObject As Int32, ByRef pParmValue As Char, ByRef pErrorIndex As Int32, ByVal bSaveToEEPROM As Int32) As Int32 Public Declare Function icsneoGetLastAPIError Lib "icsneo40.dll" (ByVal hObject As Int32, ByRef pErrorNumber As UInt32) As Int32 Public Declare Function icsneoGetErrorMessages Lib "icsneo40.dll" (ByVal hObject As Int32, ByRef pErrorMsgs As Int32, ByRef pNumberOfErrors As Int32) As Int32 Public Declare Function icsneoGetErrorInfo Lib "icsneo40.dll" (ByVal lErrorNumber As Int32, ByVal sErrorDescriptionShort As String, ByVal sErrorDescriptionLong As String, ByRef lMaxLengthShort As Int32, ByRef lMaxLengthLong As Int32, ByRef lErrorSeverity As Int32, ByRef lRestartNeeded As Int32) As Int32 Public Declare Function icsneoValidateHObject Lib "icsneo40.dll" (ByVal hObject As Int32) As Int32 Public Declare Function icsneoGetDLLVersion Lib "icsneo40.dll" () As Int32 Public Declare Function icsneoStartSockServer Lib "icsneo40.dll" (ByVal hObject As Int32, ByVal iPort As Int32) As Int32 Public Declare Function icsneoStopSockServer Lib "icsneo40.dll" (ByVal hObject As Int32) As Int32 Public Declare Function icsneoScriptStart Lib "icsneo40.dll" (ByVal hObject As Int32, ByVal iLocation As Int32) As Int32 Public Declare Function icsneoScriptStop Lib "icsneo40.dll" (ByVal hObject As Int32) As Int32 Public Declare Function icsneoScriptLoad Lib "icsneo40.dll" (ByVal hObject As Int32, ByRef bin As Byte, ByVal Len_Bytes As UInt32, ByVal iLocation As Int32) As Int32 Public Declare Function icsneoScriptClear Lib "icsneo40.dll" (ByVal hObject As Int32, ByVal iLocation As Int32) As Int32 Public Declare Function icsneoScriptStartFBlock Lib "icsneo40.dll" (ByVal hObject As Int32, ByVal fb_index As UInt32) As Int32 Public Declare Function icsneoScriptGetFBlockStatus Lib "icsneo40.dll" (ByVal hObject As Int32, ByVal fb_index As UInt32, ByRef piRunStatus As Int32) As Int32 Public Declare Function icsneoScriptStopFBlock Lib "icsneo40.dll" (ByVal hObject As Int32, ByVal fb_index As UInt32) As Int32 Public Declare Function icsneoScriptGetScriptStatus Lib "icsneo40.dll" (ByVal hObject As Int32, ByRef piStatus As Int32) As Int32 Public Declare Function icsneoScriptReadAppSignal Lib "icsneo40.dll" (ByVal hObject As Int32, ByVal iIndex As UInt32, ByRef dValue As Double) As Int32 Public Declare Function icsneoScriptWriteAppSignal Lib "icsneo40.dll" (ByVal hObject As Int32, ByVal iIndex As UInt32, ByVal dValue As Double) As Int32 Public Declare Function icsneoScriptReadRxMessage Lib "icsneo40.dll" (ByVal hObject As Int32, ByVal iIndex As UInt32, ByRef pRxMessageMask As icsSpyMessage, ByRef pRxMessageValue As icsSpyMessage) As Int32 Public Declare Function icsneoScriptReadTxMessage Lib "icsneo40.dll" (ByVal hObject As Int32, ByVal iIndex As UInt32, ByRef pTxMessage As icsSpyMessage) As Int32 Public Declare Function icsneoScriptWriteRxMessage Lib "icsneo40.dll" (ByVal hObject As Int32, ByVal iIndex As UInt32, ByRef pRxMessageMask As icsSpyMessage, ByRef pRxMessageValue As icsSpyMessage) As Int32 Public Declare Function icsneoScriptWriteTxMessage Lib "icsneo40.dll" (ByVal hObject As Int32, ByVal iIndex As UInt32, ByRef pTxMessage As icsSpyMessage) As Int32 '//Public Declare Function icsneoScriptReadISO15765_2_TxMessage(byval hObject as Int32,byval iIndex as UInt32, stCM_ISO157652_ref TxMessage pTxMessage) As Int32 '//Public Declare Function icsneoScriptWriteISO15765_2_TxMessage(Int32 hObject, UInt32 iIndex, stCM_ISO157652_ref TxMessage pTxMessage) As Int32 Public Declare Function icsneoOpenPort Lib "icsneo40.dll" (ByVal lPortNumber As Int32, ByVal lPortType As Int32, ByVal lDriverType As Int32, ByRef bNetworkID As Byte, ByRef bSCPIDs As Byte, ByRef hObject As Int32) As Int32 Public Declare Function icsneoEnableNetworkCom Lib "icsneo40.dll" (ByVal hObject As Int32, ByVal Enable As Int32) As Int32 Public Declare Function icsneoFindAllCOMDevices Lib "icsneo40.dll" (ByVal lDriverType As Int32, ByVal lGetSerialNumbers As Int32, ByVal lStopAtFirst As Int32, ByVal lUSBCommOnly As Int32, ByRef lDeviceTypes As UInt32, ByRef p_lComPorts As UInt32, ByRef p_lSerialNumbers As UInt32, ByRef lNumDevices As UInt32) As Int32 Public Function icsneoGetDLLErrorInfo(ByVal lErrorNum As Int32, ByRef sErrorShort As String, ByRef sErrorLong As String, ByRef lSeverity As Int32, ByRef bRestart As Int32) As Boolean Dim lErrorLongLength As Int32 Dim lErrorShortLength As Int32 Dim lRestart As Int32 Dim lResult As Int32 sErrorLong = New String(Chr(0), 255) sErrorShort = New String(Chr(0), 255) 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 Int64) 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 ConvertCANtoJ1850Message(ByRef icsCANStruct As icsSpyMessage, ByRef icsJ1850Struct As icsSpyMessageJ1850) '//Becuse LSet now has a different function in .NET the elements of the structs need to be copied one at a time. icsCANStruct.StatusBitField = icsJ1850Struct.StatusBitField icsCANStruct.StatusBitField2 = icsJ1850Struct.StatusBitField2 icsCANStruct.TimeHardware = icsJ1850Struct.TimeHardware icsCANStruct.TimeHardware2 = icsJ1850Struct.TimeHardware2 icsCANStruct.TimeSystem = icsJ1850Struct.TimeSystem icsCANStruct.TimeSystem2 = icsJ1850Struct.TimeSystem2 icsCANStruct.TimeStampHardwareID = icsJ1850Struct.TimeStampHardwareID icsCANStruct.TimeStampSystemID = icsJ1850Struct.TimeStampSystemID icsCANStruct.NetworkID = icsJ1850Struct.NetworkID icsCANStruct.NodeID = icsJ1850Struct.NodeID icsCANStruct.Protocol = icsJ1850Struct.Protocol icsCANStruct.MessagePieceID = icsJ1850Struct.MessagePieceID icsCANStruct.ColorID = icsJ1850Struct.ColorID icsCANStruct.NumberBytesHeader = icsJ1850Struct.NumberBytesHeader icsCANStruct.NumberBytesData = icsJ1850Struct.NumberBytesData icsCANStruct.DescriptionID = icsJ1850Struct.DescriptionID icsCANStruct.ArbIDOrHeader = (icsJ1850Struct.Header3 * 65536) + (icsJ1850Struct.Header2 * 256) + icsJ1850Struct.Header1 icsCANStruct.Data1 = icsJ1850Struct.Data1 icsCANStruct.Data2 = icsJ1850Struct.Data2 icsCANStruct.Data3 = icsJ1850Struct.Data3 icsCANStruct.Data4 = icsJ1850Struct.Data4 icsCANStruct.Data5 = icsJ1850Struct.Data5 icsCANStruct.Data6 = icsJ1850Struct.Data6 icsCANStruct.Data7 = icsJ1850Struct.Data7 icsCANStruct.Data8 = icsJ1850Struct.Data8 icsCANStruct.AckBytes1 = icsJ1850Struct.AckBytes1 icsCANStruct.AckBytes2 = icsJ1850Struct.AckBytes2 icsCANStruct.AckBytes3 = icsJ1850Struct.AckBytes3 icsCANStruct.AckBytes4 = icsJ1850Struct.AckBytes4 icsCANStruct.AckBytes5 = icsJ1850Struct.AckBytes5 icsCANStruct.AckBytes6 = icsJ1850Struct.AckBytes6 icsCANStruct.AckBytes7 = icsJ1850Struct.AckBytes7 icsCANStruct.AckBytes8 = icsJ1850Struct.AckBytes8 icsCANStruct.Value = icsJ1850Struct.Value icsCANStruct.MiscData = icsJ1850Struct.MiscData End Function Public Function ConvertJ1850toCAN(ByRef icsCANStruct As icsSpyMessage, ByRef icsJ1850Struct As icsSpyMessageJ1850) '//Becuse LSet now has a different function in .NET the elements of the structs need to be copied one at a time. icsJ1850Struct.StatusBitField = icsCANStruct.StatusBitField icsJ1850Struct.StatusBitField2 = icsCANStruct.StatusBitField2 icsJ1850Struct.TimeHardware = icsCANStruct.TimeHardware icsJ1850Struct.TimeHardware2 = icsCANStruct.TimeHardware2 icsJ1850Struct.TimeSystem = icsCANStruct.TimeSystem icsJ1850Struct.TimeSystem2 = icsCANStruct.TimeSystem2 icsJ1850Struct.TimeStampHardwareID = icsCANStruct.TimeStampHardwareID icsJ1850Struct.TimeStampSystemID = icsCANStruct.TimeStampSystemID icsJ1850Struct.NetworkID = icsCANStruct.NetworkID icsJ1850Struct.NodeID = icsCANStruct.NodeID icsJ1850Struct.Protocol = icsCANStruct.Protocol icsJ1850Struct.MessagePieceID = icsCANStruct.MessagePieceID icsJ1850Struct.ColorID = icsCANStruct.ColorID icsJ1850Struct.NumberBytesHeader = icsCANStruct.NumberBytesHeader icsJ1850Struct.NumberBytesData = icsCANStruct.NumberBytesData icsJ1850Struct.DescriptionID = icsCANStruct.DescriptionID icsJ1850Struct.Header1 = &HFF And icsCANStruct.ArbIDOrHeader icsJ1850Struct.Header2 = (&HFF00 And icsCANStruct.ArbIDOrHeader) / 256 icsJ1850Struct.Header3 = (&HFF0000 And icsCANStruct.ArbIDOrHeader) / 65536 icsJ1850Struct.Data1 = icsCANStruct.Data1 icsJ1850Struct.Data2 = icsCANStruct.Data2 icsJ1850Struct.Data3 = icsCANStruct.Data3 icsJ1850Struct.Data4 = icsCANStruct.Data4 icsJ1850Struct.Data5 = icsCANStruct.Data5 icsJ1850Struct.Data6 = icsCANStruct.Data6 icsJ1850Struct.Data7 = icsCANStruct.Data7 icsJ1850Struct.Data8 = icsCANStruct.Data8 icsJ1850Struct.AckBytes1 = icsCANStruct.AckBytes1 icsJ1850Struct.AckBytes2 = icsCANStruct.AckBytes2 icsJ1850Struct.AckBytes3 = icsCANStruct.AckBytes3 icsJ1850Struct.AckBytes4 = icsCANStruct.AckBytes4 icsJ1850Struct.AckBytes5 = icsCANStruct.AckBytes5 icsJ1850Struct.AckBytes6 = icsCANStruct.AckBytes6 icsJ1850Struct.AckBytes7 = icsCANStruct.AckBytes7 icsJ1850Struct.AckBytes8 = icsCANStruct.AckBytes8 icsJ1850Struct.Value = icsCANStruct.Value icsJ1850Struct.MiscData = icsCANStruct.MiscData End Function End Module