/// <summary> /// Send usage data specified mail address /// </summary> public static void SendUsageData() { if (DataSender == null) { throw new InvalidOperationException("DataSender must be set before sending data"); } lock (OperationLock) { DataSender.SendData(CurrentData.ToString(SaveOptions.DisableFormatting)); } }
private void timer1_Tick(object sender, EventArgs e) { long CurrentFileLength; using (BinaryReader dataFile = new BinaryReader(File.Open(BinPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))) { CurrentFileLength = dataFile.BaseStream.Length; } #region Zero Signals if (!ZeroSignalDisplayed && SysInfo.NeedCalculateZero && GIBgotov && (CurrentFileLength - StartPosForZeroSignal > SysInfo.ZeroSignalCount)) { ZeroSignalDisplayed = true; Thread thread = new Thread(ZeroSignalDisplay_Thread); //Создаем новый объект потока (Thread) thread.Start(); //запускаем поток } #endregion if (CurrentFileLength < SysInfo.CountOfPack * SysInfo.WordsInPack * 2) { return; } ushort tempZPR; int k; #region Binary Reader using (BinaryReader dataFile = new BinaryReader(File.Open(BinPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))) { dataFile.BaseStream.Position = CurrentFileLength - 2; while (dataFile.ReadUInt16() != 0x5555) { dataFile.BaseStream.Position -= 4; } if (SysInfo.OtherWords != 0) { if (!GIBgotov) { StartPosForZeroSignal = dataFile.BaseStream.Position; } dataFile.BaseStream.Position -= SysInfo.WordsInPack * 2; k = 0; if (SysInfo.YCXuse) { LastData_OtherWords[k++] = dataFile.ReadUInt16(); } if (SysInfo.YCYuse) { LastData_OtherWords[k++] = dataFile.ReadUInt16(); } if (SysInfo.YCZuse) { LastData_OtherWords[k++] = dataFile.ReadUInt16(); } if (SysInfo.PXuse) { LastData_OtherWords[k++] = dataFile.ReadUInt16(); } if (SysInfo.PYuse) { LastData_OtherWords[k++] = dataFile.ReadUInt16(); } if (SysInfo.PZuse) { LastData_OtherWords[k++] = dataFile.ReadUInt16(); } if (SysInfo.VRKuse) { LastData_OtherWords[k++] = dataFile.ReadUInt16(); } while (dataFile.ReadUInt16() != 0x5555) { } } dataFile.BaseStream.Position -= 4; tempZPR = dataFile.ReadUInt16(); dataFile.BaseStream.Position += 2; if (SysInfo.TempWords != 0) { dataFile.BaseStream.Position -= SysInfo.CountOfPack * SysInfo.WordsInPack * 2; for (int i = 0; i < LastData_TempWords.Length; i++) { dataFile.BaseStream.Position += SysInfo.OtherWords * 2; LastData_TempWords[i] = dataFile.ReadUInt16(); while (dataFile.ReadUInt16() != 0x5555) { } } } } #endregion k = 0; int CurrentData; #region YC if (SysInfo.YCXuse) { CurrentData = LastData_OtherWords[k++]; if ((CurrentData & 0x200) == 0x200) { CurrentData = (int)((CurrentData & 0x1FF) | 0xFFFFFE00); //если отрицательное значение -> в доп.код } else { CurrentData = CurrentData & 0x1FF; //если положительное значение -> как есть } YCXtext.Text = CurrentData.ToString(); //УСХ if (SysInfo.RKVuse) { if ((Math.Abs(CurrentData) <= SysInfo.ScaleM1) && Scale_YCX_M2) { Scale_YCX_M2 = false; YCXtext.BackColor = Color.GreenYellow; //масштаб УСХ Scale_changed = true; } else if ((Math.Abs(CurrentData) >= SysInfo.ScaleM2) && !Scale_YCX_M2) { Scale_YCX_M2 = true; YCXtext.BackColor = Color.OrangeRed; //масштаб УСХ Scale_changed = true; } } } if (SysInfo.YCYuse) { CurrentData = LastData_OtherWords[k++]; if ((CurrentData & 0x200) == 0x200) { CurrentData = (int)((CurrentData & 0x1FF) | 0xFFFFFE00); //если отрицательное значение -> в доп.код } else { CurrentData = CurrentData & 0x1FF; //если положительное значение -> как есть } YCYtext.Text = CurrentData.ToString(); //УСY if (SysInfo.RKVuse) { if ((Math.Abs(CurrentData) <= SysInfo.ScaleM1) && Scale_YCY_M2) { Scale_YCY_M2 = false; YCYtext.BackColor = Color.GreenYellow; //масштаб УСY Scale_changed = true; } else if ((Math.Abs(CurrentData) >= SysInfo.ScaleM2) && !Scale_YCY_M2) { Scale_YCY_M2 = true; YCYtext.BackColor = Color.OrangeRed; //масштаб УСY Scale_changed = true; } } } if (SysInfo.YCZuse) { CurrentData = LastData_OtherWords[k++]; if ((CurrentData & 0x200) == 0x200) { CurrentData = (int)((CurrentData & 0x1FF) | 0xFFFFFE00); //если отрицательное значение -> в доп.код } else { CurrentData = CurrentData & 0x1FF; //если положительное значение -> как есть } YCZtext.Text = CurrentData.ToString(); //УСZ if (SysInfo.RKVuse) { if ((Math.Abs(CurrentData) <= SysInfo.ScaleM1) && Scale_YCZ_M2) { Scale_YCZ_M2 = false; YCZtext.BackColor = Color.GreenYellow; //масштаб УСZ Scale_changed = true; } else if ((Math.Abs(CurrentData) >= SysInfo.ScaleM2) && !Scale_YCZ_M2) { Scale_YCZ_M2 = true; YCZtext.BackColor = Color.OrangeRed; //масштаб УСZ Scale_changed = true; } } } #endregion #region Scale if (SysInfo.RKVuse) { if (Scale_changed) { byte temp = 0x00; temp = Scale_YCX_M2 ? (byte)(temp | 0x01) : (byte)(temp & 0xFE); temp = Scale_YCY_M2 ? (byte)(temp | 0x02) : (byte)(temp & 0xFD); temp = Scale_YCZ_M2 ? (byte)(temp | 0x04) : (byte)(temp & 0xFB); byte[] Command = { 0x4E, SysInfo.RKVadrByte[0], SysInfo.RKVadrByte[1], temp, 0xFF }; RS422_Port.Write(Command, 0, Command.Length); Scale_changed = false; } } #endregion #region P if (SysInfo.PXuse) { CurrentData = LastData_OtherWords[k++]; if ((CurrentData & 0x200) == 0x200) { CurrentData = (int)((CurrentData & 0x1FF) | 0xFFFFFE00); //если отрицательное значение -> в доп.код } else { CurrentData = CurrentData & 0x1FF; //если положительное значение -> как есть } PXtext.Text = CurrentData.ToString(); //PХ } if (SysInfo.PYuse) { CurrentData = LastData_OtherWords[k++]; if ((CurrentData & 0x200) == 0x200) { CurrentData = (int)((CurrentData & 0x1FF) | 0xFFFFFE00); //если отрицательное значение -> в доп.код } else { CurrentData = CurrentData & 0x1FF; //если положительное значение -> как есть } PYtext.Text = CurrentData.ToString(); //PХ } if (SysInfo.PZuse) { CurrentData = LastData_OtherWords[k++]; if ((CurrentData & 0x200) == 0x200) { CurrentData = (int)((CurrentData & 0x1FF) | 0xFFFFFE00); //если отрицательное значение -> в доп.код } else { CurrentData = CurrentData & 0x1FF; //если положительное значение -> как есть } PZtext.Text = CurrentData.ToString(); //PХ } #endregion #region Status if (SysInfo.VRKuse) { bool LastStatus = Statustext.Enabled; Statustext.Enabled = (LastData_OtherWords[k++] & 0x0001) != 0; //гиб готов if (!GIBgotov && Statustext.Enabled) { GIBgotov = true; SysInfo.CountOfPackagesForZeroSignal = 100000000 / tempZPR; SysInfo.ZeroSignalCount = SysInfo.WordsInPack * 2 * SysInfo.CountOfPackagesForZeroSignal; } if (LastStatus != Statustext.Enabled) { if (SysInfo.K1use) { K1_button.Enabled = Statustext.Enabled; } if (SysInfo.K2use) { K2_button.Enabled = Statustext.Enabled; } if (SysInfo.ResetKuse) { ResetK_button.Enabled = Statustext.Enabled; } } } #endregion #region Temperature if (SysInfo.TempWords != 0) { foreach (int temper in LastData_TempWords) { CurrentData = temper; int prizn_temp = CurrentData & 0x7; double temperature = ((CurrentData >> 7) & 0x1FF) * SysInfo.TempKoef - 60; if (prizn_temp == SysInfo.TYCXprizn) { TYCXtext.Text = temperature.ToString("F1"); } else if (prizn_temp == SysInfo.TYCYZprizn) { TYCYZtext.Text = temperature.ToString("F1"); } else if (prizn_temp == SysInfo.TPXprizn) { TPXtext.Text = temperature.ToString("F1"); } else if (prizn_temp == SysInfo.TPYprizn) { TPYtext.Text = temperature.ToString("F1"); } else if (prizn_temp == SysInfo.TPZprizn) { TPZtext.Text = temperature.ToString("F1"); } else if (prizn_temp == SysInfo.TGIBprizn) { TGIBtext.Text = temperature.ToString("F1"); } } } #endregion #region tzpr ZPRtext.Text = ((double)tempZPR / 10).ToString("F1"); #endregion }