private static void SendToVialon(ref MessagesCommunicator _mmc) { if (zateya) { //if (black_box.Count() > 2) //zateya = false; string params_string = String.Empty; int dl_len = dut_list.Count; Dutyara counter; for (int iterator = 0; iterator < dl_len; iterator++) { counter = dut_list[iterator]; params_string += ViaDataFormater.GenerateString(counter, iterator); } params_string = params_string.Remove(params_string.Length - 1); var dts = DateTime.Now.ToUniversalTime().ToString("ddMMyy;HHmmss"); //MessageBox.Show(params_string); //SendDutData(params_string, _mmc); //Thread.Sleep(1000); //SendDutData(params_string, _mmc); //Thread.Sleep(1000); //SendDutData(params_string, _mmc); //Thread.Sleep(1000); bool conn = false; if (_mmc != null) { conn = _mmc.IsConnected; } if (conn) { //timer_stopper.Enabled = false; //var gg = timer_stopper.Interval; black_box.Add(params_string + "zuzuzu" + dts); if (!File.Exists(path)) { File.Create(path); } //#if !DEBUG //LinuxLog(params_string + "zuzuzu" + dts.Insert(2, ".").Insert(5, ".").Insert(11, ":").Insert(14, ":")); //#endif //#if DEBUG WindowsLog(params_string + "zuzuzu" + dts.Insert(2, ".").Insert(5, ".").Insert(11, ":").Insert(14, ":"));; //#endif if (black_box.Count > 0) { //int ts = timer_stopper.Interval / 1000; //timer_stopper.Stop(); //int step = 1; //if (black_box.Count > ts + ts*20/100) //{ // step*=2; // if (black_box.Count > 2*(ts + ts * 20 / 100)) // { // step *= 2; // if (black_box.Count > 4 * (ts + ts * 20 / 100)) // { // step *= 2; // if (black_box.Count > 8 * (ts + ts * 20 / 100)) // { // step *= 2; // } // } // } //} //for (int iterator = 0; iterator < black_box.Count; iterator += step) //{ // Console.WriteLine(black_box[iterator]); // SendDutData(black_box[iterator], _mmc); // Thread.Sleep(1000); // A nado? //} foreach (var item in black_box) { Console.WriteLine(item); SendDutData(item, _mmc); Thread.Sleep(1000); // A nado? } black_box.Clear(); //timer_stopper.Start(); } } else { var tt = dts.Insert(2, ".").Insert(5, ".").Insert(11, ":").Insert(14, ":"); black_box.Add(params_string + "zuzuzu" + dts); if (!File.Exists(path)) { File.Create(path); } //#if !DEBUG //LinuxLog(params_string + "zuzuzu" + dts.Insert(2, ".").Insert(5, ".").Insert(11, ":").Insert(14, ":")); //#endif //#if DEBUG WindowsLog(params_string + "zuzuzu" + dts.Insert(2, ".").Insert(5, ".").Insert(11, ":").Insert(14, ":"));; //#endif Console.WriteLine("Add"); } } }
// Проверка полученных данных от ДУТа // в случае, если данные дошли в целосности - отправляет их получателю // в случае если данные пришли в повреждённом виде - отправляем получателю соответствующий код ошибки private static void CheckData(string input_text) { string[] dut_data_arr = input_text.Split('='); int arr_len = dut_data_arr.Length; if (arr_len != 5) { message_status = MSG_DROP; } else { // Проверяем является ли айдишник числом string dut_id = dut_data_arr[0].Substring(0, dut_data_arr[0].Length - 2); // dut_id = dut_id.Substring(1, dut_id.Length-2); float i = 0; var bb = float.TryParse(dut_id, out i); if (!bb) { message_status = MSG_DROP; return; } if (dut_data_arr[1][0] != '+' && dut_data_arr[1][0] != '-') { message_status = MSG_DROP; return; } bb = float.TryParse(dut_data_arr[2].Replace(".", ","), out i); if (!bb) { message_status = MSG_DROP; return; } bb = float.TryParse(dut_data_arr[3].Replace(".", ","), out i); if (!bb) { message_status = MSG_DROP; return; } // Если айдишник отличается от запрашиваемого - данные считаются битыми, т.к. пришли от другого ДУТа var idish = dut_list[dut_selected].Id.ToString(); if (dut_id != idish) { message_status = MSG_DROP; Console.WriteLine("Err!"); return; // Альтернативный способ решения: //message_status = null; return; //int irr = 0; //while (irr <= 25) //{ //Console.WriteLine("Err!"); // irr++; //} } // ХЗ что хз зачем, но вдроуг пригодится //bb = float.TryParse(dut_data_arr[4].Replace(".", ","), out i); //if (!bb) //{ // message_status = MSG_DROP; return; //} message_status = MSG_SUCCESS; dut_list[dut_selected].msg_cont.id = dut_id; dut_list[dut_selected].msg_cont.fuel = ViaDataFormater.CorrectoinNull(dut_data_arr[2], dut_list[dut_selected].Corrector); dut_list[dut_selected].msg_cont.water = ViaDataFormater.CorrectoinNull(dut_data_arr[3], dut_list[dut_selected].Corrector); dut_list[dut_selected].msg_cont.temp = dut_data_arr[1]; } return; }