You are on page 1of 6

I.

Introduo

i. Especificao textual
Como projeto final da disciplina Programao de Software Embarcado foi proposta a
modelagem virtual do funcionamento bsico de um microondas.
Funcionalidades como luz acesa, forno ligado, botes: cancelar, +1minuto e abrir e
fechar a porta deveriam ser levados em considerao para a interao e
funcionamento do microondas.
Programao realizada em C++, programao orientada a objeto utilizando o pacote
QPC.

ii. Diagramas use case e/ou diagramas de sequencia





iii. Interface com o ambiente externo (hardware)


O hardware do forno de microondas possui os seguintes componentes:
_ Um sensor de porta.
_ Uma luz interna.
_ Um visor com quatro displays de 7 segmentos
_ Um boto + 1 min.
_ Um boto cancel.
_ Um emissor de microondas

A Interface com o hardware esta codificada nos arquivos bsp.C e bsp.h. A interface produz os
seguintes sinais para o sistema:
_ OPEN_SIG - Indica que a porta abriu.
_ CLOSE_SIG - Indica que a porta fechou.
_ PLUS1_SIG - Indica que o boto + 1 min foi pressionado.
_ CANCEL_SIG - Indica que o boto cancel foi pressionado.
Para evitar erros em tempo de execuo, o envio destes sinais foi inibido no arquivo bsp.c.

A interface externa possui as seguintes primitivas para acionamento do hardware:
_ void BSP_forno(int i)
_ i == 0 => desliga microondas
_ i == 0 => liga microondas
_ void BSP_luz(int i)
_ i == 0 => desliga luz interna
_ i == 0 => liga luz interna
_ void BSP_digito(int seg, int num)
_ Mostra o nmero num (0 a 9) no display seg (0 a 3). O display 0 o menos signi_cativo e o 3
o mais signi_cativo.


II. Projeto do Sistema

i. Arquitetura

dpp_gui.rc - Arquivo padro da API Windows. Descreva a janela principal e seus controles
(imagem do microondas, botes, indicador de micro-ondas e display numrico). Foi criado com
auxlio de um editor prprio.
_ dpp_gui.o - o resultado da compilao do arquivo dpp_gui.rc pelo compilador windres do
MinGW. usado pelo linker para criar o arquivo executvel.
_ resource.h - Declara os cdigos numricos que identficam os recursos definidos em
dpp_gui.rc.
_ bsp.h - Cabealho da interface com o meio ambiente (Janela Windows, no caso)
_ bsp.c - Cdigo fonte de interface com o meio ambiente.
_ dpp.h - Declarao dos sinais, da classe TableEvt
_ main.c - Cdigo de definio e inicializao do ambiente QPC.
_ micro.c - Cdigo da mquina de estados do microondas.

Para cada estado deve-se criar uma funo do tipo QState. Ela recebe como parmetros um
ponteiro para o objeto, ativo ou no ativo, e um ponteiro para o sinal (QEvt), que deve ser
tratado pelo estado. A funo deve reconhecer o tipo de sinal (e->sig) e realizar a transio
correspondente. O valor de retorno da funo deve ser definido usando uma das seguintes
macros:
_ Q_HANDLED - O sinal foi consumido e no houve transio de estado.
_ Q_UNHANDLED - O sinal foi processado mas no foi consumido. Possivelmente endereado
a outro processo.
_ Q_TRAN - O sinal foi consumido e houve transio de estado.
_ Q_SUPER - O sinal no foi consumido. Deve-se chamar a mquina de estados acima na
hierarquia.
Eventualmente, uma transio pode produzir um sinal ou uma temporizao. Para isso deve-se
utilizar uma das seguintes macros:
_ QACTIVE_POST - Produz um sinal enviado diretamente para um determinado processo.
_ QF_PUBLISH - Produz um sinal utilizando o mecanismo de publicao. Permite enviar um
sinal para vrios processos que tenham subscrito o sinal.
_ QHsm_dispatch - Executa uma transio de um objeto de forma sncrona.
_ QTimeEvt_postIn - Programa um temporizador.


ii. Digramas de estado



iii. Descrio dos arquivos fonte
Condio inicial:
static QState Forno_initial (Forno * const me, QEvt const * const e);
forno com a porta fechada/desligado:
static QState Door_Closed_OFF (Forno * const me, QEvt const * const e);
forno com a porta aberta/desligado:
static QState Door_Open_OFF (Forno * const me, QEvt const * const e);
forno com a porta fechada e ligado:
static QState Door_Closed_ON (Forno * const me, QEvt const * const e);

Contagem de tempo (display):
void escreve_display(uint16_t seconds)
{
uint16_t tempo;

tempo = seconds;
BSP_digito(3, tempo/600);

tempo = tempo % 600;
BSP_digito(2, tempo/60);

tempo = tempo % 60;
BSP_digito(1, tempo/10);

tempo = tempo % 10;
BSP_digito(0, tempo);
}



III. Testes

i. Diagramas de sequncia dos casos de teste





ii. Resultado dos testes

Inicio:



Com a porta fechada, adiciona os minutos, luz ascende, liga o forno:

You might also like