У меня есть это приложение c # windows form, которое получает данные через последовательный порт от другого ПК и отправляет данные в веб-приложение во всех полных данных.Теперь моя проблема, я знаю, что я не могу знать, если данные, полученные завершен, потому что нет Stoper слова или символа в полученных данных, потому что я не имею никакого контроля над данными, которые, посылаемыми.Каков наилучший подход в моей ситуации?Я попытался поставить поток, чтобы сделать время ожидания, но ир не помогает.
вот мой код:
public void DataReceivedHandler_2(object sender, SerialDataReceivedEventArgs e)
{
Thread.sleep(5000);
SerialPort sp = (SerialPort)sender;
byte[] buffer = new byte[sp.ReadBufferSize];
if (tString == string.Empty)
{
SetText("SPC_CLEAR_TEXT");
SetTextProcessed("SPC_CLEAR_TEXT");
}
int bytesRead = sp.Read(buffer, 0, buffer.Length);
tString += Encoding.ASCII.GetString(buffer, 0, bytesRead);
if (tString.Contains("[DATA]"))
{
SetText(tString);
FormatRawData(txtRawData.Text);
SendToSPC();
tString = string.Empty;
// string workingString = tString.Substring(0, tString.IndexOf((char)_terminator));
// tString = tString.Substring(tString.IndexOf((char)_terminator));
// MessageBox.Show(workingString, "with terminator", MessageBoxButtons.OK);
}
}
Я также пробовал это, но это работало в виртуальном порту, но не на самом деле
while (sp.BytesToRead > 0)
{
bytesRead = sp.Read(buffer, 0, buffer.Length);
tString += Encoding.ASCII.GetString(buffer, 0, bytesRead);
}
Формат данных:
[HEADER]
Comment
View
H_Number
V_Number
[CONTROL VALUE]
Label Sn
Target ******
UCL 15.000
LCL 7.000
Mean UCL ******
Mean LCL ******
Range UCL ******
Range LCL ******
[DATA]
Sn Batch no. Date / Shift: User Name:
9.408 19-09-20A JOUIE
8.711 19-09-20A JOUIE
9.820 19-09-20A JOUIE
иногда он содержит более 50 строк, и я получаю данные только после номера партии SN.