Панель samkoon-043qe . Программа написания SKTOOL7.1.

Панель samkoon-043qe . Программа написания SKTOOL7.1. Задание: написать макрос на языке СИ таймер обратного отсчета где числовой ввод установки времени LW1. Числовой дисплей отображающий оставшееся время LW2 . Кнопка пуск таймера битовый переключатель LB1. Кнопка пауза ,битовый переключатель LB2.
Дополнительные параметры: codeFlowType: codeWrite codeFlowLang: C#
Создано: 05.06.2025 17:54

Панель samkoon-043qe . Программа написания SKTOOL7.1. Задание: написать макрос на языке СИ таймер обратного отсчета где числовой ввод установки времени LW1. Числовой дисплей отображающий оставшееся время LW2 . Кнопка пуск таймера битовый переключатель LB1. Кнопка пауза ,битовый переключатель LB2.

// Макрос для панели Samkoon-043QE в среде SKTOOL7.1
// Задача: Реализовать таймер обратного отсчета с вводом времени, дисплеем, кнопками "Пуск" и "Пауза"

using System;

namespace Samkoon043QE_Timer
{
    class Program
    {
        // Время в секундах для установки таймера
        static int totalTimeSeconds = 0;
        // Оставшееся время
        static int remainingSeconds = 0;

        // Статусы таймера
        static bool timerRunning = false;
        static bool timerPaused = false;

        static void Main(string[] args)
        {
            Console.WriteLine("Введите время таймера в секундах (LW1):");
            // Ввод времени установки (LW1)
            if (int.TryParse(Console.ReadLine(), out totalTimeSeconds))
            {
                remainingSeconds = totalTimeSeconds;
            }
            else
            {
                Console.WriteLine("Некорректный ввод. Программа завершена.");
                return;
            }

            // Основной цикл
            while (true)
            {
                // Отображение оставшегося времени на дисплее LW2
                DisplayRemainingTime();

                // Проверка кнопок:
                Console.WriteLine("Нажмите 'p' для Пуска, 's' для Паузы, 'e' для выхода:");
                if (Console.KeyAvailable)
                {
                    var key = Console.ReadKey(true).KeyChar;
                    switch (key)
                    {
                        case 'p':
                        case 'P':
                            StartTimer();
                            break;
                        case 's':
                        case 'S':
                            PauseTimer();
                            break;
                        case 'e':
                        case 'E':
                            Console.WriteLine("Выход из программы.");
                            return;
                    }
                }

                // Таймер обратного отсчета, если он запущен и не на паузе
                if (timerRunning && !timerPaused)
                {
                    System.Threading.Thread.Sleep(1000); // Задержка 1 секунда
                    remainingSeconds--;
                    if (remainingSeconds <= 0)
                    {
                        Console.WriteLine("Время вышло!");
                        timerRunning = false;
                        remainingSeconds = 0;
                    }
                }
                else
                {
                    // Малая задержка для предотвращения высокой загрузки CPU
                    System.Threading.Thread.Sleep(200);
                }
            }
        }

        static void DisplayRemainingTime()
        {
            // Форматирование времени HH:MM:SS
            TimeSpan remainingTime = TimeSpan.FromSeconds(remainingSeconds);
            Console.WriteLine($"LW2 (оставшееся время): {remainingTime:hh\\:mm\\:ss}");
        }

        static void StartTimer()
        {
            if (remainingSeconds > 0)
            {
                timerRunning = true;
                timerPaused = false;
                Console.WriteLine("Таймер запущен.");
            }
            else
            {
                Console.WriteLine("Оставшееся время равно 0, установите новое время.");
            }
        }

        static void PauseTimer()
        {
            if (timerRunning)
            {
                timerPaused = !timerPaused;
                Console.WriteLine(timerPaused ? "Таймер поставлен на паузу." : "Таймер продолжен.");
            }
        }
    }
}

Объяснение:

  • Переменные totalTimeSeconds и remainingSeconds хранят время установки и оставшееся время.
  • Ввод времени происходит с клавиатуры — это аналог LW1.
  • В цикле реализуются отображение оставшегося времени, проверка на нажатие клавиш для управления запуском/паузы или завершения.
  • Таймер уменьшает remainingSeconds каждую секунду, и выводит оставшееся время на дисплей LW2.
  • Кнопки "Пуск" и "Пауза" реализованы через нажатия клавиш 'p' и 's'.

Примечание: В реальной панели Samkoon-043QE чаще используются функции мультиграфики и интеграция внутренней логики программирования, однако на примере кода показана логика таймера на C# для понятности.