Beispiel #1
0
        /*              действия пользователя           */

        private void buttonSend_Click(object sender, EventArgs e)               //нажали на кнопку "отправить"
        {
            UART.WriteByteToBufferTX(byte.Parse(textBoxData0tx.Text), 0);       //закидываем в буфер содержимое полей
            UART.WriteByteToBufferTX(byte.Parse(textBoxData1tx.Text), 1);
            UART.WriteByteToBufferTX(byte.Parse(textBoxData2tx.Text), 2);
            UART.WriteByteToBufferTX(byte.Parse(textBoxData3tx.Text), 3);
            UART.WriteByteToBufferTX(byte.Parse(textBoxData4tx.Text), 4);
            UART.WriteByteToBufferTX(byte.Parse(textBoxData5tx.Text), 5);
            UART.WriteByteToBufferTX(byte.Parse(textBoxData6tx.Text), 6);
            labelCRCValue.Text = UART.SendBufferTX().ToString();                //отправляем буфер, выводим CRC
        }
Beispiel #2
0
        public static int SendBufferTX()   //формирует CRC и отправляет 8 байт буфера передачи в UART, возвращает CRC
        {
            int summ = 0;

            for (int i = 0; i < 7; i++)
            {
                summ += UART.bufferTX[i];
            }
            UART.WriteByteToBufferTX((byte)(summ), 7);
            UART.port.Write(bufferTX, 0, 8);
            UART.ClearBufferTX();
            return(summ);
        }
Beispiel #3
0
 private void buttonSyncTime_Click(object sender, EventArgs e)
 {
     UART.WriteByteToBufferTX(11, 0);
     for (int i = 0; i < 3; i++)
     {
         UART.WriteByteToBufferTX(TIME.bufferSysTime[i], i + 1);
     }
     labelCRCValue.Text = UART.SendBufferTX().ToString();                //отправляем буфер, выводим CRC
     UART.WriteByteToBufferTX(13, 0);
     for (int i = 0; i < 4; i++)
     {
         UART.WriteByteToBufferTX(TIME.bufferSysTime[i + 3], i + 1);
     }
     labelCRCValue.Text = UART.SendBufferTX().ToString();                //отправляем буфер, выводим CRC
 }
Beispiel #4
0
        private void buttonWASet_Click(object sender, EventArgs e)
        {
            UART.WriteByteToBufferTX(21, 0);
            byte days = 0;

            for (int i = 0; i < 7; i++)
            {
                days |= (byte)((Convert.ToInt32(checkedListBoxWADays.GetItemChecked(i))) << i);
            }
            UART.WriteByteToBufferTX((byte)(Convert.ToInt32(checkedListBoxWAEnable.GetItemChecked(0))), 1);
            UART.WriteByteToBufferTX(days, 2);
            UART.WriteByteToBufferTX((byte)(Int32.Parse(textBoxWASMinute.Text)), 3);
            UART.WriteByteToBufferTX((byte)(Int32.Parse(textBoxWASHour.Text)), 4);
            UART.WriteByteToBufferTX((byte)(Int32.Parse(textBoxWAEMinute.Text)), 5);
            UART.WriteByteToBufferTX((byte)(Int32.Parse(textBoxWAEHour.Text)), 6);
            labelCRCValue.Text      = UART.SendBufferTX().ToString();           //отправляем буфер, выводим CRC
            Globals.flagUpdateAlarm = true;
        }
Beispiel #5
0
        private void UpdateTimer_Tick(object sender, EventArgs e)   //таймер 100мс
        {
            UART.RecieveMessage();                                  //принимаем пакет из UART
            updateDevText();                                        //отображаем его во вкладке разработчика

            switch (tabControl.SelectedIndex)                       //управление действиями в зависимости от выбранной вкладки
            {
            //ЦВЕТ
            case 0:
                UpdateTimer.Interval = 100;                             //10Гц
                if (Globals.flagFirstStart)                             //при инициализации связи
                {
                    UART.WriteByteToBufferTX((byte)(02), 0);            //запрашиваем текущий цвет1
                    UART.SendBufferTX();
                    UART.WriteByteToBufferTX((byte)(04), 0);            //запрашиваем текущий цвет2
                    UART.SendBufferTX();
                }
                else                                                   //после инициализации связи
                {
                    UART.WriteByteToBufferTX((byte)(01), 0);           //всё время шлем новый цвет
                    UART.WriteByteToBufferTX((byte)(trackBarRed1.Value * 5), 1);
                    UART.WriteByteToBufferTX((byte)(trackBarGreen1.Value * 5), 2);
                    UART.WriteByteToBufferTX((byte)(trackBarBlue1.Value * 5), 3);
                    UART.WriteByteToBufferTX((byte)(trackBarWhite1.Value * 5), 4);
                    UART.WriteByteToBufferTX((byte)(trackBarBlack1.Value * 5), 5);
                    UART.WriteByteToBufferTX((byte)(trackBarSpeed1.Value * 5), 6);
                    UART.SendBufferTX();
                    UART.WriteByteToBufferTX((byte)(03), 0);                                //всё время шлем новый цвет
                    UART.WriteByteToBufferTX((byte)(trackBarRed2.Value * 5), 1);
                    UART.WriteByteToBufferTX((byte)(trackBarGreen2.Value * 5), 2);
                    UART.WriteByteToBufferTX((byte)(trackBarBlue2.Value * 5), 3);
                    UART.WriteByteToBufferTX((byte)(trackBarWhite2.Value * 5), 4);
                    UART.WriteByteToBufferTX((byte)(trackBarBlack2.Value * 5), 5);
                    UART.WriteByteToBufferTX((byte)(trackBarSpeed2.Value * 5), 6);
                    UART.SendBufferTX();
                }
                break;

            //ВРЕМЯ
            case 1:
                UpdateTimer.Interval = 200;                             //50Гц
                //обновляем системное время и выводим во вкладку "время"
                TIME.updateSysTimeBuffer();
                updateSystemTime();

                //запрашиваем время модуля и ответ выводим во вкладку "время"
                Globals.counter_tabTIME++;
                if (Globals.counter_tabTIME > 3)
                {
                    Globals.counter_tabTIME = 0;
                }
                switch (Globals.counter_tabTIME)
                {
                case 0:
                    UART.WriteByteToBufferTX((byte)(12), 0);                //запрашиваем текущее время
                    break;

                case 1:
                    UART.WriteByteToBufferTX((byte)(14), 0);                //дату
                    break;

                case 2:
                    if (Globals.flagUpdateAlarm)
                    {
                        UART.WriteByteToBufferTX((byte)(22), 0);                                         //недельный будильник
                    }
                    break;

                case 3:
                    if (Globals.flagUpdateAlarm)
                    {
                        UART.WriteByteToBufferTX((byte)(24), 0);                                         //однократный будильник
                    }
                    Globals.flagUpdateAlarm = false;
                    break;
                }

                UART.SendBufferTX();
                break;
            }

            switch (UART.GetByteFromBufferRX(0))        //когда приняли пакет, проверяем команду
            {
            case 2:
                if (Globals.flagFirstStart)
                {
                    //Globals.firstTime = false;                  //инициализация происходит в четвертом кейсе
                    updateColourFromUART1();
                }
                break;

            case 4:
                if (Globals.flagFirstStart)
                {
                    Globals.flagFirstStart = false;                      //считаем что инициализация связи прошла успешно
                    updateColourFromUART2();
                }
                break;

            case 12:
                updateModuleTime();
                break;

            case 14:
                updateModuleDate();
                break;

            case 22:
                updateModuleWA();
                break;

            case 24:
                //updateModuleTA();
                break;
            }
        }