Esempio n. 1
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();
                }
            }
        }
        //****************************
        // 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();
                }
            }
        }