Ceasul Sistemului Windows

Laborator
8/10 (1 vot)
Conține 1 fișier: doc
Pagini : 11 în total
Cuvinte : 3099
Mărime: 33.88KB (arhivat)
Puncte necesare: 0
Profesor îndrumător / Prezentat Profesorului: Besliu Victor
Exeplu de realizare a interceptarii intreruperilor de sistem prin afisarea orei intr-o fereastra. exemplul facut in C++

Extras din laborator

1.Scopul lucrarii: De studiat metodele si principiile de lucru cu timer-ul.

2.Sarcina lucrarii: De scris un program, care realizeaza urmatoarele.

- Un ceas digital (ora:min:sec), utilizind timerul pentru reinoirea la fiecare secunda.

- Un ceas analogic( de desena ciferblatul si arcele, utilizind primitivele GDI ), utilizind timer-ul pentru reinoirea la

fiecare secunda.

3. Intrebari de control:

3.1. Enumerati principalele intrebiuntari ale ceasului de sistem.

3.2. Este posibila activarea simultana a citorva ceasuri ? Daca da, atunci cite ceasuri pot fi activate simultan in

sistemul windows?

3.3. Care este destinatia intreruperii 08h?

3.4. Din ce cauza intreruperea de ceas este o intrerupere asinctona?

3.5. Care este instructiunea de alocare a ceasului? Descrieti parametrii.

4. Raspunsuri la intrebari:

4.1. In primul rind, ceasul se utilizeaza pentru evidenta timpului. Ceasul de sistem se utilizeaza pentru pastrarea

unui raport referitor la starea resurselor sistemului windows, functioneaza pentru postalarma. Asigura facilitatea

multitasking, in acest context este important faptul ca programele inapoiaza cit de curind posibil, daca un program

trebuie sa faca multe prelucrari, el poate imparti aceste proceduri in unitati mai mici si le poate prelucra pe fiecare la

primirea mesajelor WM_TIMER.De asemenea ceasul de sistem implimenteaza caracteristica de autosalvare.

4.2. Da, activarea simultana a mai multor ceasuri este posibila. Pentru a activa un ceas se apeleaza functia

SetTimer( HWND, UINT_PTR, UINT, TIMERPROC ); unde al doilea parametru identifica ceasul, precul

este de tipul UINT_PTR care este intre limitele de la 0 la 231-1, respectiv numarul de ceasuri care se poate activat,

pentru compilatorul Microsoft Visual Studio 2005.

4.3. Intreruperea 08h sau “clock tick timer tick”in este destinata pentru actualizarea valorii

corespunzatoare a timpului la fiecare 54 925ms sau aproximativ 18.2ori pe secunda. MS-Dos utilizeaza aceste

valori pentru a calcula timpul curent. Iar aplicatiile non-Windows prin interceptarea intreruperii 08h formeaza

intreruperea de ceas.

4.4. Deoarece se produce aleator in raport cu programul pe care il intrerupe, ca si intreruperile efectuate de mouse sau

tastatura. Dar mesajele WM_TIMER nu sint asincrone deoarece ele se plaseaza in coada de mesaje.

4.5. Functia de alocare a unui ceas este SetTimer( HWND hwnd, UINT_PTR id, UINT ms, TIMERPROC lpfn );

Unde: hwnd- prin acest parametru fuctia afla carei ferestre sa ii aloce ceasul.

id- numarul de identificare in cadrul ferestrei, destinatia pentru a aloca mai multe timere.

ms- timpul in milisecunde, peste care fereastra va primi mesaje WM_TIMER.

lpfn- long pointer to timer function, are destinatia de actualiza ferestre derivate a ferestrei de baza.

5.Listingul programului (efectuat in Visual Studio 2005) :

#include "stdafx.h"

#include "Timer.h"

#include <list>

#include <time.h>

#include <math.h>

#define MAX 100

#define TIMER_SEC 1

#define SECUNDE 1000

#define MoveTo( hdc, x, y ) MoveToEx( hdc, x, y, NULL );

using namespace std;

TCHAR ClassName[MAX]; TCHAR ClassTitle[MAX];

void LoadTCHAR( const char *, TCHAR *);

//------------------------- Structura Rect pentru linii -----------------------

struct MyRECT

{ long _left; long _top;

long _right;long _bottom;

int _center_x; int _center_y;

MyRECT()

:_left(0), _right(0),

_top(0), _bottom(0),

_center_x(0), _center_y(0){};

MyRECT( long left, long top, long right, long bottom )

:_left(left), _right(right),

_top(top), _bottom(bottom),

_center_x(left+(right-left)/2),

_center_y( top+(bottom-top)/2){};

void set_rect( long left, long top, long right, long bottom )

{ _bottom = bottom; _left = left ;

_top = top ; _right = right ;

_center_x=(left+(right-left)/2);

_center_y=(top+(bottom-top)/2);}

virtual ~MyRECT(){}; };

//------------------------- Classa pentru desenarea liniilor-------------------

class LINE: public MyRECT

{ public:LINE(): MyRECT( 0, 0, 0, 0 ){ };

LINE( long left, long top, long right, long bottom )

: MyRECT( left, top, right, bottom ){};

void show_figure( const HDC &hdc )const

{ MoveTo( hdc, _left, _top );

LineTo( hdc, _right, _bottom );}

void set_line( long left, long top, long right, long bottom )

{ set_rect( left, top, right, bottom );}

};

Preview document

Ceasul Sistemului Windows - Pagina 1
Ceasul Sistemului Windows - Pagina 2
Ceasul Sistemului Windows - Pagina 3
Ceasul Sistemului Windows - Pagina 4
Ceasul Sistemului Windows - Pagina 5
Ceasul Sistemului Windows - Pagina 6
Ceasul Sistemului Windows - Pagina 7
Ceasul Sistemului Windows - Pagina 8

Conținut arhivă zip

  • Ceasul Sistemului Windows.doc

Alții au mai descărcat și

C++

Un prim exemplu de program C++: #include <iostream.h> void main { int a; cout << "Dati un numar\n"; cin >> a; cout << "Ati tastat numarul "...

Probleme C++ Rezolvate

Problema 1: cmmdc(a, b) #include<stdio.h> #include<conio.h> //algoritmul lui Euclid //cel mai mare divizor comun pentru doua numere strict...

Limbajul C++ fundamente - aplicații

PROBLEMA 1 Sa se verifice daca un numar intreg preluat de la terminal este prim. #include<iostream.h> #include<math.h> void main () { int n,...

Laboratoare C++ (SDA)

1.1. Crearea şi afişarea unei liste Exerciţiul 1. Să se scrie programul pentru crearea unei liste simplu înlănţuite cu preluarea datelor de la...

Programe în C++

1. /* sa se scrie un program care cere introducerea unei cifre de la tastatura si afiseaza ziua corespunzatoare cifrei introduse, folosindu-se...

C++

/* Sa se scrie un program care citeste 2 numere intregi de la tastatura si testeaza daca suma celor doua numere este egala cu cea introdusa de la...

Curs 1 - PHP

1. INTRODUCERE - Ce este PHP ? PHP este abrevierea de la PHP – Hypertext Preprocessor (similar cu GNU ce reprezinta abrevierea de la GNU’s Not...

Curs 2 - PHP

Variabila reprezinta un identificator la o locatie de memorie si se foloseste pentru stocarea, prelucrarea si stergerea datelor. Variabilele in...

Te-ar putea interesa și

Sistem Pentru Managementul Centralizat al Credențialelor Utilizatorilor

1. INTRODUCERE Organizaţiile depind de sistemele de identificare în fiecare zi pentru a-şi desfăşura cu succes activitatea. Pe măsură ce...

Construcția, întreținerea și instalarea memoriei RAM

Cap. 1 MEMORIA 1.1 Ce este memoria? Memoria este locul de stocare a tuturor octetilor de care are nevoie microprocesorul pentru a functiona. Ea...

Rețele, utilitare, arhitectură

Elementele de arhitectura a calculatoarelor personale (PC) Ce este un PC ? Calculatorul este un echipament electronic ce permite prelucrarea...

Arhitectura calculatoarelor - configurația hardware a unui PC compatibil IBM

CAPITOLUL I CONFIGURATIA HARDWARE A UNUI P.C. COMPATIBIL I.B.M. Configuratia unui PC compatibil IBM Introducere Au trecut mai bine de doua...

Computer Compatibil IBM

CAPITOLUL I CONFIGURAŢIA HARDWARE A UNUI P.C. COMPATIBIL I.B.M. Introducere Au trecut bine de decenii de când IBM, prin cel bun inspirat studiu...

Cercetare de Marketing - SC TIME-X SRL

PARTEA I Romanii sunt un popor pentru care traditia este foarte importanta, fiind reticenti la nou. Din acest motiv pentru a lansa un nou produs,...

Istoric Windows

1 Interface Manager Windows nu a fost de la inceput un sistem de operare, ci o interfata grafica pentru sistemul de operare MS-DOS (un sistem de...

Sisteme de Operare Microsoft

1. Organizarea logică a datelor 1.1. Memoria externă Stocarea datelor este operaţia de păstrare (memorare) a datelor şi a progra¬melor pe...

Ai nevoie de altceva?