void SpecifiedDevice_DataRecieved(object sender, UsbLibrary.DataRecievedEventArgs args) { if (args.data.Contains((byte)0x7e)) { ; } var bytesString = BytesHelper.BytesToString(args.data.ToList()); Trace.WriteLine("SpecifiedDevice_DataRecieved " + bytesString); }
private void usb_watchBP_OnDataRecieved(object sender, UsbLibrary.DataRecievedEventArgs args) { if (InvokeRequired) { try { Invoke(new DataRecievedEventHandler(usb_watchBP_OnDataRecieved), new object[] { sender, args }); } catch (Exception ex) { MessageBox.Show(ex.Message); } } else { } }
public void DataReceived(object sender, UsbLibrary.DataRecievedEventArgs e) { Array.Clear(writeBuffer, 0, writeBuffer.Length); char[] asciiChars = new char[Encoding.ASCII.GetCharCount(e.data, 0, e.data.Length)]; Encoding.ASCII.GetChars(e.data, 0, e.data.Length, asciiChars, 0); string newString = new string(asciiChars); tempString += new string(asciiChars).Substring(5); tempString = tempString.Replace("\0", string.Empty); //send read number of results on device message if (_HeaderRead && !_NumResultsRead && _CountStep <= 3) { GetSampleCountMessages(); return; } ////send read config message //if (_HeaderRead && _NumResultsRead && !_ConfigRead && _CountStep <= 1) //{ // GetConfigMessages(); // return; //} //preheader if (tempString.StartsWith(Statics.GetStringFromAsciiCode((byte)AsciiCodes.ENQ)) && tempString.Length == 1) { tempString = string.Empty; writeBuffer[3] = (byte)AsciiCodes.RH; writeBuffer[4] = (byte)AsciiCodes.ACK; Port.SpecifiedDevice.SendData(writeBuffer); return; } //new line detected so frame is complete if (tempString.Contains("\r\n")) { tempString = tempString.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries)[0]; //header if (tempString.Contains(((char)AsciiCodes.STX).ToString() + "1H")) { _HeaderRead = true; ParseHeader(tempString); tempString = string.Empty; writeBuffer[3] = (byte)AsciiCodes.RH; writeBuffer[4] = (byte)AsciiCodes.EOT; Port.SpecifiedDevice.SendData(writeBuffer); Thread.Sleep(100); return; } //patient record if (tempString.Length > tempString.IndexOf((char)AsciiCodes.STX) + 2 && tempString[tempString.IndexOf((char)AsciiCodes.STX) + 2] == 'P') { tempString = string.Empty; } //terminator record if (tempString.Length > tempString.IndexOf((char)AsciiCodes.STX) + 2 && tempString[tempString.IndexOf((char)AsciiCodes.STX) + 2] == 'L') { tempString = string.Empty; } //glucose record if (tempString.Contains("^^^Glucose")) { string[] splitrecord = tempString.Split(new string[] { "|", "\r", "^" }, StringSplitOptions.RemoveEmptyEntries); int year = int.Parse(splitrecord[7].Substring(0, 4)); int month = int.Parse(splitrecord[7].Substring(4, 2)); int day = int.Parse(splitrecord[7].Substring(6, 2)); int hour = int.Parse(splitrecord[7].Substring(8, 2)); int minute = int.Parse(splitrecord[7].Substring(10, 2)); DateTime dtTimeStamp = new DateTime(year, month, day, hour, minute, 0); int glucose = int.Parse(splitrecord[3]); string sampleFormat = splitrecord[4]; this.SampleFormat = sampleFormat.ToLowerInvariant().Contains("mmol") ? SampleFormat.MMOL : SampleFormat.MGDL; //put the record in the dataset and raise the read event try { if (Records.FindByTimestamp(dtTimeStamp) == null) { //only insert non-duplicate records OnRecordRead(new RecordReadEventArgs(this._Records.AddRecordRow(dtTimeStamp, glucose, sampleFormat))); RecordsRead++; }//if }//try catch { }//catch tempString = string.Empty; } //num results message arrived if (tempString.Contains("D|") && !_NumResultsRead) { //cut message out of string string message = tempString.Substring(tempString.IndexOf("D|")); string [] splits = tempString.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries); this.SampleCount = Convert.ToInt32(splits[1]); tempString = string.Empty; _NumResultsRead = true; _CountStep = 0; Thread.Sleep(100); OnHeaderRead(new HeaderReadEventArgs(SampleCount, this)); //GetConfigMessages(); return; } ////results format //if (tempString.Contains("D|") && !_ConfigRead) //{ // //cut message out of string // string message = tempString.Substring(tempString.IndexOf("D|")); // string[] splits = tempString.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries); // BitArray bitary = new BitArray(Byte.Parse(splits[1])); // SampleFormat = (bitary.Get(2)) ? SampleFormat.MMOL : SampleFormat.MGDL; // tempString = string.Empty; // _ConfigRead = true; // _CountStep = 0; // Thread.Sleep(100); // return; //} } //end of transmission encountered after a header record is read if (_HeaderRead && _NumResultsRead && RecordsRead >= SampleCount) { _HeaderRead = false; Port.OnDataRecieved -= new UsbLibrary.DataRecievedEventHandler(DataReceived); Port.SpecifiedDevice.DataRecieved -= SpecifiedDevice_DataRecieved; OnReadFinished(new ReadFinishedEventArgs(this)); Close(); Dispose(); return; }//elseif if (_NumResultsRead)// && _ConfigRead) { Array.Clear(writeBuffer, 0, writeBuffer.Length); writeBuffer[4] = (byte)AsciiCodes.RH; writeBuffer[5] = (byte)AsciiCodes.ACK; Port.SpecifiedDevice.SendData(writeBuffer); Thread.Sleep(100); } }
void SpecifiedDevice_DataRecieved(object sender, UsbLibrary.DataRecievedEventArgs args) { DataReceived(sender, args); }
private void usb_BPA_OnDataRecieved(object sender, UsbLibrary.DataRecievedEventArgs args) { if (InvokeRequired) { try { Invoke(new DataRecievedEventHandler(usb_BPA_OnDataRecieved), new object[] { sender, args }); } catch (Exception ex) { MessageBox.Show(ex.Message); } } else { try { // 接收需要的bytes後,將data匯入現有的patient class // 先判斷dataID是否有在dataBase裡 decode.DecodingData(args.data,IDinDataBase,patient,usb_BPA); BPA.VersionArr = decode.VersionArr; BPA.DateTime = decode.ThisDateTime.ToString(); BPA.ID = decode.ID; if (decode.FlagCommandisData) { decode.FlagCommandisData = false; if (!decode.IDisInDataBase) { if (MessageBox.Show(String.Format("ID: {0} haven't add to dataBase yet! Do you want to create?", patient.patientData[(int)PatientDataIndex.ID]), "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { UIStatus_ClearAllData(); tb_ID.ReadOnly = false; tb_ID.Text = patient.patientData[(int)PatientDataIndex.ID]; btn_sendID.Enabled = true; btn_update.Enabled = false; btn_delete.Enabled = false; btn_save.Enabled = true; } } else { PatientData.dataBaseToListView(cb_ID.Text, listView1); cb_ID.Text = patient.patientData[(int)PatientDataIndex.ID]; tab_main.SelectedTab = tabPage_Table; //chart 也要更新 LoadDataIntoChart(); ReadPatientDataFromDB("_"+cb_ID.Text,patientDataStruct); } //--- receive data finish tmrCheckUser.Enabled = true; } else if (decode.FlagCheckDateTime && FlagCheckDateTimeCount == 0) { FlagCheckDateTimeCount++; UIStatus_BPAConnected(); // 確定裝置已 wake up //timer1.Enabled = false; // 比較 deviceBPA 與 PC 的時間 if (decode.PcNowTime.ToShortDateString() != decode.ThisDateTime.ToShortDateString()) { if (MessageBox.Show("Do you want to syn the time with PC?", "Setting", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { decode.FlagSetTime = true; usb_BPA.SpecifiedDevice.SendData(BPACommand.WriteTimeDate); Thread.Sleep(500); } } else { if (decode.PcNowTime.ToShortTimeString() != decode.ThisDateTime.ToShortTimeString()) { if (MessageBox.Show("Do you want to syn the time with PC?", "Setting", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { decode.FlagSetTime = true; usb_BPA.SpecifiedDevice.SendData(BPACommand.WriteTimeDate); Thread.Sleep(500); } } } } else if (decode.FlagCheckVer && FlagCheckVerCount == 0) { FlagCheckVerCount++; patient.patientData[(int)PatientDataIndex.arr] = decode.VersionArr; } else if (decode.FlagReadUserNumber && FlagReadUserNumberCount == 0 ) { FlagReadUserNumberCount++; decode.FlagReadUserNumber = false; cb_userNumber.Items.Clear(); for (int i = 0; i < decode.TotalUserNumber; i++) { cb_userNumber.Items.Add(i + 1); } // userNumber max -> guest if total user number >1 if (decode.TotalUserNumber > 1) cb_userNumber.Items[cb_userNumber.Items.Count - 1] = "Guest"; cb_userNumber.SelectedIndex = decode.CurrentUserNumber - 1; // 選在目前的 user number if (decode.TotalUserNumber == 1) btn_changeUser.Enabled = false; else btn_changeUser.Enabled = true; // 若現在usernumber 與裝置usernumber不同 -> 確認 ID if (tmrCheckUser.Enabled == true && currentUserNumber != decode.CurrentUserNumber.ToString()) { FlagCheckIDCount = 0; usb_BPA.SpecifiedDevice.SendData(BPACommand.GetID); Thread.Sleep(250); } } else if (decode.FlagCheckID && FlagCheckIDCount ==0) { FlagCheckIDCount++; timer1.Enabled = false; //--- 若dataBase裡有此device的ID bool haveID = false; foreach (var item in IDinDataBase) { if (BPA.ID == item) { haveID = true; MessageBox.Show("Patient " + BPA.ID + " is connected!"); cb_ID.Text = BPA.ID; btn_dataTransfer.Enabled = true; btn_sendID.Enabled = false; break; } } if (haveID == false) { if (MessageBox.Show(String.Format("ID: {0} haven't add to dataBase yet! Do you want to create?", BPA.ID), "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { //UIStatus_ClearAllData(); btn_new.PerformClick(); tab_main.SelectedIndex = 0; tb_ID.ReadOnly = false; tb_ID.Text = BPA.ID; UIStatus_NoPatientProfileInDataBase(); } else { btn_dataTransfer.Enabled = false; btn_sendID.Enabled = true; } } //--- autosetting finish cb_userNumber.Enabled = true; decode.FlagCheckID = false; tmrCheckUser.Enabled = true; // enable checkUserNumber //this.Show(); } else if (decode.FlagSetIDFinish) { BPA.ID = tb_ID.Text; btn_dataTransfer.Enabled = true; decode.FlagSetIDFinish = false; if (cb_ID.Text != BPA.ID) btn_dataTransfer.Enabled = false; else btn_dataTransfer.Enabled = true; // set ID finish tmrCheckUser.Enabled = true; FlagReadUserNumberCount = 0; } } catch (Exception ee) { MessageBox.Show(ee.Message); } } }
void hid_OnDataRecieved(object sender, UsbLibrary.DataRecievedEventArgs args) { byte[] buffer = new byte[args.data.Length - 1]; Array.Copy(args.data, 1, buffer, 0, args.data.Length - 1); this.BeginInvoke((MethodInvoker)delegate { ProcessPacket(buffer); }); }
void usb_OnDataRecieved(object sender, UsbLibrary.DataRecievedEventArgs args) { if (onDataReceived != null) onDataReceived(args.data); }
private void SendChangeUserNumberCommand(UsbLibrary.UsbHidPort usb) { byte[] userNumber = Encoding.ASCII.GetBytes(UserNumberNeedToChange); byte[] DataNeedToSend = new byte[12]; byte[] command = new byte[9]; command[0] = 0x00; command[1] = 0x07; DataNeedToSend[0] = userNumber[0]; for (int i = 1; i < DataNeedToSend.Length; i++) { DataNeedToSend[i] = 0x00; } for (int j = 2; j < 9; j++) { command[j] = DataNeedToSend[j - 2]; } usb.SpecifiedDevice.SendData(command); command[1] = 0x05; command[7] = 0x00; command[8] = 0x00; for (int i = 2, j = 7; i < 7; i++, j++) { command[i] = DataNeedToSend[j]; } usb.SpecifiedDevice.SendData(command); Initiation(); Thread.Sleep(100); MessageBox.Show("User number has changed to: " + UserNumberNeedToChange); }
private void SendSetTimeCommand(UsbLibrary.UsbHidPort usb) { byte[] timeSettingBuf = new byte[14]; //--- fixed string timeSettingBuf[6] = 0x32; timeSettingBuf[7] = 0x30; byte[] command = new byte[9]; command[0] = 0x00; command[1] = 0x07; #region 得到系統時間並轉成byte[] string yearTemp = System.DateTime.Now.Year.ToString(); // ex.2016 char[] yearChar = yearTemp.ToCharArray(); byte year0 = Convert.ToByte(yearChar[2]); // 0x31 byte year1 = Convert.ToByte(yearChar[3]); // 0x36 timeSettingBuf[4] = year0; timeSettingBuf[5] = year1; string monthTemp = String.Format("{0:00}", System.DateTime.Now.Month); char[] monthChar = monthTemp.ToCharArray(); byte month0 = Convert.ToByte(monthChar[0]); byte month1 = Convert.ToByte(monthChar[1]); timeSettingBuf[0] = month0; timeSettingBuf[1] = month1; string dayTemp = String.Format("{0:00}", System.DateTime.Now.Day); char[] dayChar = dayTemp.ToCharArray(); byte day0 = Convert.ToByte(dayChar[0]); byte day1 = Convert.ToByte(dayChar[1]); timeSettingBuf[2] = day0; timeSettingBuf[3] = day1; string hourTemp = String.Format("{0:00}", System.DateTime.Now.Hour); char[] hourChar = hourTemp.ToCharArray(); byte hour0 = Convert.ToByte(hourChar[0]); byte hour1 = Convert.ToByte(hourChar[1]); timeSettingBuf[8] = hour0; timeSettingBuf[9] = hour1; string minTemp = String.Format("{0:00}", System.DateTime.Now.Minute); char[] minChar = minTemp.ToCharArray(); byte min0 = Convert.ToByte(minChar[0]); byte min1 = Convert.ToByte(minChar[1]); timeSettingBuf[10] = min0; timeSettingBuf[11] = min1; string secTemp = String.Format("{0:00}", System.DateTime.Now.Second); char[] secChar = secTemp.ToCharArray(); byte sec0 = Convert.ToByte(secChar[0]); byte sec1 = Convert.ToByte(secChar[1]); timeSettingBuf[12] = sec0; timeSettingBuf[13] = sec1; #endregion // send command for (int i = 0; i < 2; i++) { for (int j = 2; j < 9; j++) { command[j] = timeSettingBuf[i * 7 + j - 2]; } usb.SpecifiedDevice.SendData(command); } Initiation(); Thread.Sleep(100); }
public void DecodingData(byte[] rawDataByteAry,List<string> IDinDataBase,Patient patient,UsbLibrary.UsbHidPort usb) { if (String.Format("{0:X2}",rawDataByteAry[2],16) == "06") { GetByteNeedReceive(rawDataByteAry); // command is27 #region command is27(set date and time to BPA) if (FlagSetTime) { FlagSetTime = false; SendSetTimeCommand(usb); } #endregion #region command is25(change user number) if (FlagChangeUser) { FlagChangeUser = false; SendChangeUserNumberCommand(usb); } #endregion #region command is23 (set ID) if (FlagSendID) { FlagSendID = false; FlagSetIDFinish = true; byte[] DataNeedToSend = new byte[34]; byte[] command = new byte[9]; command[0] = 0x00; command[1] = 0x07; if (FlagClearID) DataNeedToSend = BPACommand.ClearDataAndSetID; else DataNeedToSend = BPACommand.NotClearDataAndSetID; for (int i = 0; i < 4; i++) { for (int j = 2; j < 9; j++) { command[j] = DataNeedToSend[i * 7 + j - 2]; } usb.SpecifiedDevice.SendData(command); } command[1] = 0x06; command[8] = 0x00; for (int i = 2, j = 28; i < 8; i++, j++) { command[i] = DataNeedToSend[j]; } Initiation(); usb.SpecifiedDevice.SendData(command); Thread.Sleep(100); } #endregion } else if (DataStrAry[0] == "06") { GetByteNeedReceive(rawDataByteAry); int dataSize = 0; if (DataStrAry[1] == "30" && DataStrAry[2] == "30") // command22(Read Cycle data from bpa) feature { dataNo = GetDataNumber(); dataSize = dataNo * 32 + 34; goto isData; } #region command is24(ID) if (dataCount == 33) { if (CheckCommand() == "is24") { FlagCheckID = true; Decode_ID(); } } #endregion #region command is28(userNumber) if (dataCount == 9) { if (CheckCommand() == "is28") { FlagReadUserNumber = true; Decode_UserNumber(); } } #endregion #region command is3E(version) if (dataCount == 13) { if (CheckCommand() == "is3E") { FlagCheckVer = true; Decode_Ver(); } } #endregion #region command is26(DataTime) if (dataCount == 87) { PcNowTime = System.DateTime.Now; // 取得PC端的時間 if (CheckCommand() == "is26") { FlagCheckDateTime = true; Decode_DateTime(); } } #endregion #region command is22(Data) isData: if (dataCount == dataSize + 1) { FlagCommandisData = true; Decode_patientData(IDinDataBase, patient); } #endregion } }
private void usb_OnDataRecieved(object sender, UsbLibrary.DataRecievedEventArgs args) { // принятые данные состоят из двух байт, первый из которых всегда равен нулю if (InvokeRequired) { try { Invoke(new DataRecievedEventHandler(usb_OnDataRecieved), new object[] { sender, args }); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } else { //string rec_data = "Data: "; timer1.Enabled = false; timer1.Enabled = true; // сброс таймера timer2.Enabled = false; // остановка таймера для считывания текущего времени //int i = 0; //foreach (byte myData in args.data) //{ //if (i == 0) // continue; // пропустить первый служебный нулевой байт //label79.Text = myData.ToString(); //listBox1.Items.Add(string.Format("Byte #{0}, NumProgOfData #{1}, CountLoops #{2}: {3}", Connection.ByteInReadBlock + 1, Connection.NumProgOfData, Connection.CountLoops, myData)); //listBox1.Items.Add(string.Format("Byte #{0}, NumProgOfData #{1}, CountLoops #{2}: {3}", Connection.ByteInSendBlock + 1, Connection.NumProgOfData, Connection.CountLoops, myData)); switch (Connection.ReadData(args.data, ref DeviceOptions, ref CtrlProgramsOptions)) { case 0: // из функции обработки полученного байта указание ничего не предпринимать //listBox1.Items.Add("Функция GetData вернула 0"); //progressBar1.Value = 0; break; case 1: // перерисовать все данные в окнах //listBox1.Items.Add("Функция GetData вернула 1"); timer1.Enabled = false; // отключить таймер progressBar1.Visible = false; progressBar1.Value = 0; label81.Text = StMessageUSB; UpdateAllFormElements(); SaveDataInRelay(); // сохранить считанные данные tabControl1.Enabled = true; MessageBox.Show(stSettingSuccessRead[LangGlobal], stReceivingData[LangGlobal], MessageBoxButtons.OK, MessageBoxIcon.Asterisk); break; case 2: // продолжать прием label81.Text = "USB: " + stReceivingData[LangGlobal]; progressBar1.Value = Connection.ProgressBarPercent; progressBar1.Visible = true; // послать разрешение на получение новых данных if (Connection.NewTypeDataSend(ModesSend.CONTINUE) == true) MyUsbSendData(); // вызов функции для продолжения передачи разрешенного запроса break; case 3: // продолжать передачу label81.Text = "USB: " + stTransferData[LangGlobal]; //progressBar1.Value = (int)(((float)Connection.NumProgOfData / 8) * 100); // процесс считывания данных progressBar1.Value = Connection.ProgressBarPercent; progressBar1.Visible = true; // послать разрешение на получение новые данных MyUsbSendData(); // вызов функции для передачи новой порции данных break; case 4: // успешная запись настроек timer1.Enabled = false; // отключить таймер progressBar1.Visible = false; progressBar1.Value = 0; label81.Text = StMessageUSB; SaveDataInRelay(); // сохранить записанные данные tabControl1.Enabled = true; MessageBox.Show(stSettingSuccessTransfer[LangGlobal], stTransferData[LangGlobal], MessageBoxButtons.OK, MessageBoxIcon.Asterisk); break; case 5: // продолжить прием данных, инициализация нового запроса приема label81.Text = "USB: " + stReceivingData[LangGlobal]; // послать разрешение на получение новых данных MyUsbSendData(); // вызов функции для посылки подтвеждения label82.Text = Connection.FullBytes.ToString(); break; case 6: // ошибка передачи настроек timer1.Enabled = false; // отключить таймер label81.Text = StMessageUSB; // послать разрешение на получение новых данных tabControl1.Enabled = true; MessageBox.Show(stOverMemory1[LangGlobal] + Connection.EnablePlacesInDevice.ToString() + stOverMemory2[LangGlobal] + Connection.NeededPlaces.ToString() + stOverMemory3[LangGlobal], stSaveSettings[LangGlobal], MessageBoxButtons.OK, MessageBoxIcon.Error); //label82.Text = "Exist:" + Connection.EnablePlacesInDevice.ToString() + " Need:" + Connection.NeededPlaces; break; case 7: // получена версия программы устройства, которую можно считать if (USB_GetSequence == USB_GetSequenceEnum.GET_OPTIONS) { if (CompareVersions(Connection.VersionOfDeviceProgram, Connection.SubVersionOfDeviceProgram) == true) { // версия поддерживается можно продолжать if (Connection.NewTypeDataSend(ModesSend.REQUEST_NUM_EVENTS) == true) MyUsbSendData(); // вызов функции для продолжения передачи разрешенного запроса } else { timer1.Enabled = false; // отключить таймер label81.Text = StMessageUSB; USB_GetSequence = USB_GetSequenceEnum.NO; MessageBox.Show(stVersionDeviceNotSupport_1[LangGlobal] + Connection.VersionOfDeviceProgram.ToString() + '.' + Connection.SubVersionOfDeviceProgram.ToString() + stVersionDeviceNotSupport_2[LangGlobal], stReceivingData[LangGlobal], MessageBoxButtons.OK, MessageBoxIcon.Error); } } else if (USB_GetSequence == USB_GetSequenceEnum.SEND_OPTIONS) { if (CompareVersions(Connection.VersionOfDeviceProgram, Connection.SubVersionOfDeviceProgram) == true) { // версия поддерживается можно продолжать if (Connection.NewTypeDataSend(ModesSend.REQUEST_NUM_PLACES) == true) { // был реализован запрос с соот. номером и дано подтвержающее разрешение timer1.Enabled = true; // запуск выдержки для аварийного сброса связи Connection.DevOpt = DeviceOptions; Connection.ProgsOpt = CtrlProgramsOptions; // сохранение данных в переменные, из которых они будут считываться и передаваться Connection.NeededPlaces = 0; for (int i = 1; i <= 8; i++) { Connection.NeededPlaces += CtrlProgramsOptions[i].ListHolidays.Count + CtrlProgramsOptions[i].ListEventsException.Count + CtrlProgramsOptions[i].ListEventsYear.Count + CtrlProgramsOptions[i].ListEventsMonth.Count + CtrlProgramsOptions[i].ListEventsWeek.Count + CtrlProgramsOptions[i].ListEventsDay.Count; } MyUsbSendData(); // вызов функции для начала передачи данных, которые подготавливаются в объекте класса ConnectionClass } } else { timer1.Enabled = false; // отключить таймер label81.Text = StMessageUSB; USB_GetSequence = USB_GetSequenceEnum.NO; tabControl1.Enabled = true; MessageBox.Show(stVersionDeviceNotSupport_1[LangGlobal] + Connection.VersionOfDeviceProgram.ToString() + '.' + Connection.SubVersionOfDeviceProgram.ToString() + stVersionDeviceNotSupport_2[LangGlobal], stTransferData[LangGlobal], MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { timer1.Enabled = false; // отключить таймер label81.Text = StMessageUSB; MessageBox.Show(stVersionDevice[LangGlobal] + Connection.VersionOfDeviceProgram.ToString() + '.' + Connection.SubVersionOfDeviceProgram.ToString(), stREV302[LangGlobal], MessageBoxButtons.OK, MessageBoxIcon.Information); } break; case 8: // получено текущее время устройства, измеренное напряжение и освещенность timer1.Enabled = false; // отключить таймер label81.Text = StMessageUSB; DeviceTimeMonitor = Connection.DeviceTime; //label60.Text = string.Format("{0}.{1}.{2} {3}.{4}.{5}", Connection.DeviceTime.Day, Connection.DeviceTime.Month, Connection.DeviceTime.Year, Connection.DeviceTime.Hour, Connection.DeviceTime.Minute, Connection.DeviceTime.Second); label60.Text = DeviceTimeMonitor.ToString("dd MMMM yyyy"); label67.Text = DeviceTimeMonitor.ToString("HH:mm:ss"); DeviceTimeMonitorExist = true; label70.Text = Connection.ReadVoltage.ToString(); label73.Text = Connection.ReadBright.ToString(); break; case 9: // новое время было успешно записано в устройство timer1.Enabled = false; // отключить таймер label81.Text = StMessageUSB; MessageBox.Show(stNewTimeSend[LangGlobal], stSetTime[LangGlobal], MessageBoxButtons.OK, MessageBoxIcon.Information); break; case 10: // переданы новые значения напряжения и освещенности для калибирования timer1.Enabled = false; // отключить таймер label81.Text = StMessageUSB; MessageBox.Show(" Калибрование успешно завершено.\nПроконтролируйте точность скорректированных значений.", "Передача данных", MessageBoxButtons.OK, MessageBoxIcon.Information); break; case 11: // переданы новые значения напряжения и освещенности для калибирования timer1.Enabled = false; // отключить таймер label81.Text = StMessageUSB; MessageBox.Show(" Калибровочное значение времени успешно записано в устройство.\nПроконтролируйте точность хода времени.", "Передача данных", MessageBoxButtons.OK, MessageBoxIcon.Information); break; } timer2.Enabled = true; // остановка таймера для считывания текущего времени } }