public static VehicleScapeAPI.Result LoadDatabase(string filename)
        {
            VehicleScapeAPI.Result result = Initialize();
            if (result != VehicleScapeAPI.Result.ResultOk && result != VehicleScapeAPI.Result.ResultAlreadyInitialized)
            {
                return(result);
            }

            if (result == VehicleScapeAPI.Result.ResultAlreadyInitialized)
            {
                result = VehicleScapeAPI.Result.ResultOk;
            }

            int networkCount = 0;

            result = VehicleScapeAPI.GetNetworks(IntPtr.Zero, ref networkCount);
            if (networkCount <= 0)
            {
                return(result);
            }
            VehicleScapeAPI.Network[] networks = new VehicleScapeAPI.Network[networkCount];
            VehicleScapeAPI.GetNetworks(networks, ref networkCount);
            uint networkHandle = networks[0].handle;

            VehicleScapeAPI.Database database = new VehicleScapeAPI.Database();
            result = VehicleScapeAPI.AddDatabase(networkHandle, filename, VehicleScapeAPI.DatabaseType.DatabaseTypeJ1939NoPgnOffset, ref database);
            return(result);
        }
Example #2
0
        private void loadDBCToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();

            openFileDialog.Filter           = "DBC files (*.dbc)|*.dbc|All files (*.*)|*.*";
            openFileDialog.FilterIndex      = 1;
            openFileDialog.RestoreDirectory = true;

            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                VehicleScapeAPI.Result result = VehicleScapeInterface.LoadDatabase(openFileDialog.FileName);
                if (result == VehicleScapeAPI.Result.ResultOk)
                {
                    Log(openFileDialog.FileName + " loaded successfully.");

                    GetDAQs();
                    LoadMessagesAndSignals();
                    // Detect devices here for the user's convenience
                    DetectDevices();
                }
                else
                {
                    Log("Failed to load " + openFileDialog.FileName + ".");
                    Log("Reason: " + VehicleScapeAPI.ResultToString(result) + ".");
                }
            }
        }
        public static List <VehicleScapeAPI.Message> GetMessages()
        {
            List <VehicleScapeAPI.Message> messages = new List <VehicleScapeAPI.Message>();

            if (!Initialized)
            {
                return(messages);
            }

            int messageCount = 0;

            VehicleScapeAPI.GetRxMessages(IntPtr.Zero, ref messageCount);
            if (messageCount > 0)
            {
                VehicleScapeAPI.Message[] rxMessages = new VehicleScapeAPI.Message[messageCount];
                VehicleScapeAPI.GetRxMessages(rxMessages, ref messageCount);
                messages.AddRange(rxMessages);
            }

            VehicleScapeAPI.GetDbMessages(IntPtr.Zero, ref messageCount);
            if (messageCount > 0)
            {
                VehicleScapeAPI.Message[] dbMessages = new VehicleScapeAPI.Message[messageCount];
                VehicleScapeAPI.GetDbMessages(dbMessages, ref messageCount);
                messages.AddRange(dbMessages);
            }

            return(messages);
        }
Example #4
0
        private void LoadMessagesAndSignals()
        {
            ClearMessagesAndSignals();

            List <VehicleScapeAPI.Message> messages = VehicleScapeInterface.GetMessages();

            int signalCount = 0;

            foreach (VehicleScapeAPI.Message message in messages)
            {
                uint   arbID = VehicleScapeInterface.GetMessageArbIDByHandle(message.handle);
                string networkDescription = VehicleScapeInterface.GetNetworkDescriptionByHandle(message.networkHandle);
                string source             = networkDescription + " ($" + arbID + ")";

                ListViewItem newItem = AvailableChannelsListView.Items.Add(message.description);
                newItem.Tag = new TagMetadata(message.handle, TagMetadata.MetadataType.Message);
                newItem.SubItems.Add(source);
                newItem.SubItems.Add(networkDescription);
                newItem.SubItems.Add("Message");

                List <VehicleScapeAPI.Signal> signals = VehicleScapeInterface.GetSignals(message.handle);
                foreach (VehicleScapeAPI.Signal signal in signals)
                {
                    signalCount++;
                    source = networkDescription + " " + message.description + " ($" + arbID + ")";
                    ListViewItem signalItem = AvailableChannelsListView.Items.Add(signal.description);
                    signalItem.Tag = new TagMetadata(signal.handle, TagMetadata.MetadataType.Signal);
                    signalItem.SubItems.Add(source);
                    signalItem.SubItems.Add(networkDescription);
                    signalItem.SubItems.Add(VehicleScapeAPI.SignalTypeToString(signal.type));
                }
            }
            Log("Retrieved " + signalCount + " signal" + (signalCount != 1 ? "s" : "") + ".");
            Log("Retrieved " + messages.Count + " message" + (messages.Count != 1 ? "s" : "") + ".");
        }
 public static string GetNetworkDescriptionByHandle(uint networkHandle)
 {
     VehicleScapeAPI.Network network = new VehicleScapeAPI.Network();
     network.handle = networkHandle;
     VehicleScapeAPI.GetNetworkProperties(ref network);
     return(network.description);
 }
        public static VehicleScapeAPI.Result Transfer(uint deviceHandle, bool reflash)
        {
            if (deviceHandle == 0)
            {
                return(VehicleScapeAPI.Result.ResultInvalidHandle);
            }

            int storageMediaCount = 0;

            VehicleScapeAPI.GetStorageMediumsForDevice(deviceHandle, IntPtr.Zero, ref storageMediaCount);
            if (storageMediaCount < 0)
            {
                return(VehicleScapeAPI.Result.ResultInvalidMedium);
            }
            VehicleScapeAPI.MemoryType[] types = new VehicleScapeAPI.MemoryType[storageMediaCount];
            VehicleScapeAPI.GetStorageMediumsForDevice(deviceHandle, types, ref storageMediaCount);
            VehicleScapeAPI.Result result = VehicleScapeAPI.Result.ResultOk;
            if (reflash)
            {
                VehicleScapeAPI.ReflashDevice(deviceHandle);
            }
            if (result != VehicleScapeAPI.Result.ResultOk)
            {
                return(result);
            }
            return(VehicleScapeAPI.SendCoreMini(deviceHandle, types[0], VehicleScapeAPI.RUNCOREMINI | VehicleScapeAPI.SYNCRTC));
        }
 public static void UpdateDAQ(VehicleScapeAPI.DAQ daq)
 {
     if (daq.handle == 0)
     {
         return;
     }
     VehicleScapeAPI.SetDAQProperties(ref daq);
 }
        public static uint GetMessageArbIDByHandle(uint arbIDHandle)
        {
            uint arb  = 0;
            uint mask = 0;

            VehicleScapeAPI.GetMessageArbId(arbIDHandle, ref arb, ref mask);
            return(arb);
        }
 public static VehicleScapeAPI.DAQ GetDAQByHandle(uint handle)
 {
     VehicleScapeAPI.DAQ daq = new VehicleScapeAPI.DAQ();
     if (handle == 0)
     {
         return(daq);
     }
     daq.handle = handle;
     VehicleScapeAPI.GetDAQProperties(ref daq);
     return(daq);
 }
Example #10
0
        private void DetectDevices()
        {
            DeviceListView.Items.Clear();
            List <VehicleScapeAPI.Device> devices = VehicleScapeInterface.GetDevices();

            foreach (VehicleScapeAPI.Device device in devices)
            {
                ListViewItem item = DeviceListView.Items.Add(VehicleScapeAPI.DeviceTypeToString(device.deviceType));
                item.Tag = new TagMetadata(device.handle, TagMetadata.MetadataType.Device);
                item.SubItems.Add(device.serialNumber.ToString());
                item.SubItems.Add(device.handle.ToString());
            }
        }
 private static VehicleScapeAPI.Result Initialize()
 {
     VehicleScapeAPI.Result result = VehicleScapeAPI.Init();
     if (result == VehicleScapeAPI.Result.ResultOk)
     {
         Initialized = true;
         // VehicleScape automatically creates a DAQ for us and names it "DAQ 1."
         // We want it named "New DAQ" like any DAQ we create, so we'll change it here.
         VehicleScapeAPI.DAQ initialDAQ = GetDAQs()[0];
         initialDAQ.description = "New DAQ";
         VehicleScapeAPI.SetDAQProperties(ref initialDAQ);
     }
     return(result);
 }
        public static List <VehicleScapeAPI.DAQCollection> GetDAQCollections(uint daqHandle)
        {
            List <VehicleScapeAPI.DAQCollection> collections = new List <VehicleScapeAPI.DAQCollection>();
            int colCount = 0;

            VehicleScapeAPI.GetDAQCollections(daqHandle, IntPtr.Zero, ref colCount);
            if (colCount > 0)
            {
                VehicleScapeAPI.DAQCollection[] cols = new VehicleScapeAPI.DAQCollection[colCount];
                VehicleScapeAPI.GetDAQCollections(daqHandle, cols, ref colCount);
                collections.AddRange(cols);
            }
            return(collections);
        }
        public static VehicleScapeAPI.Result Generate(GenerateParameters parameters, uint daqHandle, uint deviceHandle)
        {
            if (daqHandle == 0 || deviceHandle == 0)
            {
                return(VehicleScapeAPI.Result.ResultInvalidHandle);
            }
            // Set up our DAQ
            VehicleScapeAPI.DAQ daq = GetDAQByHandle(daqHandle);
            VehicleScapeAPI.SetDAQProperties(ref daq);

            // Set up our collection
            List <VehicleScapeAPI.DAQCollection> cols = GetDAQCollections(daqHandle);

            if (cols.Count == 0)
            {
                return(VehicleScapeAPI.Result.ResultUnableToSetupForCompile);
            }
            VehicleScapeAPI.DAQCollection col = cols[0];
            col.fileName = parameters.Name;
            col.stopNumMessages.numMessages = parameters.NumberOfMessagesToCollect;
            col.collectionType = VehicleScapeAPI.CollectionType.StartImmediatelyStopNumMessage;
            VehicleScapeAPI.SetDAQCollectionProperties(ref col);

            List <uint> channelHandles = new List <uint>();

            channelHandles.AddRange(parameters.MessageHandles);
            channelHandles.AddRange(parameters.SignalHandles);
            List <VehicleScapeAPI.DAQChannel> channels = new List <VehicleScapeAPI.DAQChannel>();

            // Set up our channels
            foreach (uint handle in channelHandles)
            {
                VehicleScapeAPI.DAQChannel channel = new VehicleScapeAPI.DAQChannel();
                channel.signalHandle = handle;
                VehicleScapeAPI.AddDAQChannel(daqHandle, handle, ref channel);
                VehicleScapeAPI.SetAlwaysCollectDAQChannel(handle);
                channels.Add(channel);
            }

            VehicleScapeAPI.Result retv = VehicleScapeAPI.GenerateCoreMini(daqHandle, deviceHandle);

            // Clear out the channels
            foreach (VehicleScapeAPI.DAQChannel channel in channels)
            {
                VehicleScapeAPI.RemoveDAQChannel(channel.signalHandle);
            }

            return(retv);
        }
        public static List <VehicleScapeAPI.Signal> GetSignals(uint messageHandle)
        {
            List <VehicleScapeAPI.Signal> signals = new List <VehicleScapeAPI.Signal>();

            int signalCount = 0;

            VehicleScapeAPI.GetSignals(messageHandle, IntPtr.Zero, ref signalCount);
            if (signalCount > 0)
            {
                VehicleScapeAPI.Signal[] sigs = new VehicleScapeAPI.Signal[signalCount];
                VehicleScapeAPI.GetSignals(messageHandle, sigs, ref signalCount);
                signals.AddRange(sigs);
            }
            return(signals);
        }
Example #15
0
        private void GenerateButton_Click(object sender, EventArgs e)
        {
            if (GetSelectedDAQHandle() == 0 || GetSelectedDeviceHandle() == 0)
            {
                MessageBox.Show("You must select a DAQ and a device to generate a CoreMini.");
                return;
            }
            UpdateDAQ();
            List <uint> messageHandles = new List <uint>();
            List <uint> signalHandles  = new List <uint>();

            foreach (ListViewItem item in SelectedChannelsListView.Items)
            {
                TagMetadata metadata = (TagMetadata)item.Tag;
                if (metadata.Type == TagMetadata.MetadataType.Message)
                {
                    messageHandles.Add(metadata.Handle);
                }
                else
                {
                    signalHandles.Add(metadata.Handle);
                }
            }

            GenerateParameters parameters = new GenerateParameters(
                messageHandles,
                signalHandles,
                CollectionNameTextBox.Text,
                int.Parse(MessageCountTextBox.Text),
                SleepMode,
                WakeMode,
                double.Parse(BusActivityThresholdTextBox.Text),
                RemoteWakeupCheckBox.Checked,
                StartNewFileOnWakeupCheckBox.Checked,
                double.Parse(OverallTimeoutTextBox.Text),
                double.Parse(ConnectionTimeoutTextBox.Text),
                double.Parse(VoltageCutoffTextBox.Text));

            Log("Generating CoreMini.");
            VehicleScapeAPI.Result result = VehicleScapeInterface.Generate(parameters, GetSelectedDAQHandle(), GetSelectedDeviceHandle());
            Log("Result: " + VehicleScapeAPI.ResultToString(result));
        }
        public static List <VehicleScapeAPI.Device> GetDevices()
        {
            List <VehicleScapeAPI.Device> devices = new List <VehicleScapeAPI.Device>();

            VehicleScapeAPI.Result result = Initialize();
            if (result != VehicleScapeAPI.Result.ResultOk && result != VehicleScapeAPI.Result.ResultAlreadyInitialized)
            {
                return(devices);
            }

            int deviceCount = 0;

            VehicleScapeAPI.GetDevices(IntPtr.Zero, ref deviceCount);
            if (deviceCount > 0)
            {
                VehicleScapeAPI.Device[] devs = new VehicleScapeAPI.Device[deviceCount];
                VehicleScapeAPI.GetDevices(devs, ref deviceCount);
                devices.AddRange(devs);
            }
            return(devices);
        }
        public static VehicleScapeAPI.DAQ AddDAQ()
        {
            if (!Initialized)
            {
                if (Initialize() == VehicleScapeAPI.Result.ResultOk)
                {
                    VehicleScapeAPI.DAQ initialDAQ = GetDAQs()[0];
                    return(initialDAQ);
                }
                else
                {
                    return(new VehicleScapeAPI.DAQ());
                }
            }

            VehicleScapeAPI.DAQ daq = new VehicleScapeAPI.DAQ();
            VehicleScapeAPI.AddDAQ(ref daq);
            daq.description = "New DAQ";
            VehicleScapeAPI.SetDAQProperties(ref daq);
            return(daq);
        }
        public static List <VehicleScapeAPI.DAQ> GetDAQs()
        {
            List <VehicleScapeAPI.DAQ> daqList = new List <VehicleScapeAPI.DAQ>();

            if (!Initialized)
            {
                return(daqList);
            }

            int daqCount = 0;

            VehicleScapeAPI.GetDAQs(IntPtr.Zero, ref daqCount);
            if (daqCount == 0)
            {
                return(daqList);
            }
            VehicleScapeAPI.DAQ[] daqs = new VehicleScapeAPI.DAQ[daqCount];
            VehicleScapeAPI.GetDAQs(daqs, ref daqCount);
            daqList.AddRange(daqs);
            return(daqList);
        }
Example #19
0
 private void UploadButton_Click(object sender, EventArgs e)
 {
     Log("Transferring to device.");
     VehicleScapeAPI.Result result = VehicleScapeInterface.Transfer(GetSelectedDeviceHandle(), ReflashFirmwareCheckbox.Checked);
     Log("Result: " + VehicleScapeAPI.ResultToString(result));
 }
 public static VehicleScapeAPI.Result WriteDAQ(VehicleScapeAPI.DAQ daq)
 {
     return(VehicleScapeAPI.SetDAQProperties(ref daq));
 }