Я пытаюсь внедрить систему для постоянного тестирования, если результаты в richTextBox равны нулю, используя другой поток.
Вот полный контекст, я получаю данные от весов, которые будут отображаться на richTextBox. Если это стабильное чтение, я добавлю результаты в базу данных массива.
Раньше я работал синхронно. Но я должен запустить программу дважды одновременно. Это работало нормально на синхронной основе.
void GetStableReading(SerialPort VarPort)
{
richSerialOut.Text = VarPort.ReadExisting();
richSerialOut.Update();
while (string.IsNullOrWhiteSpace(richSerialOut.Text))
{
richSerialOut.Text = VarPort.ReadExisting();
richSerialOut.Update();
if (richSerialOut.Text.Contains("ES") || richSerialOut.Lines.Count() > 3)
{
richSerialOut.Text = VarPort.ReadExisting();
richSerialOut.Update();
}
}
database.Add(richSerialOut.Text);
Thread.Sleep(1000);
}
Однако я не могу получить результат bool, используя метод Invoke, поэтому я попытался поместить результат в строку и проверить, подходит ли он, но я не смог этого сделать.
void GetStableReading(SerialPort VarPort)
{
ScalePort.DiscardOutBuffer();
object[] StabilityCommand = { "", VarPort.ReadExisting() };
this.Invoke(d, StabilityCommand[0]);
while (Scale_weight == "SI\r\n" || Scale_weight == "")
{
//richSerialOut.Text = VarPort.ReadExisting();
ScalePort.DiscardOutBuffer();
Scale_weight = "";
Thread.Sleep(1000);
ScalePort.Write("S" + "\n");
this.Invoke(d, StabilityCommand[1]);
}
database.Add(Scale_weight);
Thread.Sleep(1000);
}
void SetText(string message)
{
richOut.Text = message;
Scale_weight = message;
richOut.Update();
}
У кого-нибудь есть более интуитивный способ.
Мне нужно отправить строку "S \ n" через последовательный порт.
Требуемые строковые результаты будут в "S X.XXX Kg \ n", где S определяет стабильное чтение, а X.XXX - вес.