Board.KolibriOS.org

Official KolibriOS board
It is currently Wed Jun 19, 2019 6:09 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 5 posts ] 
Author Message
PostPosted: Fri Mar 18, 2011 9:40 am 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Очень часто мне нужно следить за временем, запускать программы по расписанию, в общем, нужно что-то вроде будильника.
Чем больше я времени провожу в Колибри, тем больше мне не хватает всяких разных мелочей, которыми я пользуюсь в своем мятном линуксе.
Потому написал маленькую программку, которая выполняет программы в заданное время.
Пока что программа почти ничего не умеет - ни повторяющихся событий, ни будильников по пятницам в 7 утра. Надеюсь, я добавлю это в будущем. Кроме того, программка очень прожорлива по отношению к памяти (это всё потому, что написана с использованием menuetlibc, но в скором времени я переведу ее на newlib).

Итак, встречайте - job. Запускается без параметров, окна не создает, на панели не отображается, только в CPU. Наличие @notify в /rd/1/ очень желательно, иначе вы не получите сверхважных сообщений "File not found" или "Job is done". Для работы программы необходим файл jobs.dat в одной папке с программой, его синтаксис такой:
Code:
09:41
/rd/1/calendar


Первая строка - время (пять байт, если часов менее 12, то первый 0 обязателен).
Вторая строка - запускаемая по расписанию программа.
Enter после второй строки обязателен (потому что запуск с параметрами пока что не поддерживается, какие-то косяки с этим, но обязательно будет).

Пока что всё. В перспективе - поддержка ini-файлов, множества задач и всё такое. :mrgreen:


Attachments:
job.7z [13.72 KiB]
Downloaded 173 times
Top
   
PostPosted: Sun Mar 20, 2011 11:48 am 
Offline
User avatar

Joined: Tue Jan 24, 2006 8:50 am
Posts: 249
Хорошая работа, молодец.


Top
   
PostPosted: Fri Mar 25, 2011 1:54 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Sorcerer
Лучше сразу писать на ассемблере.
13Кб это по-моему слишком для такой программы.
Вот посмотри например.


Attachments:
JOB.7z [9.84 KiB]
Downloaded 204 times
Top
   
PostPosted: Sun Mar 27, 2011 8:34 am 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Огого! Круто как! Я так не умею :(
Если бы знал ассемблер - то, наверное, на нем и писал бы...
Вопрос по коду: JOB.done сделан для того, чтобы одна и та же программа несколько раз не запустилась в течении одной минуты?
Что будет, если более 255 заданий будет в файле? Просто лишние не будут разбираться?


Top
   
PostPosted: Mon Mar 28, 2011 3:56 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Sorcerer wrote:
Вопрос по коду: JOB.done сделан для того, чтобы одна и та же программа несколько раз не запустилась в течении одной минуты?

Да.

Sorcerer wrote:
Что будет, если более 255 заданий будет в файле? Просто лишние не будут разбираться?

Ты нашёл логическую ошибку. :) Если в ini файле JobsNum будет больше 255, то в результате
JobsNum=JobsNum mod 256
Нужно поставить ограничитель.
Code:
   ; Get jobs number
   invoke   ini_get_int, ini_path, aMain, aJobsNum, 0

   cmp eax, 256
   jl       @f
   mov  eax, 255
@@:


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 5 posts ] 

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited