Нет никакой гарантии, в каких размерах куски вы получите данные ....
они могут получать их по одному символу или по несколько символов за раз.
Как правило, никогдазависит от времени, чтобы определить разницу между логическими «кусками» (в вашем случае, числами).Вместо этого создайте протокол, который вы можете интерпретировать.
в вашем случае, если у вас ОЧЕНЬ простой протокол, в который вы отправляете число [пробел] число [пробел], то вы можете проанализировать
, например...
RxString += comPort.ReadExisting(); // add to an existing string
if(RxString.Contains(" ") // ok, there is a space, so we can parse out a number
{
// parse...
newRead = Convert.ToDouble(RxString.Substring(0,RxString.IndexOf(" "));
RxString = RxString.Remove(0,RxString.IndexOf(" ")+1;
AddDataToGraph(zedGraph, howfar, newRead);
howfar++;
}
и если вы использовали 123,123,234,123,343 \ n
RxString += comPort.ReadExisting(); // add to an existing string
if(RxString.Contains("\n") // ok, there is a linefeed, so we can parse out all the numbers
{
// parse...
var line = RxString.Substring(0, RxString.IndexOf("\n"));
var values = line.Split(new char[] {','}, StringSplitOptions.None).ToList();
values.ForEach(v => AddDataToGraph(zedGraph, howFar, Convert.ToDouble(v)));
RxString = RxString.Remove(0, RxString.IndexOf("\n"));
howfar++;
}