Documente Academic
Documente Profesional
Documente Cultură
PROIECT DE SEMESTRU
PLOIESTI 2020
Studiu de documentare şi aplicaţii practice privind
utilizarea funcţiilor condiţionate aferente cutiilor postale
în cadrul executivului RTK
1. Obiectivele lucrării
2. Breviar teoretic
RTK este un sistem multitasking în timp real care creează facilităţi de lucru
pentru sistemul de operare DOS.
RTK este o bibliotecă ce poate fi accesată în aplicaţii programate, oferă un
număr de funcţii care coordonează taskuri, semafoare, cutii poştale, etc., acestea
fiind instrumente puse la dispoziţia programatorului cu ajutorul sistemului de
operare în timp real. Executivul de timp real – RTK, rulează sub MS-DOS şi
creează acestuia facilităţi de lucru pseudo-paralele.
RTK este un sistem multitasking în timp real care creează facilităţi de lucru
pentru sistemul de operare DOS.
Caracteristici RTK:
Ex: Mailbox CP ;
:
:
CP=RTKCreate Mailbox(2,8, ’’CP’’);
MAILBOX
RTKCreate Mailbox
RTKMessages-returnează nr. de mesaje dintr-o cutie poştală.
RTK Put-depunerii intr-o cutie poştală(Blocked Put)
RTKPutCond àbool ={TRUE,FALSE}
RTKPut Timed-Timed Put (TimeOut) àboolßTRUE(funcţie executată
RTK Get-BlockedGet
RTKGetCond à
RTKGetTimed-TimedGet à boolß FALSE(funcţia nu s-a executat).
Exemplu de utilizare a cutiilor poştale:
Ex. are 3 Taskuri
3. Mod de lucru
RTK este un sistem multitasking în timp real care creează facilităţi de lucru
pentru sistemul de operare DOS.
Se va implementa următorul program:
MAILBOX TEST:
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <stdlib.h>
#include “rtkernel.h”
#include “rtkeybrd.h”
#define nr_mes 1
Mailbox Box;
struct date d;
struct time t;
//
afora()
{
get date(&d);
gettime(&t);
gotoxy(55,3);
cprintf(cprintf("%02d-%02d-%4d",d.da_day,d.da_mon,d.da_year”);
cprintf(“02d-%02d-%02d",t.ti_hour,t.ti_min,t.ti_sec”);
}
TASK A()
{
for(;;)
}
afora();
RTKDelay (18);
{{
TASK B()
char i;
for(;;)
}
gotoxy(5,10);
cprintf(“B asteapta la BOX”);
RTKGet (BOX,&i);
RTKDelay(18);
gotoxy(5,10);
cprintf(“|_| Sosit mesaj |_|_| %i|_|_|_|”,i);
RTKDelay(36);
}
{
//main()
}
char c;
RTKernelInit(3);
clrscr();
gotoxy(5,8);
cprintf(“Orice tasta/E-Mesaj;E-Exit”);
RTKeybrdInit();
Box=RTKCreateMailbox(2,nr_mes,”Box”);
RTKCreate Task(Task A,5,1024,”Task A”);
RTKCreateTask(Task B,2,1024,”Task B”);
for(;;)
{
gotoxy(5,9)
cprintf(“Transmis din main mesajul|_|_|_|_|”);
c=RTGetch();
gotoxy(41,9);
cprintf(“%c”,c);
if(c==’E’)exit(0);
RTKPut(Box,&c);
}
//for
//main