private void decodeMessagesBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) { List <string[]> decodedFramesList = new List <string[]>(); // Get the BackgroundWorker that raised this event. BackgroundWorker worker = sender as BackgroundWorker; // Assign the result of the computation // to the Result property of the DoWorkEventArgs // object. This is will be available to the // RunWorkerCompleted eventhandler. int i = 0; toolStripProgressBar.Maximum = filesToRead.GetLength(0); foreach (String FileName in filesToRead) { byte[] fileBytes = File.ReadAllBytes(@FileName); ListOfFrames decodedList = new ListOfFrames(); decodedFramesList = decodedList.DecodeFileAsList(fileBytes); int percents = (i * 100) / filesToRead.GetLength(0); //decodeMessagesBackgroundWorker.ReportProgress(percents); decodeMessagesBackgroundWorker.ReportProgress(percents, i++); foreach (var row in decodedFramesList) { if (decodeMessagesBackgroundWorker.CancellationPending == true) { e.Cancel = true; return; // abort work, if it's cancelled } table.Rows.Add(row); } } }
private void showData(string[] filesToRead) { //tabControl.SelectTab(tabPageDecEventTable); //List<string[]> decodedFramesList = new List<string[]>(); ////https://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource.filter(v=vs.110).aspx ////https://msdn.microsoft.com/en-us/library/aa480727.aspx ////https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/bind-data-to-the-datagrid-using-the-designer //DataTable table = new DataTable(); //table.Columns.Add(resmgr.GetString("labelTime", ci), typeof(string)); //table.Columns.Add(resmgr.GetString("labelLxNumber", ci), typeof(string)); //table.Columns.Add(resmgr.GetString("labelChannel", ci), typeof(string)); //table.Columns.Add(resmgr.GetString("labelNumber", ci), typeof(string)); //table.Columns.Add(resmgr.GetString("labelName", ci), typeof(string)); //table.Columns.Add(resmgr.GetString("labelStatus", ci), typeof(string)); //table.Columns.Add(resmgr.GetString("labelCategory", ci), typeof(string)); //table.Columns.Add(resmgr.GetString("labelGroup", ci), typeof(string)); ////binding1 = new BindingSource(DataTable table); //foreach (String FileName in filesToRead) //{ // byte[] fileBytes = File.ReadAllBytes(@FileName); // ListOfFrames decodedList = new ListOfFrames(); // decodedFramesList = decodedList.DecodeFileAsList(fileBytes); // foreach (var row in decodedFramesList) // { // table.Rows.Add(row); // } // dataGridViewEventsAndAlarms.DataSource = table; //} //DataGridViewColumn column = dataGridViewEventsAndAlarms.Columns[0]; //column.Width = 130; ////column. //column = dataGridViewEventsAndAlarms.Columns[1]; //column.Width = 60; ////column.HeaderCell = new DataGridViewAutoFilterColumnHeaderCell(column); //column = dataGridViewEventsAndAlarms.Columns[2]; //column.Width = 60; //column = dataGridViewEventsAndAlarms.Columns[3]; //column.Width = 110; //column = dataGridViewEventsAndAlarms.Columns[4]; //column.Width = 200; //column = dataGridViewEventsAndAlarms.Columns[7]; //column.Width = 70; ////dataGridViewEventsAndAlarms.Sort(dataGridViewEventsAndAlarms.Columns[1], ListSortDirection.Ascending); to nic nie daje //// Do tego miejsca było robione po staremu // od tego miejsca po nowemu // https://msdn.microsoft.com/en-us/library/Aa480727.aspx tabControl.SelectTab(tabPageDecEventTable); List <string[]> decodedFramesList = new List <string[]>(); //DataTable table = new DataTable(); table = null; table = new DataTable(); //table.Clear(); table.Columns.Add(resmgr.GetString("labelTime", ci), typeof(string)); table.Columns.Add(resmgr.GetString("labelLxNumber", ci), typeof(string)); table.Columns.Add(resmgr.GetString("labelChannel", ci), typeof(string)); table.Columns.Add(resmgr.GetString("labelNumber", ci), typeof(string)); table.Columns.Add(resmgr.GetString("labelName", ci), typeof(string)); table.Columns.Add(resmgr.GetString("labelStatus", ci), typeof(string)); table.Columns.Add(resmgr.GetString("labelCategory", ci), typeof(string)); table.Columns.Add(resmgr.GetString("labelGroup", ci), typeof(string)); foreach (String FileName in filesToRead) { byte[] fileBytes = File.ReadAllBytes(@FileName); ListOfFrames decodedList = new ListOfFrames(); decodedFramesList = decodedList.DecodeFileAsList(fileBytes); foreach (var row in decodedFramesList) { table.Rows.Add(row); } } //dataGridViewEventsAndAlarms.DataSource = table; updateDataGridViewEventsAndAlarms(table); //https://stackoverflow.com/questions/199642/how-to-insert-empty-field-in-combobox-bound-to-datatable //List<KeyValuePair<string, Guid>> list = new List<KeyValuePair<string, Guid>>(table.Rows.Cast<DataRow>().Select(row => new KeyValuePair<string, Guid>(row["Name"].ToString(), (Guid)row["Guid"]))); List <string> listLxNum = new List <string>(table.Rows.Cast <DataRow>().Select(row => row[resmgr.GetString("labelLxNumber", ci)].ToString())); //list.Insert(0, new KeyValuePair<string, Guid>(string.Empty, Guid.Empty)); listLxNum.Insert(0, "*"); listLxNum = listLxNum.Distinct().ToList(); comboBoxLxNumber.DataSource = listLxNum; //comboBoxLxNumber.ValueMember = "Value"; //comboBoxLxNumber.DisplayMember = "Key"; List <string> listLxChannel = new List <string>(table.Rows.Cast <DataRow>().Select(row => row[resmgr.GetString("labelChannel", ci)].ToString())); listLxChannel.Insert(0, "*"); listLxChannel = listLxChannel.Distinct().ToList(); comboBoxLxChannel.DataSource = listLxChannel; List <string> listLxEvAl = new List <string>(); listLxEvAl.Insert(0, "*"); listLxEvAl.Insert(1, resmgr.GetString("labelAlert", ci)); listLxEvAl.Insert(2, resmgr.GetString("labelEvent", ci)); comboBoxEvAl.DataSource = listLxEvAl; List <string> listDecodedMessages = new List <string>(table.Rows.Cast <DataRow>().Select(row => row[resmgr.GetString("labelName", ci)].ToString())); listDecodedMessages = listDecodedMessages.Distinct().ToList(); listDecodedMessages.Sort(); listDecodedMessages.Insert(0, "*"); comboBoxMessageText.DataSource = listDecodedMessages; //List<string> listStatus = new List<string>(table.Rows.Cast<DataRow>().Select(row => row[resmgr.GetString("labelStatus", ci)].ToString())); List <string> listStatus = new List <string>(); listStatus.Insert(0, "*"); listStatus.Insert(1, " "); listStatus.Insert(2, resmgr.GetString("labelActive", ci)); listStatus.Insert(3, resmgr.GetString("labelNotActive", ci)); comboBoxStatus.DataSource = listStatus; List <string> listCategory = new List <string>(table.Rows.Cast <DataRow>().Select(row => row[resmgr.GetString("labelCategory", ci)].ToString())); listCategory.Insert(0, "*"); listCategory = listCategory.Distinct().ToList(); comboBoxCategory.DataSource = listCategory; List <string> listGroup = new List <string>(table.Rows.Cast <DataRow>().Select(row => row[resmgr.GetString("labelGroup", ci)].ToString())); listGroup.Insert(0, "*"); listGroup = listGroup.Distinct().ToList(); comboBoxGroup.DataSource = listGroup; }
private void labelReadToolStripMenuItem_Click(object sender, EventArgs e) { var openFileDialog1 = new OpenFileDialog(); var iResult = DialogResult; openFileDialog1.Title = "Podaj plik czarnej skrzynki"; openFileDialog1.Filter = "BIN Files (*.bin) | *.bin"; openFileDialog1.CheckFileExists = true; iResult = openFileDialog1.ShowDialog(); if ((iResult != System.Windows.Forms.DialogResult.Cancel) && (openFileDialog1.FileName.Length != 0)) { sConStr = openFileDialog1.FileName; byte[] fileBytes = File.ReadAllBytes(@sConStr); if (tabControl.SelectedTab == tabControl.TabPages["tabPageBin"]) { richTextBoxBin.Clear(); ////To działa - jest średnio szybkie //if (null == binHexBackgroundWorker) //{ // binHexBackgroundWorker = new BackgroundWorker(); // binHexBackgroundWorker.DoWork += new DoWorkEventHandler(binHexBackgroundWorker_DoWork); // binHexBackgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(binHexBackgroundWorker_RunWorkerCompleted); // binHexBackgroundWorker.ProgressChanged += new ProgressChangedEventHandler(binHexBackgroundWorker_ProgressChanged); // binHexBackgroundWorker.WorkerReportsProgress = true; // binHexBackgroundWorker.WorkerSupportsCancellation = true; //} //binHexBackgroundWorker.RunWorkerAsync(); //to jest szybkie ale wykorzystuje listę string bufor = ""; int hexNumber = 0, lineNumber = 0; itemsList.Clear(); foreach (byte b in fileBytes) { if (hexNumber == 0) { bufor += lineNumber.ToString() + ": "; } bufor += " "; if (b < 16) { bufor += "0"; } bufor += b.ToString("x").ToUpperInvariant(); hexNumber++; if (hexNumber > 16) { itemsList.Add(bufor); bufor = ""; hexNumber = 0; lineNumber += 16; } } string calosc = ""; ////for (int i = itemsList.Count - 1; i >= 0; i--) for (int i = 0; i < itemsList.Count; i++) { calosc = calosc + itemsList[i] + '\n'; } richTextBoxBin.Text = calosc; // koniec fragmentu z listą } else if (tabControl.SelectedTab == tabControl.TabPages["tabPageDecEvent"]) { ListOfFrames decodedList = new ListOfFrames(); decodedFramesList = decodedList.DecodeFileAsList(fileBytes); richTextBoxZdekodowane.Clear(); string calosc = ""; ////for (int i = itemsList.Count - 1; i >= 0; i--) for (int i = 0; i < decodedFramesList.Count; i++) { calosc = calosc + decodedFramesList[i] + '\n'; } richTextBoxZdekodowane.Text = calosc; //if (null == decodeMessagesBackgroundWorker) //{ //decodeMessagesBackgroundWorker = new BackgroundWorker(); //decodeMessagesBackgroundWorker.DoWork += new DoWorkEventHandler(decodeMessagesBackgroundWorker_DoWork); //decodeMessagesBackgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(decodeMessagesBackgroundWorker_RunWorkerCompleted); //decodeMessagesBackgroundWorker.ProgressChanged += new ProgressChangedEventHandler(decodeMessagesBackgroundWorker_ProgressChanged); //decodeMessagesBackgroundWorker.WorkerReportsProgress = true; //decodeMessagesBackgroundWorker.WorkerSupportsCancellation = true; //} //decodeMessagesBackgroundWorker.RunWorkerAsync(); } else { DataTable table = new DataTable(); table.Columns.Add(resmgr.GetString("labelTime", ci), typeof(string)); table.Columns.Add(resmgr.GetString("labelLxNumber", ci), typeof(string)); table.Columns.Add(resmgr.GetString("labelChannel", ci), typeof(string)); table.Columns.Add(resmgr.GetString("labelNumber", ci), typeof(string)); table.Columns.Add(resmgr.GetString("labelName", ci), typeof(string)); table.Columns.Add(resmgr.GetString("labelStatus", ci), typeof(string)); table.Columns.Add(resmgr.GetString("labelCategory", ci), typeof(string)); table.Columns.Add(resmgr.GetString("labelGroup", ci), typeof(string)); ListOfFrames decodedList = new ListOfFrames(); decodedFramesList = decodedList.DecodeFileAsList(fileBytes); foreach (var row in decodedFramesList) { table.Rows.Add(row); } dataGridViewEventsAndAlarms.DataSource = table; } } }