1. Загружаем данные из файла и анализируем на наличие ошибок
2. Данные помещаем в переменные (точнее в динамический список) и запускаем один общий таймер, по которому будет вызыватся процедура каждую секунду.
3. При каждом вызове таймера, просматриваем все данные в динамическом списке и проверяем не пришло ли время передать данные устройству если пришло, то передаём и удаляем данные о выдержке из динамического списка.
Таким образом можно получить "паралельный" отсчёт всех задержек используя только один таймер. При этом зарание количество формируемых задержек неизвестно.
Похоже что там использованы обычные рисунки.вот скрин буржуйской программы меня интересуют таймеры в левой чати картинки. ак добится нечто похожего это
Что-то типа этого, только здеть отображается текущее время
Код: Выделить всё
LoadFont(0,"Arial",28, #PB_Font_Bold) ; Загружаем жирный шрифт "Arial" с размером 28
Procedure DrawImageText() ; Эта процедура вызывается по таймеру каждую секунду
If StartDrawing(ImageOutput(1)) ; Приступаем к рисованию по рисунку с идентификатором 1
DrawingFont(FontID(0)) ; Используемый шрифт
DrawText(20, 8, FormatDate("%hh:%ii:%ss",Date()) , RGB(120, 199, 151), 0) ; Рисуем текущее время
StopDrawing() ; Завершаем рисование
SetGadgetState(1,ImageID(1)) ; Обновляем рисунок в ImageGadget
EndIf
EndProcedure
If OpenWindow(0,200,200,220,80,"Заголовок",#PB_Window_MinimizeGadget)
If CreateGadgetList(WindowID(0))
CreateImage(1,200,60) ; Создаём рисунок с размерами 200х60
ImageGadget(1,10,10,200,60,ImageID(1))
SetTimer_(WindowID(0), 1, 1000, @DrawImageText() ) ; Запускает таймер, по которому будет каждую секунду вызыватся процедура DrawImageText()
Repeat
Event=WaitWindowEvent()
Until Event=#PB_Event_CloseWindow ; Прерываем цикл при закрытии окна
KillTimer_(WindowID(0), 1) ; Уничтожаем таймер
EndIf
EndIf
End ; Завершаем работу программы