2015-06-23 5 views
0

В настоящее время у меня строка объявлена ​​как RxString. Rxstring представляют собой строку данных, как, например:Подсчет числа появления

T 112 22.0 

Теперь мне нужно извлечь из среднего значения данных, чтобы сделать сравнение. Поэтому я делаю раскол. Код, как указано ниже:

string[] number = RxString.Split(' '); 
string unit = number[1]; 

Так что теперь среднее значение объявляется как единица струн.

Данные поступают из последовательного порта, например:

T 11 22.2 
T 42 22.0 
T 42 22.0 
T 42 23.2 
T 22 20.8 

на основе числа появления среднего значения, мне нужно выполнить какое-то действие. Например, если 42 появляется 4 раза (один за другим) по строке, мне нужно выполнить действие, иначе запись данных будет происходить, как обычно. Как я должен обрабатывать счет?

while (serialPort1.IsOpen) 
{  
string[] number = RxString.Split(' '); 
string unit = number[1]; 

(Code for checking repeat) 

if (unit repeats 4times) 
{execute an action then record in db then reset counter} 
else 
{record in db then reset counter} 
} 

Имеют смысл?

+0

Вы собираетесь быть выполнением функции _while_ (пока) вы получаете данные или _for_ конкретный, предварительно загруженный набор данных? –

+0

@BenKnoble Мой друг предложил сохранить устройство для массива во время цикла, а затем использовать для цикла для сравнения. Но я просто потерял .. – Athena

+0

Зачем вам нужен цикл for для сравнения? Я бы сделал это так: while loop для входящих данных. Ведите переменную счетчика за количество раз, когда вы видели 42. Сделайте свое хранилище, а затем проверьте, как указано в вашем вопросе, помните в ветке для выполнения действия, чтобы сбросить переменную счетчика. –

ответ

1

Скажет у вас есть массив, для всех средних значений:

string[] values = {11, 42, 42, 42, 22}; 
int count = 1; 
for(int i = 1; i < values.Count; i++) { 
    if(values[i-1] == values[i]) 
     count++; 
    else 
     count = 1; 
    if(count == 4 && values[i] == "42") 
     Execute(); // Change this 
    RecordInDb(); // Change this 
} 
+0

Я не думаю, что могу хранить значения, подобные этому .. данные не фиксированы. Я получаю его по потоку. – Athena

Смежные вопросы