Пример #1
0
        //******************
        // Load Interfaces -- This loads the selected interfaces on the machine into the interfacebox
        //******************
        private void LoadInterfaces()
        {
            string bitRate = null;
            string displayRow;

            // Sets up the multi-column box
            InterfaceBox.Items.Clear();
            InterfaceBox.Columns.Clear();
            InterfaceBox.Columns.Add("Network", 55, HorizontalAlignment.Left);
            InterfaceBox.Columns.Add("Type", 155, HorizontalAlignment.Left);
            InterfaceBox.Columns.Add("Mfg", 85, HorizontalAlignment.Left);
            InterfaceBox.Columns.Add("Channel", 35, HorizontalAlignment.Left);
            InterfaceBox.Columns.Add("BitRate", 55, HorizontalAlignment.Left);
            InterfaceBox.Columns.Add("Status", 75, HorizontalAlignment.Right);

            // Reset Interfaces in Bus Intefaces
            // BusInterface.ResetInterfaces();

            GenericCanBus.DetectCanInterfaces();

            // Find all of the LIN bus interfaces and adds to the list in busInterface
            // GenericLinBus.DetectLinInterfaces();

            // Find all of the FlexRay bus interfaces and adds to the list in busInterface
            // GenericFlexRayBus.DetectFlexRayInterfaces();

            // Returns the interfaces
            string[] interfaces = BusInterface.ReturnInterfaces();

            for (int i = 0; i < interfaces.Length; i++)
            {
                bitRate = GenericCanBus.GenericCanRateReturn(interfaces[i]);

                // Creates the row with the message data and inserts the row in the ListView

                if (bitRate == null || bitRate == "" || bitRate == "0")
                {
                    displayRow = ";NA;Bus Off";
                }
                else
                {
                    displayRow = ";" + bitRate + ";Bus On";
                }

                ListViewItem item = new ListViewItem(CommonUtils.ConvertStringtoStringArray(interfaces[i] + displayRow));
                InterfaceBox.Items.AddRange(new ListViewItem[] { item });
            }
        }
Пример #2
0
        // Turns off the selected busses
        private void BusOff_Click(object sender, EventArgs e)
        {
            // Ensures that something is detected for turning on the interface
            if (InterfaceBox.SelectedIndices.Count > 0)
            {
                ListViewItem item = InterfaceBox.SelectedItems[0];

                // Loops through all of the Items to detect all of the selected itmes
                for (int x = 0; x < InterfaceBox.Items.Count; x++)
                {
                    // If the item is selected then turn on the interface
                    if (InterfaceBox.Items[x].Selected)
                    {
                        if (InterfaceBox.Items[x].SubItems[5].Text == "Bus On")
                        {
                            GenericCanBus.GenericCanBusOff(InterfaceBox.Items[x].SubItems[0].Text + ";" +
                                                           InterfaceBox.Items[x].SubItems[1].Text + ";" +
                                                           InterfaceBox.Items[x].SubItems[2].Text + ";" +
                                                           InterfaceBox.Items[x].SubItems[3].Text);

                            string bitRate = GenericCanBus.GenericCanRateReturn(InterfaceBox.Items[x].SubItems[0].Text + ";" +
                                                                                InterfaceBox.Items[x].SubItems[1].Text + ";" +
                                                                                InterfaceBox.Items[x].SubItems[2].Text + ";" +
                                                                                InterfaceBox.Items[x].SubItems[3].Text);

                            if (bitRate == null || bitRate == "" || bitRate == "0")
                            {
                                InterfaceBox.Items[x].SubItems[4].Text = "NA";
                                InterfaceBox.Items[x].SubItems[5].Text = "Bus Off";
                            }
                            else
                            {
                                InterfaceBox.Items[x].SubItems[4].Text = bitRate;
                                InterfaceBox.Items[x].SubItems[5].Text = "Bus On";
                            }
                        }
                        else
                        {
                            MainWindow.ErrorDisplayString("Bus Not On: " + InterfaceBox.Items[x].SubItems[1].Text);
                        }
                    }
                }
            }
            else
            {
                MessageBox.Show("One of the items should be selected!");
            }
        }
Пример #3
0
        //****************************
        // Update Interface Boxes
        //****************************
        private void UpdateInterfaceBox()
        {
            string bitRate = "-1";

            // Populate the availabe interfaces for transmission/receiving
            string[] interfaces = BusInterface.ReturnInterfaces();

            for (int i = 0; i < interfaces.Length; i++)
            {
                bitRate = GenericCanBus.GenericCanRateReturn(interfaces[i]);

                // Creates the row with the message data and inserts the row in the ListView
                if (bitRate != null && bitRate != "" && bitRate != "0" && bitRate != "-1")
                {
                    TransmitInterfaceBox.Items.Add(interfaces[i]);
                }
            }

            if (TransmitInterfaceBox.Items.Count > 0)
            {
                TransmitInterfaceBox.SelectedIndex = 0;
            }
        }
Пример #4
0
        private void bgMultipleTransmit_DoWork(object sender, DoWorkEventArgs e)
        {
            CanData can = e.Argument as CanData;

            GenericCanBus.GenericCanTransmitMultiple(can);
        }
Пример #5
0
        // Transmits the selected packets
        private void Transmit_Click(object sender, EventArgs e)
        {
            try
            {
                CanData can       = new CanData();
                string  msgOutput = "";

                // Loop through all items the MonitorBox.
                for (int x = 0; x < TransmitBox.Items.Count; x++)
                {
                    // Determine if the item is selected.
                    if (TransmitBox.Items[x].Selected)
                    {
                        can.hardware = TransmitInterfaceBox.SelectedItem.ToString();
                        can.format   = "hex";
                        can.flags    = 0;
                        int count = 1;

                        // Transmit for simple packets
                        if (TransmitBox.Items[x].SubItems[1].Text.Contains("Packet"))
                        {
                            // return string --> 0=id; 1=dlc; 2=flag; 3=message
                            msgOutput = XMLInterfaces.ReturnPacketDataTransmit(TransmitList.SelectedItem.ToString(), TransmitBox.Items[x].SubItems[0].Text);
                            CommonUtils.ConvertStringtoCAN(can, msgOutput);
                            string[] output = msgOutput.Split(';');

                            if (output[3].Equals("X"))
                            {
                                can.flags = 4; // Extended Packet
                            }
                            // if packets number or time between is blank then only send one packet
                            if (output[4] == "" || output[5] == "")
                            {
                                GenericCanBus.GenericCanTransmitSingle(can);
                                // Verbose Output
                                if (VerboseTransmit.Checked == true)
                                {
                                    MessageBox.Show(CommonUtils.DisplayMsg(can));
                                }
                            }
                            else
                            {
                                can.number  = Convert.ToInt32(output[4]);
                                can.timeBtw = Convert.ToInt32(output[5]);
                                GenericCanBus.GenericCanTransmitMultiple(can);
                            }

                            // Transmit for Packet Sequences
                        }
                        else if (TransmitBox.Items[x].SubItems[1].Text.Contains("Sequence"))
                        {
                            // for execution once before the while check
                            do
                            {
                                // return string --> 0=id; 1=dlc; 2=flag; 3=message
                                msgOutput = XMLInterfaces.ReturnPacketDataSequence(count, TransmitList.SelectedItem.ToString(), TransmitBox.Items[x].SubItems[0].Text);
                                if (msgOutput.Equals("??"))
                                {
                                    return;
                                }

                                CommonUtils.ConvertStringtoCAN(can, msgOutput);
                                string[] output = msgOutput.Split(';');

                                if (output[3].Equals("X"))
                                {
                                    can.flags = 4; // Extended Packet
                                }
                                GenericCanBus.GenericCanTransmitSingle(can);

                                count++;

                                // Verbose Output
                                if (VerboseTransmit.Checked == true)
                                {
                                    MessageBox.Show(CommonUtils.DisplayMsg(can));
                                }
                            } while (msgOutput.Contains(";"));
                        }
                        else if (TransmitBox.Items[x].SubItems[1].Text.Contains("If Then"))
                        {
                            MainWindow.ErrorDisplayString("If Then Clauses are Activated in the Bus Monitor User Interface");
                        }
                    }
                }
            }
            catch
            {
                MessageBox.Show("No interface is turned on, please turn on the interfaces from \"Advanced Bus Control\"");
                this.Close();
                BusControl form = (BusControl)CommonUtils.GetOpenedForm <BusControl>();
                if (form == null)
                {
                    form = new BusControl();
                    form.Show();
                }
                else
                {
                    form.Select();
                }
            }
        }
Пример #6
0
        // Turns on the selected busses
        private void BusOn_Click(object sender, EventArgs e)
        {
            string bitRateSetting;

            if (standardRate1M.Checked)
            {
                bitRateSetting = "1M";
            }
            else if (standardRate500K.Checked)
            {
                bitRateSetting = "500K";
            }
            else if (standardRate250K.Checked)
            {
                bitRateSetting = "250K";
            }
            else if (standardRate125K.Checked)
            {
                bitRateSetting = "125K";
            }
            else if (standardRate100K.Checked)
            {
                bitRateSetting = "100K";
            }
            else if (standardRate62K.Checked)
            {
                bitRateSetting = "62K";
            }
            else if (standardRate50K.Checked)
            {
                bitRateSetting = "50K";
            }
            else if (standardRate33K.Checked)
            {
                bitRateSetting = "33K";
            }
            else
            {
                bitRateSetting = "NA";
            }

            if (customRate.Checked)
            {
                MainWindow.ErrorDisplayString("Custom Settings Not Yet Implemented");
                return;
            }

            // Ensures that something is detected for turning on the interface
            if (InterfaceBox.SelectedIndices.Count > 0)
            {
                ListViewItem item = InterfaceBox.SelectedItems[0];

                // Loops through all of the Items to detect all of the selected itmes
                for (int x = 0; x < InterfaceBox.Items.Count; x++)
                {
                    // If the item is selected then turn on the interface
                    if (InterfaceBox.Items[x].Selected)
                    {
                        if (InterfaceBox.Items[x].SubItems[5].Text != "Bus On")
                        {
                            int status = GenericCanBus.GenericCanBusOn(InterfaceBox.Items[x].SubItems[0].Text + ";" +
                                                                       InterfaceBox.Items[x].SubItems[1].Text + ";" +
                                                                       InterfaceBox.Items[x].SubItems[2].Text + ";" +
                                                                       InterfaceBox.Items[x].SubItems[3].Text,
                                                                       bitRateSetting);

                            // REVISIONS -- Error with returning the data rate for the adapters
                            // This populates the data rate for the adapter
                            InterfaceBox.Items[x].SubItems[4].Text = GenericCanBus.GenericCanRateReturn(InterfaceBox.Items[x].SubItems[0].Text + ";" +
                                                                                                        InterfaceBox.Items[x].SubItems[1].Text + ";" +
                                                                                                        InterfaceBox.Items[x].SubItems[2].Text + ";" +
                                                                                                        InterfaceBox.Items[x].SubItems[3].Text);

                            if (status == 1)
                            {
                                InterfaceBox.Items[x].SubItems[5].Text = "Bus On";
                            }
                        }
                        else
                        {
                            MainWindow.ErrorDisplayString("Bus Already On: " + InterfaceBox.Items[x].SubItems[1].Text);
                        }
                    }
                }
            }
            else
            {
                MessageBox.Show("One of the items should be selected!");
            }
        }
        //****************************
        // Transmit Settings Tab
        // Written by Parnian Najafi Borazjani
        //****************************
        private void TransmitPacket_Click(object sender, EventArgs e)
        {
            CanData can             = new CanData();
            int     number_messages = 1;
            string  msgOutput       = "";
            string  flag;

            //if (Transmit_dlc.Value>8)
            //    MessageBox.Show("Messages can have a maximum of 8");
            // For the various flags
            // Need to implement an enumerated keyword to replace these numbers
            // These numbers are from the Kvaser library documentation and may not work on other CAN systems
            if (Flag_Ext.Checked == true)
            {
                flag = "X";                     // Extended
            }
            else if (Flag_Err.Checked == true)
            {
                flag = "E";                     // Error
            }
            else if (Flag_Rtr.Checked == true)
            {
                flag = "R";                     // Remote
            }
            else
            {
                flag = "S";                     // Standard
            }
            if (InputTests.IsStringNumeric(Transmit_NoMsg.Text) == true)
            {
                number_messages = Convert.ToInt32(Transmit_NoMsg.Text);
            }
            else
            {
                MessageBox.Show("Error: Number of Messages is not Numeric", "Error", MessageBoxButtons.OK);
            }

            msgOutput = Transmit_id.Text + ";" + Transmit_dlc.Text + ";" + flag + ";" + Transmit_msg0.Text + "-" + Transmit_msg1.Text + "-" + Transmit_msg2.Text + "-" + Transmit_msg3.Text + "-" + Transmit_msg4.Text + "-" + Transmit_msg5.Text + "-" + Transmit_msg6.Text + "-" + Transmit_msg7.Text;

            if (Transmit_Hex.Checked == true)
            {
                can.format = "hex";
            }
            else
            {
                can.format = "decimal";
            }

            CommonUtils.ConvertStringtoCAN(can, msgOutput);

            can.number  = number_messages;
            can.timeBtw = 0;
            try
            {
                can.hardware = TransmitInterfaceBox.SelectedItem.ToString();

                if (IncrementIdentifier.Checked == true)
                {
                    can.increment = true;
                }

                GenericCanBus.GenericCanTransmitMultiple(can);
                //bgTransmit.RunWorkerAsync(can);

                toolStripStatusLabel2.Text = CommonUtils.ErrorMsg("Transmit Message", can.status);
                ErrorLog.NewLogEntry("CAN", "Transmit Message: " + can.status);

                if (VerboseTransmit.Checked == true)
                {
                    MessageBox.Show(CommonUtils.DisplayMsg(can));
                }
            }
            catch
            {
                MessageBox.Show("No interface is turned on, please turn on the interfaces from \"Advanced Bus Control\" Window");
                this.Close();
                BusControl form = (BusControl)CommonUtils.GetOpenedForm <BusControl>();
                if (form == null)
                {
                    form = new BusControl();
                    form.Show();
                }
                else
                {
                    form.Select();
                }
            }
        }