Пример #1
0
        // инициализация пересылки настроек из устройства в программу (вызов из меню)
        private void настройкиToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // функция события с попыткой дать запрос на считывание данных настроек с устройства по USB
            //if (Connection.NewTypeDataSend(ModesSend.REQUEST_OPTIONS) == true)
            //if (Connection.NewTypeDataSend(ModesSend.REQUEST_NUM_EVENTS) == true)
            if (Connection.NewTypeDataSend(ModesSend.REQUEST_NUM_VERSION) == true)
            {
                // был реализован запрос с соот. номером и дано подтвержающее разрешение
                // запуск таймера для корректного выхода в случае обрыва передачи
                tabControl1.Enabled = false;

                timer1.Enabled = true;
                USB_GetSequence = USB_GetSequenceEnum.GET_OPTIONS;        // тип последовательности запросов
                USB_GetSeqStep = 1;                      // шаг запроса
                MyUsbSendData();      // вызов функции для начала передачи данных, которые подготавливаются в объекте класса ConnectionClass
            }
        }
Пример #2
0
        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;     // остановка таймера для считывания текущего времени
            }
        }
Пример #3
0
 // вызов отобразить версию программы зашитой в устройство
 private void VersionProgToolStripMenuItem_Click(object sender, EventArgs e)
 {
     USB_GetSequence = USB_GetSequenceEnum.NO;
     if (Connection.NewTypeDataSend(ModesSend.REQUEST_NUM_VERSION) == true)
     {
         timer1.Enabled = true;
         MyUsbSendData();      // вызов функции для продолжения передачи разрешенного запроса
     }
 }
Пример #4
0
        private void SendToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // получен запрос на пересылку всех настроек в устройство
            //if (Connection.NewTypeDataSend(ModesSend.PREP_GET_OPTIONS) == 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
                //}

            // здесь необходимо переставить фокус на другой элемент в окне, чтобы учесть последние данные
            treeView1.Focus();

            if (Connection.NewTypeDataSend(ModesSend.REQUEST_NUM_VERSION) == true)
            {
                // был реализован запрос с соот. номером и дано подтвержающее разрешение
                // запуск таймера для корректного выхода в случае обрыва передачи
                tabControl1.Enabled = false;

                timer1.Enabled = true;
                USB_GetSequence = USB_GetSequenceEnum.SEND_OPTIONS;        // тип последовательности запросов
                USB_GetSeqStep = 1;                      // шаг запроса
                MyUsbSendData();      // вызов функции для начала передачи данных, которые подготавливаются в объекте класса ConnectionClass
            }
        }