• Nenhum resultado encontrado

ÁREA DE CONCENTRAÇÃO EM SISTEMAS E CONTROLE - PG-EEC/S

N/A
N/A
Protected

Academic year: 2021

Share "ÁREA DE CONCENTRAÇÃO EM SISTEMAS E CONTROLE - PG-EEC/S"

Copied!
5
0
0

Texto

(1)

INSTITUTO TECNOLÓGICO DE AERONÁUTICA

CURSO DE PÓS-GRADUAÇÃO EM ENGENHARIA ELETRÔNICA E COMPUTAÇÃO

DIVISÃO DE ENGENHARIA ELETRÔNICA - IEE

Á

REA DE

C

ONCENTRAÇÃO EM

S

ISTEMAS E

C

ONTROLE

- PG-EEC/S

EA-254/2007 – Microcontroladores e Sistemas Embarcados

Aula 12 - Série de Exercícios IX

Programação de Sistemas em Tempo Real usando eRTOS

Uso do Java

(Programas 13)

Prof.: Wagner Chiepa Cunha

Prof.: Cairo Lúcio Nascimento Júnior

Alunos: José Raimundo dos Santos Fonseca Filho

Tarefa 1:

Estude e entenda o programa eRTOS\projects\java\javaserv.c. Estude os arquivos

auxiliares em eRTOS\projects\java\web. Compile e execute o programa javaserv.c.

Tarefa 2:

Escreva um relatório explicando o funcionamento do programa.

Consulte o manual do eRTOS, pág. 17.

(2)

Programa 12

A) Finalidade.

O programa avaliado é gera números aleatoriamente, a cada vez que uma solicitação

de página ao servidor http é efetuada. Usando SSI e um um formulário com o campo relativo

ao número gerado (

##RandValue##

), o programa permite que uma classe java use estas

informações para mostrar colunas de diferentes cores e tamanhos proporcionais ao valor

aleatório gerado.

B) Estrutura do programa.

A função principal (main) cria cinco threads que serão responsáveis pelo atendimento

às solicitações http, todas associadas ao procedimento user_proc.

user_proc tenta abrir o arquivo (formulário) solicitado na barra de endereços do

browser. De acordo com o nome, caso exista, o procedimento abre o arquivo e o imprime no

browser. Caso seja encontrado algum campo a ser calculado, user_proc transfere a tarefa a

um dos procedimentos associados na lista de ssi's armazenada em

static ssi_type ssi_list[].

Neste

programa, apenas uma associação foi bastante

{ "RandValue", RandValue }

.

Quando o campo ##RandValue## é encontrado, o procedimento RandValue é

invocado, e gerando um valor aleatório a ser escrito no browser.

Do lado do “cliente”, uma applet java trata as informações recebidas tal que seja

exibidas cinco colunas, como anteriormente descrito.

A applet java é para o HTML uma TAG customizada, cuja execução é garantida pela

existência de uma associação no browser à máquina virtual java (JVM) instalada no PC do

usuário. A JVM é o “sistema operacional” em que as classes java, recebidas pelo browser, são

executadas. No caso deste programa, a classe chart, disponível no arquivo chart.cla, é que

garante a execução da applet usada no formulário html.

C) Resultados.

Ao ser carregada, a página mostra as colunas acima mencionadas. Como a classe chart

gera um valor aleatório, as colunas mostradas aparecerão com tamanhos variados, a cada vez

que a applet for executada (vide figura abaixo).

(3)

Figura – página usando applet chart

Listagem do módulo cliente do programa 13.

/*

* javaserv.c web server with Server Side Includes to generate * dynamic content, and a Java client side

* chart program to display the results * See the files in .\web

* */ #include <stdlib.h> #include <rtos.h> #include <net.h> #include <stdio.h> #include <ctype.h> #include <string.h> #include <time.h> #include <httpd.h> #include <mem.h>

void RandValue( tcp_Socket *s, stringlist *unused ) {

char buffer[64];

sprintf( buffer, "%lu", (rand() * 25L) / RAND_MAX ); sock_write( s, buffer, strlen( buffer ) );

(4)

static ssi_type ssi_list[] = { { "RandValue", RandValue }, { NULL, NULL }

};

/*********************************************************************** * - the web server calls this proc for each web request * * - it is called in the context of *one* of the HTTPD threads, * * though which is not known or important *

* - multiple threads may be in the same proc at the same time * ***********************************************************************/ void user_proc( tcp_Socket *s, char *cmd, char *file, char *ext, stringlist *cookies )

{

/* prepare output */

if ( !stricmp( file, "/" )) {

sock_puts( s, "Content-Type: text/html");

http_shtml( s, "web", "index","sht", ssi_list, cookies ); } else if ( !stricmp( ext, "sht" )) {

sock_puts( s, "Content-Type: text/html"); http_shtml( s, "web", file, ext, ssi_list, cookies ); } else {

sock_puts( s, "Content-Type: application/octet-stream\r\n"); http_dump( s, "web", file, ext );

} } main() { int i; randomize(); kdebug = 1; rt_init(100);

sock_init(); /* initialize network */ cputs("starting...\r\n");

#define MAXHTTPD 5

for ( i = 0 ; i < MAXHTTPD; ++i )

rt_newthread( httpdthread, (DWORD)&user_proc, 4096, 0, "httpd worker" ); do { /* nothing */ rt_yield(); } while ( 1 ); } Formulário usado: <html> <head><title>Bar Chart</title> </head> <body>

<h1>Java Based Bar Charts</h1> <hr>

<center>

<applet code="Chart.class" width=251 height=125> <param name=title value="Random Values">

(5)

<param name=columns value="5">

<param name=orientation value="horizontal"> <param name=scale value="5">

<param name=c1_label value="Project A"> <param name=c1 value="##RandValue##"> <param name=c1_color value="red"> <param name=c1_style value="solid"> <param name=c2_label value="Project B"> <param name=c2 value="##RandValue##"> <param name=c2_color value="green"> <param name=c2_style value="solid"> <param name=c3_label value="Project C"> <param name=c3 value="##RandValue##"> <param name=c3_color value="blue"> <param name=c3_style value="solid"> <param name=c4_label value="Project D"> <param name=c4 value="##RandValue##"> <param name=c4_color value="yellow"> <param name=c4_style value="solid"> <param name=c5_label value="Project E"> <param name=c5 value="##RandValue##"> <param name=c5_color value="cyan"> <param name=c5_style value="solid"> </applet>

</center> <hr>

<p>Java Author: Sami Shaio of Sun Microsystems</p>

<p>This example program uses a web page with server-side-includes to generate random numbers. It also includes a Java client program which takes those numbers and graphs them.</P>

</body> </html>

Referências

Documentos relacionados

Isso, no que se refere ao trabalho na política de assistência, ganha maior relevância dada as questões relativas à sua configuração histórica, a saber: geralmente vinculada aos

Desse modo, ao observar a história dos deslocamentos dos povos indígenas na região, como por exemplo no caso palikur tal como observado por López (2011), temos que sua

Mathes and Nahai 20 con- ducted a detailed study of the vascular anatomy of the muscles, where the blood configuration model of the muscle determines how safe it is to

dos mercados em que investe, são: (a) o FUNDO não estar apto a efetuar, dentro do prazo estabelecido no Regulamento e na regulamentação em vigor, pagamentos

Relação entre poluição do ar e internações por doenças isquêmicas do coração, em adultos, na cidade de São Paulo, estratificado por sexo, explorando estruturas

Branco Amarelo Ouro Vermelho Fogo Azul Turquesa Verde Bandeira Preto 22...

Os traficantes exploram justamente esse impulso, ajudados pelo crescimento econômico dos países, que fez surgir mercados de trabalho até então inexistentes e muitas vezes

Segundo Luz (1995) problemas como a comunicação inadequada, conflitos interpessoais, política ineficaz de gestão, normas rigorosas e inflexíveis, precárias