Controle Programado de Dispositivos via Internet com

Propaganda
UNICENP – CENTRO UNIVERSITÁRIO POSITIVO
NÚCLEO DE CIÊNCIAS EXATAS E DE TECNOLOGIAS
CURSO DE ENGENHARIA DA COMPUTAÇÃO
PROJETO FINAL
CONTROLE PROGRAMADO DE DISPOSITIVOS VIA INTERNET
COM COMUNICAÇÃO LOCAL VIA REDE ELÉTRICA
Autor: Joarez Baumeier
Prof. Orientador: Laerte Davi Cleto
Curitiba
2003
1
SUMÁRIO
LISTA DE FIGURAS .......................................................................................................iii
LISTA DE ABREVIATURAS .......................................................................................... iv
1
INTRODUÇÃO ...........................................................................................................5
2
ESPECIFICAÇÃO.......................................................................................................7
2.1
DESCRIÇÃO ........................................................................................................7
2.2
ESTUDO TEÓRICO .............................................................................................8
2.2.1
ASP – Active Server Pages..............................................................................9
2.2.2
SGBD – Sistema Gerenciador de Banco de Dados ..........................................9
2.2.3
Linguagem C................................................................................................. 10
2.2.4
Filtro Passa Alta ............................................................................................ 10
2.2.5
CI 555 ........................................................................................................... 11
2.2.6
CI LM567 ..................................................................................................... 13
2.2.7
Rede de Distribuição de Energia Elétrica....................................................... 13
2.3
ESPECIFICAÇÃO DO SOFTWARE .................................................................. 14
2.3.1
Descrição da Aplicação Internet.................................................................... 14
2.3.2
Programa de Conexão Local.......................................................................... 15
2.4
ESPECIFICAÇÃO DE HARDWARE ................................................................. 16
2.4.1
Descrição dos Circuitos................................................................................. 17
2.4.1.1 Circuito Emissor ........................................................................................ 17
2.4.1.2 Circuito Receptor....................................................................................... 18
3
PROJETO.................................................................................................................. 19
3.1
DIAGRAMA DE FLUXO DE DADOS............................................................... 19
3.2
APLICAÇÃO ASP .............................................................................................. 21
3.3
BANCO DE DADOS .......................................................................................... 23
3.4
CIRCUITO EMISSOR ........................................................................................ 25
3.5
CIRCUITO RECEPTOR ..................................................................................... 27
3.6
CRONOGRAMA DO PROJETO ........................................................................ 29
3.7
VALIDAÇÃO DO PROJETO ............................................................................. 30
i
3.8
CONSIDERAÇÕES FINAIS............................................................................... 31
4
REFERÊNCIAS BIBLIOGRAFICAS........................................................................ 33
5
ANEXOS................................................................................................................... 35
Anexo 1 – Interfaces das Páginas ASP.............................................................................. 36
Anexo 2 – Listagem do Código Fonte das Páginas ASP.................................................... 42
Anexo 3 – Listagem do Código Fonte do Programa C ...................................................... 54
ii
LISTA DE FIGURAS
Figura 1. Diagrama de blocos de funcionamento do projeto...............................................8
Figura 2. Pinagem e diagrama do CI 555. ........................................................................ 12
Figura 3. Configuração astável do 555............................................................................. 12
Figura 4. Esquema da aplicação Internet.......................................................................... 15
Figura 5. Diagrama de bloco dos circuitos de hardware.................................................. 17
Figura 6. Diagrama de fluxo de dados – Nível 0. ............................................................. 20
Figura 7. Diagrama de fluxo de dados – Nível 1. ............................................................. 21
Figura 8. Esquemático da estrutura lógica do banco de dados do sistema. ........................ 23
Figura 9. Circuito emissor. .............................................................................................. 25
Figura 10. Circuito receptor............................................................................................. 28
iii
LISTA DE ABREVIATURAS
ASP - Active Server Pages
CI - Circuito Integrado
DFD – Diagrama de Fluxo de Dados
HTML - HyperText Markup Language
ODBC – Open Database Connectivity
SGBD - Sistema Gerenciador de Banco de Dados
SQL - Structured Query Language
iv
1
INTRODUÇÃO
Dentre os vários avanços que a informática tem propiciado, um tema que tem crescente
desenvolvimento está relacionado com a Internet e sua utilização prática no acesso e
controle de dispositivos domésticos.
O projeto a ser apresentado visa apresentar um sistema onde a Engenharia da
Computação está presente no software a ser desenvolvido, na teleinformática e sistemas
distribuídos pela utilização da Web e no hardware que fará a interação da rede elétrica com
os dispositivos eletrônicos.
O projeto possui um grande potencial para sua utilização no cotidiano da vida moderna
visto que pretende dar ao usuário do sistema a possibilidade de interagir com algum
equipamento que pode estar virtualmente do lado oposto do planeta utilizando para isto o
meio altamente difundido da Internet.
O desenvolvimento do sistema utilizando a Internet e página dinâmica dá a
oportunidade de implementar o projeto com um componente poderoso de agregação
comercial pois torna o sistema amigável ao usuário comum e pode suprir necessidades com
este nível de interação.
A utilização da rede elétrica residencial para a comunicação de dados é um diferencial
significativo do projeto, com grande potencial de crescimento devido a fatores como a
existência da rede elétrica em todas as residências, a simplicidade de conexão com todos os
cômodos e a economia no custo de instalação dos cabos de rede, que deixam de existir.
A aplicação deste sistema tem sua utilização focada em qualquer equipamento elétrico
ou eletrônico que possa ter conexão com a rede elétrica da residência, tais como alarmes,
lâmpadas, aquecedores, ar condicionado, exaustores, sistema de calefação, televisores,
computadores, telefones, etc., evidenciando mais este fator de utilização do sistema.
5
Este projeto representa o passo inicial para a utilização de uma tecnologia que vem
sendo pesquisada por empresas de porte como Adaptive Networks, Enekia, Inari e Intellon
entre outras [1].
6
2
ESPECIFICAÇÃO
Nesta etapa do projeto será apresentada a especificação do projeto do controle
programado de dispositivos via Internet com comunicação local via rede elétrica, que
compreende a descrição da dinâmica de funcionamento do sistema, a tecnologia de
software e de hardware a ser empregada e a definição dos blocos funcionais envolvidos.
2.1
DESCRIÇÃO
O projeto pode ser visualizado em duas partes principais distintas em termos de
tecnologia, que são, o desenvolvimento de um sistema de comunicação utilizando a rede
elétrica local considerando a rede elétrica local como sendo uma rede elétrica de 110 V e o
desenvolvimento de uma aplicação Internet onde o usuário é capaz de controlar os
dispositivos de seu ambiente local estando conectado em qualquer lugar na rede mundial.
Estas duas interfaces do projeto podem até mesmo operar de forma independente, ou seja,
os dispositivos podem ser controlados localmente sem que o acesso seja via Internet,
adaptando-se o programa em C para este fim. O sistema Internet, por sua vez, pode ser
utilizado para se comunicar com uma interface de comunicação via rádio, por exemplo.
O sistema consiste em uma aplicação Internet desenvolvida em código ASP (Active
Server Pages ) que tem acesso um banco de dados implementado em Access, ambos
hospedadas em um servidor, e um sistema que envolve a comunicação de um computador
local com um acoplamento a rede elétrica e dispositivos de recepção responsáveis pelo
acionamento direto dos equipamentos com que se pretende interagir, conforme apresentado
na Figura 1.
O usuário se conecta a Internet, executa o login, recebe uma página de visualização do
status atual dos dispositivos e campos para atualização. No caso de atualização, as
informações são gravadas no banco de dados. O computador local deve estar
constantemente ligado com a respectiva aplicação em execução. O computador local faz
uma verificação constante nas informações do banco de dados do servidor, caso algum
7
dispositivo deva sofrer alguma operação, o computador se comunica com a interface de
acoplamento à rede elétrica que acessa o dispositivo correspondente no local e executa a
operação de ligar ou desligar o dispositivo.
Usuário
Computador - Acoplamento - Dispositivos
Access - ASP
Internet
Aplicação Internet
Comunicação via rede elétrica
Figura 1. Diagrama de blocos de funcionamento do projeto.
2.2
ESTUDO TEÓRICO
Nesta etapa são descritos os conceitos teóricos necessários para que se obtenha o
domínio das tecnologias que serão utilizadas neste projeto.
Para o desenvolvimento do sistema relacionado à Internet o foco da pesquisa se
concentra em desenvolvimento de páginas dinâmicas com acesso a banco de dados, sendo
que grande parte do material inicial de consulta pode ser encontrado em sites relacionados
ao assunto. Foram obtidas apostilas e consultados tutoriais on line, que forneceram o
material necessário para o desenvolvimento do código ASP.
Quanto a comunicação de dados via rede elétrica também foram pesquisados sites sobre
o assunto, especialmente para determinar a tecnologia necessária para o desenvolvimento
dos circuitos de comunicação.
8
Foram analisados datasheets dos componentes a serem utilizados e livros de eletrônica
que auxiliam na configuração e cálculos necessários para estas configurações do projeto.
Entidades e empresas que estão desenvolvendo algum sistema relacionado a
comunicação de dados via rede elétrica foram pesquisados para minimizar erros de escolha
de tecnologia e facilitar o desenvolvimento do projeto.
2.2.1 ASP – Active Server Pages
O ASP é um ambiente de programação por scripts que rodam em servidor que
tenham o sistema operacional Windows com a solução mínima de acesso a Internet,
Microsoft Internet Information Server versão 3.0 no Windows NT Server, Microsoft Peer
Web Services versão 3.0 no Windows NT Workstation e Microsoft Personal Web Server no
Windows 95 ou Windows 98 [15].
O ASP é usado para criar páginas dinâmicas, interativas e de alto desempenho.
Como as páginas ASP, os scripts rodam no servidor e não no cliente. É o próprio servidor
que transforma os scripts em HTML padrão, fazendo com que qualquer browser do
mercado seja capaz de acessar um site que usa ASP.
2.2.2 SGBD – Sistema Gerenciador de Banco de Dados
Um banco de dados pode ser criado e mantido por um conjunto de aplicações
desenvolvidas especialmente para esta tarefa ou por um SGBD. Um SGBD permite a
criação e manipulação de bancos de dados de propósito geral. O conjunto formado por um
banco de dados mais as aplicações que manipulam o mesmo é chamado de Sistema de
Banco de Dados [18].
Um SGBD é uma coleção de programas que permitem ao usuário definir, construir e
manipular Bases de Dados para as mais diversas finalidades.
9
Neste projeto o sistema de armazenamento de dados pode ser escolhido entre os
diversos disponíveis no mercado que tenham compatibilidade com a linguagem SQL, já
que os programas em ASP possuem tal linguagem implementada para acesso ao banco de
dados.
2.2.3 Linguagem C
O C é uma linguagem de programação genérica de nível médio que é utilizada para
desenvolvimento de programas em diversas áreas e atividades, como por exemplo,
computacional: criação de navegadores, planilhas, processadores de texto, calculadora, etc.;
comercial: folha de pagamento, cadastro de pessoas e coisas, controle de vendas, etc.; e na
solução de problemas nos mais diversos campos do conhecimento como química, física,
matemática, etc [19].
Neste projeto a linguagem C é utilizada para manipulação de arquivos e para
comunicação com a porta paralela, tarefas que são executadas com uma implementação
totalmente compatível com o compilador escolhido, no caso o Borland C++ Builder.
2.2.4 Filtro Passa Alta
Filtros são circuitos que permitem a passagem de sinais para uma faixa de freqüência.
Dentro dos filtros passivos, encontramos o filtro passa-baixa e o filtro passa-alta.
Para ondas senoidais, de freqüências altas, a reatância capacitiva assume valores baixos
em comparação com o valor da resistência, dessa maneira a tensão de saída será
praticamente igual a tensão de entrada. Para freqüências baixas, a reatância capacitiva
assume valores altos em comparação com o valor da resistência, atenuando a tensão de
saída para um valor praticamente nulo. Dessa maneira, o filtro permite a passagem de sinais
de freqüências altas, sendo por isso denominado filtro passa-alta [20].
10
O filtro passa alta é utilizado no projeto para fazer o acoplamento entre os circuitos
emissor e receptor com a rede elétrica local pois a tensão com que operam os circuitos do
projeto são da ordem de 5V. Como serão emitidas freqüências acima de 1 kHz sobre a rede
elétrica, que opera em 60 Hz, o filtro evita uma sobrecarga sobre os circuitos.
2.2.5 CI 555
O 555 é um circuito integrado composto de um Flip-Flop do tipo RS, dois
comparadores simples e um transistor de descarga. Projetado para aplicações gerais de
temporização, este integrado é de fácil aquisição no mercado especializado de eletrônica
[21].
Ele é tão versátil e possui tantas aplicações que se tornou um padrão industrial,
podendo trabalhar em dois modos de operação: monoestável (possui um estado estável) e
astável (não possui estado estável). Sua tensão de alimentação situa-se entre 5 e 18v, o que
o torna compatível com a família TTL de circuitos integrados e ideal para aplicações em
circuitos alimentados por baterias. A saída deste C.I. pode fornecer ou drenar correntes de
até 200mA ou 0,2A, podendo assim comandar diretamente relês, lâmpadas e outros tipos de
carga relativamente grandes [21].
Na figura 2 são mostrados os pinos e o diagrama simplificado do CI 555.
11
Figura 2. Pinagem e diagrama do CI 555.
Neste projeto, o 555 é utilizado como oscilador operando em modo astável , isto é a
saída ficará variando entre estados alto e baixo numa freqüência que será determinada pela
configuração da rede RC como pode ser visto na figura 3.
Figura 3. Configuração astável do 555.
12
A freqüência de operação é calculada por: f = 1 / T = 1,44 / (RA + 2RB) x C1.
2.2.6 CI LM567
O CI LM567 é um decodificador de tom de finalidade geral, projetado para atuar
como um interruptor de saturação do transistor quando um sinal de entrada está atuando
dentro da banda-passante. O circuito consiste em um detetor de entrada e de uma saída
controlada por um oscilador com tensão controlada, que determina o centro de freqüência
do decodificador. Os componentes externos são usados para ajustar o centro da freqüência
independentemente da largura de faixa e do atraso da saída [13]. Ou seja, CI LM567 é um
circuito detetor de tom capaz de detectar uma certa freqüência injetada em sua entrada.
A fórmula para se detectar freqüência desejada é dada por: FINPUT = 1 / 2,8 x Rt x Ct.
2.2.7 Rede de Distribuição de Energia Elétrica
As redes de distribuição foram inicialmente projetadas para transmitir energia elétrica
de forma eficiente, assim estas não são adaptadas para fins de comunicação, fazendo com
que seja necessário o emprego de técnicas avançadas. Devido as características especiais da
rede de distribuição como canal de comunicação, investigações profundas e detalhadas
deverão ser feitas para garantir a utilização da mesma de forma eficiente para fins de
comunicação de dados [2].
As redes elétricas são usualmente classificadas em três níveis:
•
Alta Tensão - Utilizado para interligar os centros de geração aos centros de consumo,
geralmente percorrendo grandes distâncias, este nível de tensão é marcado
principalmente pelas perdas por efeito Joule, pelas descargas oriundas do efeito corona
(que também introduzem componentes de alta freqüência na rede) e por capacitâncias e
indutâncias parasitas.
13
•
Média Tensão - Responsáveis pela interligação das subestações com os centros
distribuídos de consumo, este nível de tensão pode também ser utilizado no
fornecimento de energia elétrica a consumidores de maior porte como indústrias ou
prédios.
•
Baixa Tensão - Este é o nível de tensão que efetivamente chega a maioria das unidades
consumidoras derivando do secundário do transformador de redução. A natureza
dinâmica com que as cargas são inseridas e removidas da rede, as emissões conduzidas
provenientes dos equipamentos e as interferências de diferentes naturezas fazem deste
ambiente o mais hostil, para a transmissão de sinais, dentre os três níveis de tensão
apresentados.
2.3
ESPECIFICAÇÃO DO SOFTWARE
Neste item estão definidos as ferramentas de software necessárias para o
desenvolvimento e implementação do projeto, bem como uma breve descrição de cada uma
destas ferramentas.
Estão incluídas neste item o funcionamento das interfaces de software, onde tem-se a
descrição da aplicação Internet e os programas necessários para sua implementação.
2.3.1 Descrição da Aplicação Internet
A aplicação Internet tem como função principal dar ao usuário um alto grau de
interação com os dispositivos eletrônicos de sua residência conectados ao sistema. Isto faz
com que a utilização do sistema tenha bastante flexibilidade e uma facilidade de acesso
muito simples no modo de operação pelo usuário.
O sistema de conexão com a Internet utilizará um servidor onde estarão rodando um
programa em ASP para atualização dinâmica das páginas e um sistema gerenciador de
14
banco de dados - SGBD, o Microsoft Access que armazenará todas as informações dos
clientes cadastrados bem como as informações referentes aos dispositivos das residências.
Na Figura 4 pode-se observar o esquema de funcionamento da aplicação Internet.
Figura 4. Esquema da aplicação Internet.
Para utilização do sistema o usuário deverá se conectar com a Internet e acessar a
página de login do sistema, onde entrará com o nome e a senha de acesso. Desta forma terá
acesso à página onde são visualizados os dispositivos com seus status atuais e ainda os
campos relativos a atualização desejada, ou seja, data, hora e operação de liga ou desliga
dispositivo. Esses parâmetros serão enviados para o servidor que atualizará o banco de
dados do usuário.
O computador na residência do usuário deve permanecer constantemente conectado
a Internet, requisita a página inicial do sistema para efetuar a confirmação de nome e senha
do usuário, para que possa entrar na página onde estarão atualizados os parâmetros de cada
dispositivo, esta página será sistematicamente atualizada pelo programa para que tenha os
parâmetros para os dispositivos sempre atualizados.
2.3.2 Programa de Conexão Local
O programa de atualização e conexão local será ser desenvolvido em linguagem C e
terá a função de fazer a conexão do computador com o circuito de comunicação via rede
15
elétrica pela porta paralela e a manipulação do cookie gerado pela página de refresh local,
de forma a extrair a data, a hora, o dispositivo e a operação à ser executada.
O Cookie é um arquivo pequeno, normalmente menor que 1Kbyte, que
freqüentemente inclui um identificador único, que é enviado para o browser através de uma
página da Internet e armazenado no disco rígido.
2.4
ESPECIFICAÇÃO DE HARDWARE
Neste tópico são especificados os componentes de hardware que compõe o projeto.
Estes componentes estão definidos em forma de módulos de acordo com a função
específica de cada módulo, representado na Figura 5.
Quando da ativação do sistema de hardware, o computador envia um conjunto de
dados para o circuito emissor, que é composto por um módulo seletor, que habilita a chave
responsável pela conexão com o oscilador, este por sua vez, envia a freqüência especificada
para o acoplador, que se encarrega de transmitir este sinal pela rede elétrica.
Na rede elétrica estão conectados os dispositivos que recebem a freqüência e
executam a operação de liga/desliga dos equipamentos a eles conectados, os módulos que o
compõe são: o filtro, que recebe o sinal da rede elétrica e retira a freqüência de interesse; o
detetor de tom, que identifica se a freqüência é direcionada para determinado dispositivo; e
o interruptor, que é a chave de liga/desliga que fará o acionamento ou desligamento do
equipamento.
16
Rede Elétrica Local
Seletor Oscilador Acoplador
Filtro
Detetor
de Tom Interruptor
Computador
Equipamento
Circuito Emissor
Circuito Receptor
Figura 5. Diagrama de bloco dos circuitos de hardware.
2.4.1 Descrição dos Circuitos
Os circuitos que compõe o projeto são descritos neste tópico do projeto, onde são
apresentadas as características físicas e funcional básicas do circuito emissor e do circuito
receptor.
2.4.1.1 Circuito Emissor
O circuito emissor é composto de três blocos funcionais distintos, o bloco seletor,
bloco oscilador e bloco acoplador.
-
Bloco Seletor – O computador se comunica inicialmente com este bloco
através da porta paralela. É constituído de resistores, que determinam a
freqüência de operação do CI 555.
-
Bloco Oscilador – O componente principal é o CI 555, possui as várias
configurações de entrada necessárias para distinguir os dispositivos de
acordo com a freqüência selecionada. Estas configurações são acessadas
pela bloco seletor.
17
-
Bloco Acoplador – Responsável por enviar a freqüência selecionada para a
rede elétrica. É necessário devido ao fato de que a tensão de saída do
computador é em torno de 5V e a tensão da rede, aproximadamente 127V.
O circuito é constituído de um filtro passa alta que evita que a tensão da
rede elétrica danifique o circuito de baixa potência.
2.4.1.2 Circuito Receptor
O circuito receptor é composto por três blocos funcionais distintos: filtro, detetor de
tom e interruptor, descritos a seguir.
-
Filtro – O filtro recupera a freqüência enviada pelo emissor. É a
implementação de um filtro passa alta que exclui a freqüência da rede
elétrica de forma que a freqüência que passa pelo filtro possa ser
identificada pelo bloco detetor de tom.
-
Detetor de Tom – O detetor de tom tem como característica o
reconhecimento de determinada freqüência, que é configurada por
componentes passivos externos. Cada dispositivo terá um circuito detetor
de tom configurado de acordo com a freqüência que for selecionada no
bloco seletor do circuito emissor.
-
Interruptor – O interruptor é a chave de liga e desliga do dispositivo
relacionada ao equipamento. Possui um acoplamento do tipo relê que isola
a baixa tensão dos blocos funcionais da rede elétrica.
18
3
PROJETO
Neste capitulo são descritas em detalhes todas as etapas para a implementação do
projeto, levando em conta os tópicos descritos na etapa anterior do projeto.
3.1
DIAGRAMA DE FLUXO DE DADOS
O diagrama de fluxo de dados descreve o fluxo de informações e as transformações
que são aplicadas à medida que os dados se movimentam da entrada para a saída do
sistema. É a representação gráfica da descrição lógica do projeto, onde são apresentados os
procedimentos e operações propostos, de forma a permitir uma visualização global do
funcionamento do sistema.
Na Figura 6, a seguir, é apresentado o DFD de nível zero que apresenta em um único
núcleo todas as ações do sistema, de forma resumida, bem como as entidades externas
envolvidas, a partir de onde é feita uma expansão que origina o DFD de nível um,
apresentado na Figura 7, com um, grau maior de detalhamento das operações do sistema.
Com este nível de explosão do diagrama de fluxo de dados já se observa toda a
seqüência de operações e entidades externas envolvidas, bem como o banco de dados, que
vem a ser um dos principais depósitos do sistema.
19
Usuário Acesso-Local
Logon e senha
Consultar dados
Usuário Acesso-Remoto
Logon e senha
Atualizar dados
Consultar dados
Sistema de
Controle
Programado de
Dispositivos
Data e Hora
Acionar porta paralela
Sistema Operacional
Circuito Emissor
Figura 6. Diagrama de fluxo de dados – Nível 0.
20
Usuário Acesso-Remoto
Usuário
Senha
Efetuar
Logon
Usuário Acesso-Local
Usuário
Senha
Efetuar
Logon
Valida usuário
Retorna status
Envia dados
Data
Hora
Comparar
Dados
Porta
Pino
Valida usuário
Atualizar
Dados
Atualizar
Dados
Sistema Operacional
Cookie
Retorna status
Banco Dados
Acionar
Porta
Paralela
Envia bit
Circuito Emissor
Figura 7. Diagrama de fluxo de dados – Nível 1.
3.2
APLICAÇÃO ASP
A aplicação ASP é constituída das páginas que fazem a interação do usuário com o
sistema, ou seja, possui as interfaces necessárias para a comunicação com os equipamentos
que deseja interagir, estas podem ser vistas no Anexo 1.
21
A aplicação ASP possibilita ao usuário fazer inicialmente o seu login no sistema, isto
é necessário para que um determinado usuário acesse exclusivamente as informações a ele
pertinentes, este é um fator de segurança importante para acesso ao sistema. Esta página é
denominada de “acesso_p.asp”, tem a função de armazenar as variáveis referentes ao nome
e senha do usuário, estes dados serão utilizados para acesso ao restante do sistema. Caso o
usuário ou senha não estejam corretos será apresentada uma página de erro, denominada
“pag_erro.asp”, que retorna para a página de login automaticamente após alguns segundos .
Logo após o login é apresentada a tela onde é mostrado o status dos dispositivos, tais
como: data, hora e operação a ser executada. Nesta página é feita a atualização dos dados
relativos aos dispositivos. No anexo referente às interfaces ASP, observa-se a disposição
dos dados relativos ao status e, logo abaixo deste, os campos que devem ser preenchidos
para a atualização dos dados desta página que é denominada “valida_p.asp”.
Esta página recebe os dados da página de login e os valida através de uma conexão
com o banco de dados, em seguida os campos atualizados recebem uma instrução SQL que
executa a instrução de atualização.
No local onde está a placa de recepção e emissão de dados, um computador deve
estar permanentemente conectado com a Internet e, inicialmente, é executado um login com
o sistema para se determinar o usuário do sistema e proceder a autenticação do mesmo. A
interface desta página, denominada “acesso_local.asp” é equivalente a página de acesso do
usuário descrita anteriormente, conta inclusive com a verificação de usuário e senha, caso
algo não esteja correto é enviada a página de erro equivalente a “pag_erro.asp” que neste
caso é denominada de “erro_local.asp”.
Para que o sistema local possa realizar a constante verificação dos dados no servidor
é necessário que a sessão do cliente permaneça ativa à cada atualização realizada pela
página de refresh. Esta sessão do usuário é especificada na página denominada
“session_local.asp” que mantém os dados do usuário que acessou o sistema.
22
Logo depois de executado a sessão no ambiente local, a página que é requisitada é a
“refresh_local.asp”, que recebe os dados atualizados do banco de dados, relativos ao
cliente, e executa uma atualização a cada 30 segundos. Esta página tem o formato
semelhante a página “valida_p.asp”, vista anteriormente, no entanto sem os campos de
atualização, apresenta somente o status dos dispositivos.
3.3
BANCO DE DADOS
O banco de dados implementado tem a finalidade de armazenar informações relativas
ao usuário, e aos dispositivos que atuam no sistema, recebendo e enviando informações
para as páginas dinâmicas desenvolvidas em ASP.
Na Figura 8 pode-se observar como está implementado o banco de dados em seu
nível lógico e de inter-relacionamentos.
Figura 8. Esquemático da estrutura lógica do banco de dados do sistema.
O banco de dados, implementado em access, possui uma estrutura bastante simples,
mas que abrange plenamente as necessidades do sistema. É constituído por três tabelas:
Tab_Dispositivos, Tab_Programa e Tab_Usuario, na Tabela1 pode-se observar cada tabela
do banco com o nome de cada campo, tipo de dados e, no lado esquerdo da tabela, os
caracteres CH significam chave primária.
23
A implementação do banco de dados faz a consistência dos dados à serem incluídos,
bem como assegura uma única operação para um determinado dispositivo em determinado
horário. Desta forma o funcionamento do projeto como um todo ganha maior
confiabilidade quanto a interação com os dispositivos relacionados.
Tab_Dispositivo
Nome do Campo
CH Dispositivo
Tipo de Dados
Texto
Tab_Programa
Nome do Campo
Tipo de Dados
CH Nome
Texto
CH Dispositivo
Texto
CH Data
Data/Hora
CH Hora
Data/Hora
Operação
Texto
Tab_Programa
Nome do Campo
Tipo de Dados
CH Nome_Usuario
Texto
Senha_Usuario
Texto
Tabela 1. Tabelas do banco de dados com campos.
24
3.4
CIRCUITO EMISSOR
O circuito emissor, mostrado na Figura 9 é conectado à porta paralela do computador
por onde são enviados os pulsos necessários para a ativação da freqüência do dispositivo
envolvido em determinada operação (ligar ou desligar). Este sinal é enviado
especificamente para um dos resistores, R1a ou R1b, com valores distintos, isto faz com
que o CI 555 oscile em diferentes freqüências.
A freqüência selecionada é levado à transistor de potência que fornece o sinal final
para aplicação na rede elétrica. Este acoplamento é feito através de duas enroladas com fio
de cobre esmaltado em um bastão de ferrite de 0,6 cm de diâmetro e de 10 cm de
comprimento e de dois capacitores de poliéster com tensão de isolamento de 400 V. L1 é
formada por 80 voltas de fio no bastão e L2 por 240 voltas, o que possibilita um aumento
na tensão de saída da bobina. Este conjunto, bobinas e capacitores, fazem a filtragem do
sinal de baixa freqüência da rede elétrica, evitando uma sobrecarga no sistema que opera
com tensão de 6 volts de corrente contínua.
J4
VCC
J1
R1a
C4
L1
1
J5
1
2
1
ent1
J2
R1b
L2
1
C3
Saida
ent2
U1
7
R2
5
4
6
2
8
DSCHG
R3
OUT
3
Q1
TIP111
CV
RST
THR
TRG
VCC
LM555
C2
C1
GND
J3
1
GND
Figura 9. Circuito emissor.
O CI 555 é configurado para operar em modo astável, de forma que os componentes à
serem considerados para o cálculo da freqüência são R1a, R1b, R2 e C2.
25
Como:
R1a = 10
R1b = 47 R2 = 20 C2 = 1nF
e utilizando as fórmulas:
T1 = 0,7 x (R1a + 2 x R2) x C2 , f 1= 1/T1;
T2 = 0,7 x (R1b + 2 x R2) x C2 , f 2= 1/T1;
Obtém-se, respectivamente, f1 ≅ 28 kHz e f2 ≅ 16 kHz, que são as freqüências
emitidas por este circuito sobre a rede elétrica.
A seguir é apresentada a lista de componentes para implementação do circuito
emissor:
Capacitores:
C1 – 0,01 µF, cerâmico;
C2 – 100 µF, cerâmico;
C3, C4 – 10 nF, poliéster 400V.
Resistores:
R1a – 10 kΩ;
R1b – 47 kΩ;
R2 – 20 kΩ;
R3 – 1 kΩ.
Semicondutores:
U1 – LM555;
26
Q1 – TIP111.
Diversos:
L1, L2 – Bobina.
3.5
CIRCUITO RECEPTOR
O circuito receptor, mostrado na figura 10, deve estar conectado a uma das tomadas
da rede elétrica local. Este circuito é constituído por um acoplamento com a rede elétrica,
que é formado por uma bobina com dois enrolamentos de fio de cobre esmaltado sobre um
bastão de ferrite de 0,6 cm de diametro por 6 cm de comprimento e um capacitor de
poliéster. Cada bobina, L1 e L2, possui 130 voltas, fazendo com que não ocorra alteração
na tensão de entrada do sistema. Este conjunto executa a filtragem das baixas freqüências
da rede elétrica.
Na seqüência, dois diodos em oposição na entrada evitam que transientes ou surtos de
alta tensão da rede elétrica possam causar problemas ao circuito integrado.
O CI LM567 tem a sintonia ajustada para uma determinada freqüência do emissor
através do trimpot conectado ao pino 5. Enquanto o CI não recebe o sinal correspondente a
freqüência configurada, a saída permanece em nível alto. Quando é detectada a freqüência
correta da configuração a saída do CI vai à nível baixo, por este motivo as saídas do CI 567
são conectadas ao CI 7404, que invertem o sinal de saída para acionar a lógica dos relês do
circuito.
Cada configuração do CI 567 deve detectar uma freqüência diferente, um deve
detectar 28 kHz e o outro 16 kHz, conforme definido pelo circuito emissor, de forma que
cada sinal é reconhecido independentemente do outro. Quando a freqüência é detectada, o
sinal faz com um pulso seja enviado para a lógica implementada nos relês. Esta lógica é
implementada de forma que se o relê K1 recebe um pulso positivo, o dispositivo é
desligado, e assim permanece “travado”, para que o dispositivo seja ligado o relê K2 deve
receber um pulso positivo, após o qual este também permanece “travado”, e assim
27
sucessivamente. É importante observar que após o relê K2 ter definido a posição de ligar o
dispositivo este assim permanece mesmo que receba novo pulso, o mesmo ocorrendo com o
relê K1 no caso de desligar o dispositivo.
C5
C1
K1
4
4
3
C3
INPUT
J1
D1
D2
OUTPUT
OUT FIL
2
8
6
5
3
1
2
5
8
Q1
6
1
7
L FIL
L3
1
2
C6
TC
TR
D3
RELE
1
3
PLUG MACHO
R2
3
2
L2
R3
4
U1
C2
LM567C
2
1
R1
C4
C9
K2
R6
T1
5
2
6
4
OUTPUT
6
5
8
3
D6
OUT FIL
2
5
8
Q1
6
1
7
L FIL
1
2
3
1
INPUT
C7
8
TC
TR
C10
D4
1
D5
4
R5
1
3
3
4
U1
4
VCC
RELE
LM567C
PLUG FEMEA
2
C11
2
1
R4
C8
Figura 10. Circuito receptor.
A seguir é apresentada a lista de componentes utilizados na implementação do
circuito receptor:
Capacitores:
C1 – 10 nF, poliéster 400V;
C2 – 100 nF, cerâmico;
C3, C7 – 10 nF, cerâmico;
C4, C8 – 4,7 nF, poliester;
C5, C9 – 100 nF, cerâmico;
C6, C10 – 22 nF, cerâmico;
28
J2
C11 – 1000 µF, eletrolítico.
Diodos:
D1, D2, D3, D4, D5, D6 – 1N4002.
Resistores:
R1, R4 – 10kΩ - potenciômetro;
R2, R5 – 10kΩ;
R3, R6 – 1kΩ.
Semicondutores:
Q1, Q2 – BC549;
U1, U2 – LM567.
Diversos:
L2, L3 – Bobina;
K1, K2 – Relê 5V;
T1 – Transformador – primário=127, secundario=6+6 V, 800mA.
3.6
CRONOGRAMA DO PROJETO
O cronograma do projeto se baseia no cronograma especificado “Manual de Instrução
do Projeto do Final de Curso”, disponibilizado aos alunos para a elaboração do projeto. A
Tabela 2 mostra os meses definidos para as etapas do projeto.
29
Fev Mar Abr Mai Jun Jul
Ago Set
Out Nov Dez
Proposta
Especificação
Projeto
Implementação
Validação
Documentação
Tabela 2. Cronograma do projeto.
3.7
VALIDAÇÃO DO PROJETO
O desenvolvimento dos sistemas independentes serão feitos de maneira paralela, de
forma que não fiquem etapas individuais para serem desenvolvidas integralmente após a
conclusão das demais etapas que não têm ligação direta.
O sistema que envolve o funcionamento de conexão e acesso a banco de dados via
Internet deverá ter condições de validação antes do sistema de comunicação de dados via
rede elétrica.
A validação integral do projeto envolve a conexão de um usuário com a Internet e seu
acesso a página via confirmação de nome e senha. Na seqüência o usuário deverá
determinar na página, o dispositivo que pretende acionar bem como o horário
de
acionamento. O servidor recebe as informações e as atualiza no banco de dados. O
computador que está na residência deve acessar periodicamente o servidor via Internet e
fazer a verificação das informações atualizadas do banco de dados. O programa em C lê os
30
dados atualizados da página local e faz a conexão com o dispositivo que recebe o comando
na hora especificada.
Para fins de validação do projeto uma lâmpada elétrica que estará conectada a rede
elétrica local receberá um comando de liga ou desliga, que deve ser executado na hora
especificada pelo usuário conectado à Internet.
3.8
CONSIDERAÇÕES FINAIS
Algumas considerações importantes devem ficar registradas para análise de problemas
encontrados bem como suas soluções, possíveis soluções ou a inviabilidade de execução.
Quanto à utilização da Internet como meio de circulação das informações do sistema
chega-se a um impasse no que diz respeito a utilização dos dados que estão chegando para
o cliente local, pois apesar dos dados serem apresentados na tela do navegador, o programa
em C que manipula os dados, não tem como extraí-los para utilização do sistema.
Duas considerações são feitas quanto ao problema exposto:
A primeira consideração é a de que é possível para o programa em C manipular os
dados diretamente do servidor, isto leva a possibilidade da implementação do sistema de
forma que o cliente local seja alterado para servidor local. O que significa manter no
computador do cliente tanto a aplicação de banco de dados como o servidor de páginas.
Além disso o cliente deve possuir um endereço IP fixo que acarreta um custo considerável
a mais na implantação do sistema.
A segunda consideração é a de que o único arquivo manipulável que o código ASP
pode gerar no cliente são os cookies, arquivos no formato texto com informações que
podem ser recuperadas pelo navegador sem intervenção do usuário. Neste caso especifico,
estas informações podem ser utilizadas pelo programa C para verificação dos dados e
interação com os dispositivos.
31
A primeira consideração possui um lado positivo no que diz respeito a eficiência do
sistema em termos técnicos, visto que o acesso direto ao banco de dados no cliente elimina
um intermediário de acesso ao banco de dados. Por outro lado adiciona custo para o cliente
e elimina a forma mais promissora de exploração do sistema comercialmente, isto é, a
prestação de serviço como provedor de acesso e administrador do sistema.
Desta forma o programa em C é desenvolvido procurando tratar os cookies no cliente
mantendo as características inicias das interfaces de acesso à Internet.
Quanto ao hardware, a utilização da rede elétrica se mostrou bastante eficiente em
termos de manter a freqüência emitida pela rede, porém a amplitude do sinal é bastante
atenuado conforme a distância entre o emissor e o receptor aumenta. Isto requer um
aprimoramento na questão de potência a ser enviada para a rede.
Ainda como sugestão para melhoria futura do sistema, pode-se implementar um módulo
de resposta do dispositivo para o computador, confirmando o status atual do mesmo, dando
maior confiabilidade e interação com o sistema.
Como o sistema está sujeito a possíveis ruídos gerados por outros equipamentos ligados
a rede elétrica, que podem ter freqüência coincidente à configurada no receptor, uma forma
de controlar o que é freqüência válida ou não, também é desejável.
O projeto, no entanto, como foi proposto, alcançou seus objetivos plenamente, sendo
que o protótipo aqui desenvolvido executa sem problemas as tarefas para o qual foi
construído.
32
4
REFERÊNCIAS BIBLIOGRAFICAS
[1] http://www.bit.pt/revista/especiais/bit21-1.htm, Março/2003.
[2] http://www.eel.ufsc.br/gpqcom/vidal/PLC/relat.html, Março/2003.
[3] http://www.intellon.com, Março/2003.
[4] http://www.powerlinecommunications.net, Março/2003.
[5] http://www.homeplug.org/index_basic.html, Março/2003.
[6] http://www.geocities.com/SiliconValley/Monitor/4126/indice.html, Março/2003.
[7] http://icc.skku.ac.kr/~won/electro/telecom.html, Março/2003.
[8] http://www.plexeon.com/access-3.html, Março/2003.
[9] http://www.inovanet.com.br, Março/2003.
[10] http://www.tutorialweb.hpg.ig.com.br/asp.htm, Março/2003.
[11] http:// www.asphelp.com.br, Março/2003.
[12] http://www.darkbr.net/asp.php, Março/2003.
[13] http://www.fairchildsemi.com, Março/2003.
[14] W. Bolton, Análise de Circuitos Elétricos, 2.ed. São Paulo, Makron Books, 1995.
[15] Asbury Stephen, RICART,Manuel Alberto, ASP, Guia do Desenvolvedor, Berkeley,
2001.
[16] W.Kwan, W.Parker, B.Roberts, J.Tatum - PLCCS : A Power Line Carrier
Communications System, submitted to: Joseph Picone.
[17] Jeffry Byrne,
Microsoft Access 97,
Rio de Janeiro, Campus, 1997.
33
[18] Abraham Silberschatz, Sistema de Banco de Dados, 3. ed. São Paulo, Makron Books,
1999.
[19] Lars Klander & Kris Jamsa, Programando em C/C++: a Bíblia, 1. ed. São Paulo,
Makron Books, 1999.
[20] http://www.facens.br, Julho/2003.
[21] Parr, E.A.; Projetos Eletronicos com o C.I. 555, 1. ed. Rio de Janeiro, Seleções
Eletrônicas, 1979.
34
5
ANEXOS
Anexo 1 – Interfaces das Páginas ASP;
Anexo 2 – Listagem do Código Fonte das Páginas ASP;
Anexo 3 – Listagem do Código Fonte do Programa C.
35
Anexo 1 – Interfaces das Páginas ASP
36
Interface - Página de acesso local - acesso_local.asp.
37
Interface - Página local de verificação de status dos dispositivos - refresh_local.asp.
38
Interface - Página de acesso remoto - acesso_p.asp.
39
Interface - Página de atualização do sistema - valida_p.asp.
40
Interface - Página de erro de logon - pag_erro.asp e erro_local.asp.
41
Anexo 2 – Listagem do Código Fonte das Páginas ASP
42
• Acesso_local.asp
<!--pagina inicial de acesso local, onde o usuario deve entrar com nome e senha.
A pagina aciona a pagina "session_local.asp"-->
<HTML>
<HEAD>
<TITLE> GERENCIADOR DE DISPOSITIVOS - PÁGINA DE ACESSO - LOCAL</TITLE></HEAD>
<BODY>
<IMG SRC = "Logotipo.jpg">
<FONT COLOR=GREEN>
<FONT FACE=ARIAL>
<H2><CENTER><B><U> PÁGINA DE ACESSO - LOCAL</B></U></H2>
</FONT>
</FONT>
<BR>
<form action="session_local.asp" method="get">
<B><FONT FACE=Arial>
<p>Nome: <input type="text" size="40" name="campo_nome"> </p>
<p>Senha: <input type="password" size="40" name="campo_senha"> </p>
<BR>
<input type="submit" value="Enviar"></CENTER>
</form></body></html>
43
• Acesso_p.asp
<!--pagina inicial de acesso onde o usuario deve entrar com nome e senha.
A pagina aciona a pagina "valida_p.asp"-->
<HTML>
<HEAD>
<TITLE> GERENCIADOR DE DISPOSITIVOS - PÁGINA DE ACESSO</TITLE></HEAD>
<BODY>
<IMG SRC = "Logotipo.jpg">
<FONT COLOR=GREEN>
<FONT FACE=ARIAL>
<H2><CENTER><B><U> PÁGINA DE ACESSO</B></U></H2>
</FONT>
</FONT>
<BR>
<form action="valida_p.asp" method="POST">
<B><FONT FACE=Arial>
<p>Nome: <input type="text" size="40" name="campo_nome"> </p>
<p>Senha: <input type="password" size="40" name="campo_senha"> </p>
<BR>
<input type="submit" value="Enviar"></CENTER>
</form></body></html>
44
• Atualiza_p.asp
<%
' Página de atualização do banco de dados, recebe dados da página "valida_p.asp"
vnome=Request.Form("campo_nome")
vdispositivo=Request.Form("listadispositivos")
vdata=Request.Form("campo_data")
vhora=Request.Form("campo_hora")
voperacao=Request.Form("campo_operacao")
Set DB = Server.CreateObject("ADODB.Connection")
DB.Open "db_powerline","",""
SQL="INSERT into Tab_Programa (Nome,Dispositivo,Data,Hora,Operacao) values
('"&vnome&"','"&vdispositivo&"','"&vdata&"','"&vhora&"','"&voperacao&"')"
set RS=DB.execute(SQL)
%>
<META HTTP-EQUIV="REFRESH" CONTENT="3; URL =acesso_p.asp">
<IMG SRC = "Logotipo.jpg">
<FONT COLOR=PURPLE>
<FONT FACE=ARIAL>
<H1><CENTER><B><U> <BR><BR>ATUALIZAÇÃO EXECUTADA COM SUCESSO
!!</B></U></CENTER></H1>
</FONT>
</FONT>
45
• Erro_local.asp
<!--página que é chamada quando o usuário entra com login inválido em "acesso_local.asp"-->
<HTML>
<HEAD>
<BODY BACKGROUND=Erro.jpg>
<TITLE> GERENCIADOR DE DISPOSITIVOS - ERRO DE ACESSO</TITLE></HEAD>
<META HTTP-EQUIV="REFRESH" CONTENT="3; URL =acesso_local.asp">
</HTML>
46
• Refresh_local.asp
<% 'Página que abre o tabela referente ao usuário conectado e verifica os dados para conexão
'Executa a atualização em tempo determinado, grava um arquivo .txt dos dados atualizados e grava no
cliente um cookie para leitura do programa em C %>
<%
path_do_arquivo = "c:/temp/aa.txt"
Const forReading = 1, forWriting = 2, forAppending = 8
Const TriDef = -2, TriTrue = -1, TriFalse = 0
'a linha abaixo gera o arquivo
arquivo = path_do_arquivo
'a linha abaixo abre a instância com o objeto Scripting. FileSystemObject
Set ObjFSO = CreateObject("Scripting.FileSystemObject")
'abaixo, a linha que cria o arquivo TXT especificado
objFSO.CreateTextFile(arquivo)
%>
<%
datasist = DATE
sisdata = CDATE(datasist)
horasist = FormatDateTime(DateAdd("h", -1, Now), 3)
Set DB = Server.CreateObject("ADODB.Connection")
DB.Open "db_powerline","",""
Set RS = Server.CreateObject("ADODB.RecordSet")
%>
<%
campo_nome=(Request.QueryString("campo_nome"))
Set DB = Server.CreateObject("ADODB.Connection")
DB.Open "db_powerline", "", ""
Set RS = DB.execute("SELECT * FROM Tab_Programa where Nome = '"&campo_nome&"' order by data
desc")
%>
<% Do Until RS.eof %>
<%gravadata = RS.fields("Data")%>
<%gravahora = RS.fields("Hora")%>
<%gravaoperacao = RS.fields("operacao")%>
<%
path_do_arquivo = "c:/temp/aa.txt"
hora2 = RS.fields("Hora")
diferenca = DateDiff("h",horasist,hora2)
47
'a linha abaixo gera o arquivo
arquivo = path_do_arquivo
'a linha abaixo abre a instância com o objeto Scripting. FileSystemObject
Set ObjFSO = CreateObject("Scripting.FileSystemObject")
If ObjFSO.FileExists(arquivo) = False then
'abaixo, a linha que cria o arquivo TXT especificado
objFSO.CreateTextFile(arquivo)
End If
'a linha abaixo abre o arquivo desejado.
Set ObjFile = objFSO.GetFile(arquivo)
'a linha abaixo diz o tipo de manipulação que será utilizada no arquivo TXT, no caso é para adicionar dados.
Set objStream = ObjFile.OpenAsTextStream(forAppending,TriDef)
'o comando WriteLine, abaixo, grava os dados no arquivo TXT especificado.
ObjStream.WriteLine gravanome
ObjStream.WriteLine gravadata
ObjStream.WriteLine gravahora
'abaixo, o objeto ObjStream é fechado
ObjStream.close
Set ObjStream = nothing
%>
<%
RS.MoveNext
Loop
%>
<%RS.MoveFirst%>
<% 'Bloco que gera o cookie no cliente%>
<%Response.Cookies("Zip")=gravaoperacao%>
<%Response.Cookies("Zip")=gravahora%>
<%Response.Cookies("Zip")=gravadata%>
<%Response.Cookies("Zip").Expires="Janeiro 1, 2004"%>
<%do while not RS.eof %>
<option><%=RS(0)%><br> <%=RS(1)%> <br><%=RS(2)%> <br><%=RS(3)%>
<br><%=RS(4)%><BR><BR></option>
<% RS.movenext
loop
%>
<%response.write"<br>"%>
<%response.write horasist%>
<%response.write"<br>"%>
<%response.write hora2%>
48
<%response.write"<br>"%>
<%response.write diferenca%>
<%
sql = ("DELETE * FROM Tab_Programa WHERE Data < date() ")
Set RS = DB.execute(sql)
%>
<%
if diferenca < 0 then
sql = ("DELETE * FROM Tab_Programa WHERE Data <= date() ")
Set RS = DB.execute(sql)
end if
%>
<IMG SRC = "Logotipo.jpg">
<%
DB.close
Set DB=Nothing
%>
<HTML>
<HEAD>
<TITLE> GERENCIADOR DE DISPOSITIVOS - PÁGINA DE ACESSO</TITLE></HEAD>
<META HTTP-EQUIV="REFRESH" CONTENT="10;
URL="refresh_local.asp?campo_nome="<%=campo_nome%>">
49
• Session_local.asp
<% 'Pagina que valida login e mantem uma sessao aberta para o usuario
'caso haja erro redireciona para erro_local.asp, senao
'redireciona para refresh_local.asp
%>
<%
Set DB = Server.CreateObject("ADODB.Connection")
DB.Open "db_powerline","",""
campo_nome=(Request.QueryString("campo_nome"))
campo_senha=(Request.QueryString("campo_senha"))
Set RS = Server.CreateObject("ADODB.RecordSet")
Set RS = DB.execute("SELECT * FROM Tab_Usuario WHERE Nome_Usuario = '"&campo_nome&"' and
Senha_Usuario = '"&campo_senha&"'" )
'*****NÃO COLOCAR NENHUMA TAG ANTES DE Response.Redirect*********
If RS.EOF then
Response.Redirect "erro_local.asp"
else
session("campo_nome") = campo_nome
Response.Redirect"refresh_local.asp?campo_nome="& campo_nome
End If
DB.close
%>
50
• Valida_p.asp
<% 'Página de validação de login do usuário, caso haja erro redireciona para pag_erro.asp. É mostrado o
status dos dispositivos e, nesta página é programada a operação a ser executada%>
<%
vnome=Request.Form("campo_nome")
vsenha=Request.Form("campo_senha")
Set DB = Server.CreateObject("ADODB.Connection")
DB.Open "db_powerline","",""
Set RS = Server.CreateObject("ADODB.RecordSet")
Set RS = DB.execute("SELECT * FROM Tab_Usuario WHERE Nome_Usuario = '"&vnome&"' and
Senha_Usuario = '"&vsenha&"'" )
'*****NÃO COLOCAR NENHUMA TAG ANTES DE Response.Redirect*********
If RS.EOF then
Response.Redirect "pag_erro.asp"
End If
SET Lista = Server.CreateObject("ADODB.RecordSet")
Lista.open "Select * FROM Tab_Programa where Nome = '"&vnome&"' Order By Dispositivo ",DB,3,3
SET Dispositivos = Server.CreateObject("ADODB.RecordSet")
Dispositivos.open "Select Dispositivo from Tab_Dispositivo Order By Dispositivo",DB,3,3
%>
<IMG SRC = "Logotipo.jpg">
<FONT COLOR=GREEN>
<FONT FACE=ARIAL>
<H2><CENTER><B><U> PÁGINA DE ATUALIZAÇÃO</B></U></CENTER></H2>
</FONT>
</FONT>
<FONT COLOR=Dark Purple>
<FONT FACE=ARIAL>
<H3><CENTER><B><U> Usuário <%Response.Write vnome%>
</B></U></CENTER></H3>
</FONT>
</FONT>
<HR WIDTH=85%>
<FONT COLOR=Green Copper>
<FONT FACE=ARIAL>
<H4>
               
   STATUS ATUAL
<P></P>
<!--cria lista com situaçao atual dos dispositivos-->
<% Do Until Lista.eof%>
51
               
   
<%=Lista.Fields("Dispositivo") %>
<%=Lista.Fields("Data") %>
<%=Lista.Fields("Hora") %>
<%=Lista.Fields("Operacao") %>
<BR>
<%
Lista.MoveNext
Loop
%>
</H4>
</FONT>
</FONT>
<P></P>
<HR WIDTH=85%>
<form action="atualiza_p.asp" method="POST">
<Table>
<!--popula combobox com nome dos dispositivos-->
Dispositivo:
<SELECT id=listadispositivos name=listadispositivos>
<%
Do While Not Dispositivos.EOF
Response.Write"<OPTION value=" &Chr(34) & Dispositivos.Fields("Dispositivo") &
Chr(34) & ">" &
Dispositivos.Fields("Dispositivo")& " </OPTION>"
Dispositivos.MoveNext
Loop
%>
</SELECT>
<p></p>
<%
'Response.Write "<TR><TD>Dispositivo: </TD><TD><INPUT id=usuarioID maxLength=20
name=campo_dispositivo 'size=15></TD><TD>dd/mm/aaaa</TD></TR>"
%>
<p></p>
<%
Response.Write "<TR><TD>Usuário: </TD><TD><INPUT name=campo_nome size=15 value="&
Chr(34)& RS.Fields("Nome_Usuario") & Chr(34)&"></TD></TR>"
%>
<p></p>
<%
Response.Write "<TR><TD>Data: </TD><TD><INPUT id=usuarioID maxLength=20 name=campo_data
size=15 ></TD><TD>dd/mm/aaaa</TD></TR>"
%>
<p></p>
<%
52
Response.Write "<TR><TD>Hora: </TD><TD><INPUT id=usuarioID maxLength=20 name=campo_hora
size=15 ></TD><TD>hh:mm</TD></TR>"
%>
<p></p>
</Table>
<%Response.Write "Operação:" %>
<input type="radio" name="campo_operacao" value="Liga">Ligar <input type="radio"
name="campo_operacao" value="Desl">Desligar
<P></P>
               
        <input type="submit" value="Atualizar">
<%
DB.close
Set DB=Nothing
%>
53
Anexo 3 – Listagem do Código Fonte do Programa C
54
•
Listagem do Código Fonte do Programa C
//--------------------------------------------------------------------------#include <vcl.h>
#pragma hdrstop
#include <condefs.h>
#include<iostream>
#include<fstream>
#include<string>
#include<stdio.h>
#include<conio.h>
#include<io.h>
#include<vcl.h>
#include<time.h>
#include<sys/types.h>
#include <locale>
#include <sstream>
#include "Unit1.h"
using namespace std;
//--------------------------------------------------------------------------#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//--------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//--------------------------------------------------------------------------void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Label1->Caption = TimeToStr(Now());
Label8->Caption = DateToStr(Now());
}
//--------------------------------------------------------------------------void __fastcall TForm1::Timer2Timer(TObject *Sender)
{
TDateTime data;
int ndata=1;
int nhora=1;
int nstatus=1;
int espera;
char c;
char hBuffer[255], hBuffer2[255];
TDateTime tTmp1, tTmp2, tTmp3, tTmp4;
string sLine;
ifstream *arq;
55
ifstream lecookie("c:/Documents and Settings/joarez/cookies/[email protected][1].txt");
if (lecookie.is_open()==false){
lecookie.open("c:/Documents and Settings/joarez/cookies/[email protected][2].txt");
}
ifstream letabela2("C:/Documents and Settings/joarez/Meus documentos/CookieBuider/Tabela2.txt");
FILE *arquivo;
arquivo=fopen("Tabela.txt","w");
fclose(arquivo);
arquivo=fopen("Tabela.txt","at");
FILE *arquivo2;
arquivo2=fopen("Tabela2.txt","w");
while(!lecookie.eof())
{
lecookie.getline(hBuffer,255,'=');
lecookie.getline(hBuffer,255,'&');
fprintf(arquivo,hBuffer);
putc('\n',arquivo);
}
fclose(arquivo);
arquivo=fopen("Tabela.txt","r+");
int b = fseek(arquivo,0,SEEK_SET);
c = getc(arquivo);
while(ndata < 8)
{
putc(c,arquivo2);
c=getc(arquivo);
if(c == '%')
{
putc('/',arquivo2);
c=getc(arquivo);
c=getc(arquivo);
c=getc(arquivo);
}
ndata++;
}
while(nhora < 8)
{
putc(c,arquivo2);
c=getc(arquivo);
if(c == '%')
{
putc(':',arquivo2);
c=getc(arquivo);
56
c=getc(arquivo);
c=getc(arquivo);
}
nhora++;
}
while(nstatus < 6)
{
putc(c,arquivo2);
c=getc(arquivo);
nstatus++;
}
fclose(arquivo);
fclose(arquivo2);
//*****************Compara Data - Hora e Operacao*******************************
_DX = 0x378;
_AL = 0;
__emit__ (0xEE);//Instrução da CPU
letabela2.getline(hBuffer2,255);
sLine = hBuffer2;
Label9->Caption = sLine.c_str();
tTmp3 = StrToDate(Label8->Caption);
tTmp4 = StrToDate(Label9->Caption);
if(tTmp3 == tTmp4)
{
letabela2.getline(hBuffer2,255);
sLine = hBuffer2;
Label2->Caption = sLine.c_str();
tTmp1 = StrToTime(Label1->Caption);
tTmp2 = StrToTime(Label2->Caption);
if(tTmp1 == tTmp2)
{
letabela2.getline(hBuffer2,255);
Label11->Caption = hBuffer2;
//*******************Aciona Porta Paralela**************************************
for(espera=0; espera<4; espera++)
{
_DX = 0x378;
_AL = 0;
__emit__ (0xEE);//Instrução da CPU
Sleep (3000);
if(Label11->Caption == "Liga")
{
57
Label12->Caption = "Aciona";
_DX = 0x378;
_AL = 1;
__emit__ (0xEE);//Instrução da CPU
Sleep (3000);
}
else if(Label11->Caption == "Desl")
{
Label12->Caption = "Desliga" ;
_DX = 0x378;
_AL = 2;
__emit__ (0xEE);//Instrução da CPU
Sleep(3000);
}
}
}
}
}
//---------------------------------------------------------------------------
58
Download