//****************** // 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 }); } }
// 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!"); } }
//**************************** // 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; } }
private void bgMultipleTransmit_DoWork(object sender, DoWorkEventArgs e) { CanData can = e.Argument as CanData; GenericCanBus.GenericCanTransmitMultiple(can); }
// 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(); } } }
// 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(); } } }