예제 #1
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" : "") + ".");
        }
예제 #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) + ".");
                }
            }
        }
예제 #3
0
        private void GetDAQs()
        {
            ClearDAQs();
            List <VehicleScapeAPI.DAQ> daqs = VehicleScapeInterface.GetDAQs();

            foreach (VehicleScapeAPI.DAQ daq in daqs)
            {
                ListViewItem item = DAQListView.Items.Add(daq.description);
                item.Tag = new TagMetadata(daq.handle, TagMetadata.MetadataType.DAQ);
            }
        }
예제 #4
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());
            }
        }
예제 #5
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));
        }
예제 #6
0
 private void UpdateDAQ()
 {
     if (loading)
     {
         return;
     }
     VehicleScapeAPI.DAQ daq = GetSelectedDAQ();
     if (DAQListView.SelectedIndices.Count > 0)
     {
         daq.description = DAQListView.Items[DAQListView.SelectedIndices[0]].Text;
     }
     daq.newFileOnWakeup = Convert.ToInt32(StartNewFileOnWakeupCheckBox.Checked);
     daq.sleepPeriod     = NeverGoToSleepRadioButton.Checked ?
                           VehicleScapeAPI.NeverGoToSleep :
                           double.Parse(BusActivityThresholdTextBox.Text);
     daq.wakeupMode = WakeNormalRadioButton.Checked ?
                      VehicleScapeAPI.WakeupModeType.WakeupModeTypeNormal :
                      VehicleScapeAPI.WakeupModeType.WakeupModeTypeInstant;
     daq.remoteWakeup           = Convert.ToInt32(RemoteWakeupCheckBox.Checked);
     daq.neoVIOverallTimeout    = double.Parse(OverallTimeoutTextBox.Text);
     daq.neoVIConnectionTimeout = double.Parse(ConnectionTimeoutTextBox.Text);
     daq.neoVIVoltageCutoff     = double.Parse(VoltageCutoffTextBox.Text);
     VehicleScapeInterface.UpdateDAQ(daq);
 }
예제 #7
0
 private void AddDAQButton_Click(object sender, EventArgs e)
 {
     VehicleScapeInterface.AddDAQ();
     GetDAQs();
 }
예제 #8
0
 private VehicleScapeAPI.Device GetSelectedDevice()
 {
     return(VehicleScapeInterface.GetDeviceByHandle(GetSelectedDeviceHandle()));
 }
예제 #9
0
 private VehicleScapeAPI.DAQ GetSelectedDAQ()
 {
     return(VehicleScapeInterface.GetDAQByHandle(GetSelectedDAQHandle()));
 }
예제 #10
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));
 }