В моем модуле есть функциональность, где пользователь может
сканировать количество последовательных портов в системе и когда
пользователь нажимает кнопку «Автосканирование», код должен будет идти
через каждый последовательный порт и отправить тестовое сообщение и ждать
за ответ.
Я использую панель управления прогрессом, чтобы показать процесс автоматического сканирования.
Для которого мне нужно передать значение «х» и «Y» в моем коде
обновить бар. Как я могу передать значение, так как мой код уже
в цикле foreach для получения последовательных портов.
Y = должно передавать значение общего количества последовательных портов
X = должен пройти через каждый порт и передать значение
Надеюсь, мне ясно с требованием.
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
string strAckData = "";
foreach (SerialPort sp in comPortsList)
{
sp.Open();
string sendData = "Auto scan";
sp.Write(sendData);
strAckData += "Connection live on port " + sp.ReadExisting() + "\n";
sp.Close();
double dIndex = (double)x; **//How to pass the value here ?**
double dTotal = (double)y; **//How to pass the value here ?**
double dProgressPercentage = (dIndex / dTotal);
int iProgressPercentage = (int)(dProgressPercentage * 100);
// update the progress bar
backgroundWorker1.ReportProgress(iProgressPercentage);
}
richTextBox1.Invoke(new MethodInvoker(delegate { richTextBox1.Text = strAckData; }));
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
ProgressBar.Value = e.ProgressPercentage;
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
StatusLabel.Text = "Auto Scan completed";
}