Вы находитесь на странице: 1из 41

CURSO DE ENGENHARIA DA COMPUTAO

EVELYN CRISTINA LIMA DE OLIVEIRA JEFFERSON SILVA DOS SANTOS VIVIANA PINA NOGUEIRA

SISTEMA DE CONTROLE DE ACESSO COM CDIGO DE BARRAS

BELM 2007

CURSO DE ENGENHARIA DA COMPUTAO

EVELYN CRISTINA LIMA DE OLIVEIRA JEFFERSON SILVA DOS SANTOS VIVIANA PINA NOGUEIRA

SISTEMA DE CONTROLE DE ACESSO COM CDIGO DE BARRAS

Projeto apresentado como requisito para obteno de nota final na avaliao da Disciplina Projetos em Engenharia da Computao. Orientador: Prof. M.Sc. Kleiber Tenrio.

BELM 2007

CURSO DE ENGENHARIA DA COMPUTAO

EVELYN CRISTINA LIMA DE OLIVEIRA JEFFERSON SILVA DOS SANTOS VIVIANA PINA NOGUEIRA

SISTEMA DE CONTROLE DE ACESSO COM CDIGO DE BARRAS


Esta monografia foi julgada adequada e aprovada pela Banca Examinadora constitudas pelos professores. Data ____/____/____ Conceito: _______ _______________________________________ Prof. M.Sc. Kleiber Tenrio de Souza Orientador IESAM

_______________________________________ Prof. M.Sc. Mrcio Nazareno de Arajo Moscoso

_______________________________________ Prof. M.Sc. Jos Felipe Almeida

BELM-PAR 2007

AGRADECIMENTOS s nossas famlias, que nos deram apoio e que nos proporcionam estar na faculdade contribuindo para o nosso crescimento profissional. Ao Coordenador do Curso de Engenharia da Computao, Dionne Monteiro, por ter nos orientado nos momentos que mais precisamos. Ao professor Kleiber Tenrio por ter nos orientado no decorrer do ano com o nosso projeto. Ao professor Mrcio Moscoso por ter nos proporcionado uma nova oportunidade. Aos tcnicos dos laboratrios que utilizamos para construir nosso projeto, pela pacincia e dedicao por ns dispensadas. Rosilene Garcia, pela contribuio na formatao e normalizao desse trabalho.

RESUMO Os sistemas de identificao e controle de acesso cumprem uma funo importante no aparato de Segurana das Instituies. Vrias tecnologias esto disponveis para construo desse tipo de sistema. O objetivo deste projeto apresentar a comunicao entre hardware e software em um controle de acesso mais barato para ser utilizado em estabelecimentos comerciais por meio de insero de um carto de cdigo de barras a ser utilizado pelos funcionrios do estabelecimento. Cada funcionrio ter seu cdigo de identificao gravado em um carto, o qual ser utilizado para permitir ou bloquear seu acesso a uma determinada rea dentro das dependncias do estabelecimento. Alm disso, todo o histrico de movimentao dos funcionrios estar disponvel em uma base de dados para posterior anlise e gerao de estatsticas.

Palavras-Chave: Controle de acesso, Cdigo de Barras, Hardware, Software.

ABSTRACT The systems for the identification and control of access fulfill an important role in the security apparatus of the institutions. Several technologies are available for construction of this type of system. The objective of this project is to provide communication between hardware and software in a control of access cheaper for use in commercial establishments through insertion of a card of the barcode to be used by officials of the establishment. Each employee will have its code of identification stored in a card, which will be used to allow or block their access to a particular area within the premises of the establishment. Moreover, the entire history of movement of officials will be available in a database for later analysis and generation of statistics.

Keywords: Access Control, Code of bars, Hardware, Software.

LISTA DE FIGURAS Figura 1- Cdigo de barra numrico ..................................................................................07 Figura 2- Cdigo de barra alfanumrico ............................................................................07 Figura 3- Sinais de enquadramento do cdigo de barras ...................................................07 Figura 4- Esquematizao de leitura e comunicao com o computador ..........................08 Figura 5- Diagrama de casos de uso do Sistema ...............................................................09 Figura 6- Diagrama de atividade do sistema .....................................................................10 Figura 7- Interface inicial do sistema ................................................................................11 Figura 8- Mensagem do login do administrador do sistema .............................................11 Figura 9- Interface do administrador logado .....................................................................12 Figura 10- Interface de edio de usurio .........................................................................12 Figura 11- Interface de edio de administrador do sistema .............................................13 Figura 12- Interface de edio de funes do sistema .......................................................13 Figura 13- Interface de edio de pontos de acesso do sistema ........................................14 Figura 14- Interface de edio de pontos de acesso de cada funo do sistema ...............14 Figura 15- Interface de edio de pontos de acesso de cada administrador do sistema ....15 Figura 16- Banco de Dados - Relao Usurio-Administrador ........................................16 Figura 17- Banco de Dados - Relao Usurio-Funo ....................................................16 Figura 18- Banco de Dados - Relao Funo-Ponto de Acesso ......................................17 Figura 19- Banco de Dados - Relao Administrador-Ponto de Acesso ..........................18 Figura 20- Banco de Dados - Relao Usurio-Ponto de Acesso .....................................18 Figura 21- Banco de Dados conectado com a interface em JAVA ...................................19 Figura 22- Modelagem do banco de dados no JUDE ........................................................19 Figura 23- Teste do leitor de cdigo de barra via porta serial ...........................................20 Figura 24- Cdigo de comunicao serial em JAVA ........................................................21

SUMRIO 1 INTRODUO .....................................................................................................................6 3 DESCRIO DO SISTEMA ...............................................................................................9 4 DESCRIO DOS SOFTWARES E PROTOCOLOS DE COMUNICAO.............11 4.1 INTERFACE GRFICA: ..............................................................................................11 4.2 BANCO DE DADOS .....................................................................................................15 5 RESULTADOS ....................................................................................................................20 6 CONSIDERAES FINAIS..............................................................................................22 REFERNCIAS .....................................................................................................................23 ANEXOS .................................................................................................................................24

1 INTRODUO O sistema de cdigo de barras associado ao controle de acesso oferece um nvel de segurana razovel, permitindo que seja utilizado em estabelecimento de pequeno e mdio porte por ser um sistema de baixo custo[2]. O cdigo de barras constitudo por grficos gerados a partir de nmeros, letras ou smbolos, gerando uma codificao especfica. Este tipo de cdigo possui diversos tipos e tamanhos que so lidos atravs de uma leitora ptica especfica. Na utilizao em controle de acesso o funcionrio possuir um carto contendo o seu cdigo pessoal gravado em forma de cdigo de barras, o qual ser utilizado no momento de fazer a validao que permitir o acesso ao local desejado. Neste trabalho, foi desenvolvido um sistema onde a leitora de Cdigo de Barras, atravs do protocolo de comunicao serial RS-232, se comunica com o software desenvolvido no Projeto. O software possuir uma Interface para os administradores do sistema, atravs da qual ser possvel remover ou alterar os pontos de acesso de cada usurio, bem como realizar a incluso ou excluso de usurios no Banco de Dados do sistema. O hardware dever ser capaz de ler as informaes existentes no carto e transmitir para o software, que por sua vez realiza uma busca no Banco de Dados para verificar se o cdigo lido pertence a algum funcionrio, realizando ou no o acesso desejado. Com isso, o objetivo do projeto mostrar a importncia, da utilizao de um controle de acesso simples utilizando a tecnologia de cdigo de barras, a fim de elevar a segurana em estabelecimentos comerciais como empresas de pequeno e mdio porte.

2 CDIGO DE BARRAS Cdigo de barras a representao de um pequeno conjunto de nmeros e/ou letras, impressos de uma forma que o leitor ptico possa interpretar: o preto retm a luz e o branco a reflete, de forma que o leitor capture os sinais e interprete qual a seqncia de nmeros ou letras representada pelas barras [1]. Podem ser classificados de duas maneiras: cdigo de barras numricos e alfanumricos. O primeiro possui sua codificao baseada apenas em nmeros, em contra partida, os alfanumricos podem ser efetuados com combinaes de nmeros, letras e caracteres especiais como mostra as Figuras 1 e 2.

Figura 1: Cdigo de barra numrico. FONTE:[http://www.macoratti.net/cod_bar.htm]

Figura 2: cdigo de barra alfanumrico. FONTE:[http://br.geocities.com/powervbasic/artigos/codebar.html]

Os cdigos de barras possuem diversos tamanhos que so determinados atravs dos sinais de enquadramento. Esses sinais delimitam uma certa rea retangular na qual o cdigo ir se localizar como mostra a Figura 3.

Figura 3: Sinais de enquadramento do cdigo de barras. FONTE: [http://www.macoratti.net/cod_bar.htm]

Este tipo de tecnologia tem como principais vantagens a rapidez, na qual h um ganho de tempo no processamento dos dados e no atendimento aos usurios; a economia e a facilidade do sistema operar com grandes quantidades de itens. O processo de leitura do cdigo de barras se d atravs de uma leitora ptica no qual emitida uma luz vermelha, onde ao entrar em contato com a superfcie do cdigo de barras a luz refletida pelas barras brancas (espaos), representadas pelo nvel lgico baixo (bit igual a 0) e absorvida pelas barras pretas, representando nvel lgico alto (bit igual a 1). Desta forma, o scanner l os sinais recebidos e os transforma em sinais eltricos e posteriormente decodifica estes sinais de modo que sejam inteligveis, como nmeros ou caracteres alfanumricos. A Figura 4 mostra uma viso geral da arquitetura do sistema.

Figura 4: Esquematizao de leitura e comunicao com o computador. FONTE: [Arquivo pessoal]

3 DESCRIO DO SISTEMA Neste projeto os cdigos de barras sero utilizados de modo que cada usurio possuir seu carto com o seu especifico cdigo de barras e quando realizar o acesso em determinada rea ter que utilizar seu carto para fazer a validao no sistema. O sistema por sua vez far uma consulta ao banco de dados para verificar se o cdigo lido pertence ao banco de usurios cadastrados no sistema, e verifica tambm se esse usurio tem permisso ou no para acessar a rea pretendida, pois de acordo som a funo de cada usurio ser estabelecidas restries de acesso como: professores, alunos e funcionrios. Os alunos no podero ter acesso todas as reas da instituio, para ele obter acesso nas reas restritas professores e funcionrios este aluno dever possuir uma liberao que s poder ser concedida pelo administrador do sistema, o mesmo acontece para os outros usurios. Segundo a UML, o diagrama de casos de uso do sistema composto por 3 atores e 7 casos de uso como mostrado na figura seguinte. O diagrama de atividade do sistema apresenta as seguintes aes:

Figura 5: Diagrama de casos de uso do Sistema. FONTE: [Arquivo pessoal]

10

Usurio l o cdigo de barras com a leitora Consulta no banco de dados para verificar se o cdigo est cadastrado Se estiver cadastrado o sistema valida o acesso. Acesso liberado. Caso contrrio, sistema informa Usurio no cadastrado. O fluxo do processo est mostrado na figura seguinte.

Figura 6: Diagrama de atividade do sistema. FONTE: [Arquivo pessoal]

11

4 DESCRIO DOS SOFTWARES E PROTOCOLOS DE COMUNICAO 4.1 INTERFACE GRFICA:

A interface foi construda como o auxilio da IDE netbeans 6.0, basicamente ela serve para proporcionar ao usurio administrador um meio amigvel de interao como o banco de dados. Tambm, em conjunto com a interface que a API de comunicao serial ir trabalhar. A primeira imagem (Figura 7) a tela de login do administrador, como mostra a figura a seguir.

Figura 7: Interface inicial do sistema. FONTE: [Arquivo pessoal]

Aps a introduo do login e da senha o sistema ir fazer uma consulta no banco de dados para verificar se os dados informados esto corretos, se os dados estiverem corretos ser mostrada uma prxima tela de confirmao. Como mostrado no Figura 8.

Figura 8: Mensagem do login do administrador do sistema. FONTE: [Arquivo pessoal]

12

Logo em seguida a confirmao de acesso do administrador, ser mostrada a tela principal do sistema (Figura 9)onde o administrador ir editar os dados existentes no banco de dados como: Adio, excluso de usurios Adio, excluso de administradores Adio e remoo de funes Adio e remoo de pontos de acesso

Figura 9: Interface do administrador logado. FONTE: [Arquivo pessoal]

Na tela referente edio dos usurios (Figura 10), o administrador vai ter as opes de adicionar e excluir, no momento em que um novo usurio for adicionado no sistema, ser mostrado uma mensagem confirmando a incluso.

Figura 10: Interface de edio de usurio. FONTE: [Arquivo pessoal]

13

No momento em que um usurio for excludo do sistema, tambm ser mostrada uma mensagem informando que a operao foi realizada com sucesso. Na tela referente edio de administradores (Figura 11), as opes so as mesmas da tela de edio de usurios.

Figura 11: Interface de edio de administrador do sistema. FONTE: [Arquivo pessoal]

Se houver alguma remoo de usurios, ser mostrada uma mensagem informando que o usurio foi excludo com sucesso. Na tela referente s funes dos usurios (Figura 12), o administrador poder inserir e remover funes. No momento em que a funo for inserida ir aparecer uma mensagem de insero foi realizada.

Figura 12: Interface de edio de funes do sistema. FONTE: [Arquivo pessoal]

14

Quando alguma funo for deletada, ir aparecer uma mensagem informando que a funo foi deletada. Na tela referente aos pontos de acesso dos usurios (Figura 13), o administrador poder inserir e remover pontos. No momento em que a local for inserido ir aparecer uma mensagem de insero foi realizada.

Figura 13: Interface de edio de pontos de acesso do sistema. FONTE: [Arquivo pessoal]

Quando algum local for deletado, ir aparecer uma mensagem informando que o local foi deletado. Na tela referente aos pontos de acesso e funes (Figura 14), o administrador poder inserir e remover os pontos de acesso que cada funes pode acessar, ao final da operao de insero aparecer uma mensagem informando que a insero foi bem sucedida.

Figura 14: Interface de edio de pontos de acesso de cada funo do sistema. FONTE: [Arquivo pessoal]

15

Quando algum local for deletado, ir aparecer uma mensagem informando que o local foi deletado. Na tela referente aos administradores e funes (Figura 15), o administrador poder inserir e remover os pontos de acesso que cada administrador pode acessar, ao final da operao de insero aparecer uma mensagem informando que a insero foi bem sucedida.

Figura 15: Interface de edio de pontos de acesso de cada administrador do sistema. FONTE: [Arquivo pessoal]

4.2 BANCO DE DADOS Banco de dados constitudo de oito tabelas, usuario, funo, administrador, pAcesso, usuario_funcao, pAcesso_funcao, pAcesso_admin e acesso. Na tabela usuario ser armazenado todos os dados das pessoas que iro utilizar o sistema. J na tabela administrador sero armazenados apenas os usurios que iro poder realizar alteraes no sistema. Entre a tabela usuario e a tabela administrador existe um relacionamento de generalizao / especializao (Figura 16). Esse relacionamento existe para evitar a redundncia de dados entre as duas tabelas, pois se no existisse esse relacionamento, todos os dados da tabela usuario teria que ser digitado novamente na tabela administrador.

16

Figura 16: Banco de Dados - Relao Usurio-Administrador. FONTE: [Arquivo Pessoal]

Na tabela funcao ser armazenadas todas as provveis funes que o usurio pode desempenhar Ex: Aluno, Professor, Secretria... Entre a tabela usuario e a tabela funcao existe um relacionamento muitos para muitos (Figura 17). Deste relacionamento gerada uma terceira tabela. Na tabela usuario_funcao ser armazenado todos os usurios e suas respectivas funes, pois como o prprio relacionamento indica, um usurio pode exercer mais de uma funo dentro do sistema, assim como uma funo pode ser exercida por mais de um usurio. Ex: Joo pode ser Monitor e Aluno. Maria e Joana podem ser Secretrias

Figura 17: Banco de Dados - Relao Usurio-Funo. FONTE: [Arquivo Pessoal]

Na tabela pAcesso ser armazenadas todos os pontos de acesso existentes no sistema. Ex: Sala de aula, Sala dos Professores, Sala do diretor, Laboratrio.

17

Entre as tabelas funcao e pAcesso existe um relacionamento de muitos para muitos (Figura 18). Assim como no relacionamento anterior, ser gerada uma terceira tabela. Na tabela pAcesso_funcao sero armazenadas todas as funes e os pontos das quais cada funo vai ter autorizao de acessar. Pois como o relacionamento indica, uma determinada funo pode ter autorizao para acessar mais de um local, assim como, cada local pode ser acessado por mais de uma funo. Ex: Professor pode acessar Sala de aula e Sala dos professores Laboratrio pode ser acessado por Professor e Monitor

Figura 18: Banco de Dados - Relao Funo-Ponto de Acesso. FONTE: [Arquivo Pessoal]

Entre as tabelas pAcesso e administrador tambm existe um relacionamento muitos para muitos (Figura 19), e como nos exemplos anteriores, ser gerada uma terceira tabela. Na tabela pAcesso_admin ser armazenados todos os pontos onde os administradores tero prioridade pra acessar. Pois como o relacionamento indica, um administrador pode acessar vrios locais, e um local pode ser acessado por qualquer administrador. Ex: Madalena. administrador Jose pode acessar Gerencia da Rede, Secretaria Sala dos Servidores pode ser acessada pelos Administradores Jorge e

18

Figura 19: Banco de Dados - Relao Administrador-Ponto de Acesso. FONTE: [Arquivo Pessoal]

A tabela acesso ser o local onde ficar armazenado todos os acessos de todos os usurios, essa tabela tem um relacionamento um para muitos com a tabela usurios (Figura 20), pois cada usurio poder fazer quantos acesso forem permitidos e cada acesso s poder ser executado por apenas um usurio. Ex: usurio A pode fazer acesso s 12:35 e as 13:55. O acesso executado s 16:32 s pode ter sido executado pelo usurio C.

Figura 20: Banco de Dados - Relao Usurio-Ponto de Acesso. FONTE: [Arquivo Pessoal]

A modelagem grfica do banco de dados foi feita toda com o auxilio do DBDesigner, alm de gerar o banco graficamente, tambm gera o script do banco SQL que ser executado no PostgreSQL, a seguir um trecho de exemplo do script (Figura 21).

19

Figura 21: Banco de Dados conectado com a interface em JAVA. FONTE: [Arquivo Pessoal]

O script completo e a imagem completa da modelagem no DBDesigner podem ser observados nos anexos A e B. Segundo os conceitos da UML o banco de dados esta modelado com os relacionamentos e a cardinalidade necessria conforme a Figura 22.

Figura 22: Modelagem do banco de dados no JUDE. FONTE: [Arquivo Pessoal]

20

5 RESULTADOS No decorrer deste projeto fizemos alguns testes com o leitor de cdigo de barras, um deles foi no Hyper terminal do computador, onde podemos verificar o recebimento dos caracteres via porta serial, conforme mostra a Figura 23:

Figura 23: Teste do leitor de cdigo de barra via porta serial. FONTE: [Arquivo Pessoal]

Na figura acima, mostrado de forma bem simples o processo de leitura, em que o leitor ao entrar em contato com um carto contendo um cdigo de barra especfico, detecta e envia para o computador atravs do pino TX da porta serial, o cdigo do carto. Como mostra a imagem, fizemos teste com vrios cartes. Na comunicao com a interface a string de caracteres recebida com o auxilio da API Java comunication, um trecho do cdigo a seguir apresenta a classe, mtodos e funes utilizadas (Figura 24).

21

Figura 24: Cdigo de comunicao serial em JAVA. FONTE: [Arquivo pessoal]

Onde foi criada uma classe Stest2 com estendida a classe SerialComm, criado um objeto chamado sc2 e a partir dele ser chamados alguns mtodos para que se possa inicializar e permitir a leitura na porta serial.

22

6 CONSIDERAES FINAIS Este projeto foi realizado com o objetivo de desenvolver o Sistema de Controle de Acesso
utilizando Cdigo de Barras. de grande utilidade, pois possui baixo custo e viabiliza controle no acesso de pessoas podendo ser implementado em pequenas e mdias empresas. No decorrer do projeto tivemos dificuldades em relao com a comunicao da leitora com a interface, mas o problema foi solucionado no decorrer da programao em Java.

23

REFERNCIAS [1] Cdigo de barras sem mistrios. Disponvel em: <http://www.microsoft.com/brasil/msdn/Tecnologias/vsnet/CodigoBarras.mspx> [2] Cdigo de Barras. Disponvel em: <www.fesppr.br/~erico/x2004%20Trabalhos%20s.305/305%20codigo%20de%20barras.ppt > [3] Cdigo de Barras - Conceitos Bsicos e Utilizao no VB. Disponvel em: <http://www.macoratti.net/cod_bar.htm>

[4] Cdigo de Barras no Visual Basic e Crystal Reports. Disponvel em: <http://br.geocities.com/powervbasic/artigos/codebar.html> [5] Controle de acesso com cdigo de barras e acionamento de tranca eletromagntica. Disponvel em: <www.inf.pucrs.br/~eduardob/disciplinas/ProgPerif/sem06.2/trabalhos/tp1/g2/Relatorio.pdf> [6] DEITEL, H M; DEITEL, P J. ; DEITEL, P J. Java: como programar. 4.ed. Porto Alegre: Bookman, 2002. [7] PRESSMAN, Roger S. . Engenharia de software. Sao Paulo: Makron Books do Brasil, 1995. [8] HEUSER, Carlos Alberto. . Projeto de banco de dados. 5.ed. Porto Alegre, RS: Sagra Luzzatto, 2004. [9] SILBERSCHATZ, Abraham; KORTH, Henry F; SUDARSHAN, S. ; KORTH, Henry F; SUDARSHAN, S. Sistema de bancos de dados. 3.ed. Sao Paulo: Makron Books, 1999.

24

ANEXOS

25

Anexo A - Script Banco de Dados CREATE TABLE funcao ( funcao CHAR NOT NULL, PRIMARY KEY(funcao) ); CREATE TABLE pAcesso ( Ponto CHAR NOT NULL, PRIMARY KEY(Ponto) ); CREATE TABLE usuario ( codbarra CHAR NOT NULL, RG CHAR NULL, CPF CHAR NULL, Nome CHAR NULL, Sobrenome CHAR NULL, Logradouro CHAR NULL, Numero CHAR NULL, Telefone CHAR NULL, Data_Nascimento DATE NULL, Email CHAR NULL, Data_Inclusao DATE NULL, PRIMARY KEY(codbarra) ); CREATE TABLE administrador ( usuario_codbarra CHAR NOT NULL, Data_inicio DATE NOT NULL, Data_fim DATE NULL, Senha CHAR NULL, PRIMARY KEY(usuario_codbarra), FOREIGN KEY(usuario_codbarra) REFERENCES usuario(codbarra) ON DELETE NO ACTION

26

ON UPDATE NO ACTION ); CREATE TABLE acesso ( idacesso INTEGER NOT NULL, usuario_codbarra CHAR NOT NULL, Data_2 DATE NULL, PRIMARY KEY(idacesso, usuario_codbarra), FOREIGN KEY(usuario_codbarra) REFERENCES usuario(codbarra) ON DELETE NO ACTION ON UPDATE NO ACTION ); CREATE TABLE usuario_funcao ( usuario_codbarra CHAR NOT NULL, funcao_funcao CHAR NOT NULL, PRIMARY KEY(usuario_codbarra, funcao_funcao), FOREIGN KEY(usuario_codbarra) REFERENCES usuario(codbarra) ON DELETE NO ACTION ON UPDATE NO ACTION, FOREIGN KEY(funcao_funcao) REFERENCES funcao(funcao) ON DELETE NO ACTION ON UPDATE NO ACTION ); CREATE TABLE admin_pAcesso ( administrador_usuario_codbarra CHAR NOT NULL, pAcesso_Ponto CHAR NOT NULL, PRIMARY KEY(administrador_usuario_codbarra, pAcesso_Ponto), FOREIGN KEY(administrador_usuario_codbarra) REFERENCES administrador(usuario_codbarra) ON DELETE NO ACTION ON UPDATE NO ACTION,

27

FOREIGN KEY(pAcesso_Ponto) REFERENCES pAcesso(Ponto) ON DELETE NO ACTION ON UPDATE NO ACTION ); CREATE TABLE funcao_pAcesso ( funcao_funcao CHAR NOT NULL, pAcesso_Ponto CHAR NOT NULL, PRIMARY KEY(funcao_funcao, pAcesso_Ponto), FOREIGN KEY(funcao_funcao) REFERENCES funcao(funcao) ON DELETE NO ACTION ON UPDATE NO ACTION, FOREIGN KEY(pAcesso_Ponto) REFERENCES pAcesso(Ponto) ON DELETE NO ACTION ON UPDATE NO ACTION );

28

Anexo B Modelagem do Banco de Dados no DBDesign

29

Anexo C Classe de conexo do Postgres com o Netbeans package codbarra; import javax.swing.*; import java.sql.*; public class conectar { public void connect() { try { Class.forName("org.postgresql.Driver");} catch (ClassNotFoundException cnfe) { JOptionPane.showMessageDialog(null,"Drive Nao encontrado"); cnfe.printStackTrace();} String url="jdbc:postgresql://localhost:5432/codbarra"; String usr="postgres"; String pwd="postgre"; try { db=DriverManager.getConnection(url, usr, pwd);} catch(SQLException se) { JOptionPane.showMessageDialog(null,"Nao foi possivel conectar no banco "+url+"/"+usr); se.printStackTrace();} try { st=db.createStatement();} catch(SQLException se) { JOptionPane.showMessageDialog(null,"Couldn't create a statement."); se.printStackTrace();} } ResultSet rs=null; Connection db=null; and password Statement st=null;} // set of data to be returned // connection object needs database name, database user name // sets a SQL command // connects to database // loads the driver

30

Anexo D Trecho do cdigo Principal private void formWindowOpened(java.awt.event.WindowEvent evt) { conectar Conectar = new conectar(); Conectar.connect(); } private void acessarActionPerformed(java.awt.event.ActionEvent evt) { String log, sen, time; log = login.getText().trim(); sen = senha.getText().trim(); time=getDateTime(); Stest2 stest = new Stest2(); if ( stest.PortaExiste("COM1") == true) { JOptionPane.showMessageDialog(null,"Iniciando comunicao!"); Stest2 st2 = new Stest2(); if ( st2.PortaExiste("COM1") == true) { JOptionPane.showMessageDialog(null,"Iniciando comunicao!"); //System.out.println("Iniciando comunicao!"); SComm sc2 = new SComm("COM1",9600,2000); sc2.HabilitarLeitura(); sc2.ObterIdDaPorta(); sc2.AbrirPorta(); sc2.LerDados(); sc2.FecharCom(); }

31

Anexo E Classe de conexo serial em JAVA (parte I) //COMUNICAO SERIAL UTILIZANDO A API DA SUN //************************************************************************* // CLASSE Scomm.java PARTE DO PACKAGE SrCom //************************************************************************* package codbarra; import javax.comm.*; import java.io.*; //classe Principal public class SComm implements Runnable, SerialPortEventListener { //propriedades private String Porta; public String Dadoslidos; public int nodeBytes; private int baudrate; private int timeout; private CommPortIdentifier cp; private SerialPort porta; private OutputStream saida; private InputStream entrada; private Thread threadLeitura; //indicadores private boolean IDPortaOK; //true porta EXISTE private boolean PortaOK;// true porta aberta private boolean Leitura; private boolean Escrita; //construtor default paridade : par //baudrate: 9600 bps stopbits: 2 COM 1 public SComm() { Porta = "COM1"; baudrate = 9600; timeout = 1000; }; //um Objeto ComObj passado ao construtor //com detalhes de qual porta abrir

32

//e informaes sobre configuraes public SComm( String p , int b , int t ){ this.Porta = p; this.baudrate = b; this.timeout = t; }; //habilita escrita de dados public void HabilitarEscrita(){ Escrita = true; Leitura = false; } //habilita leitura de dados public void HabilitarLeitura(){ Escrita = false; Leitura = true; } //Obtm o ID da PORTA public void ObterIdDaPorta(){ try { cp = CommPortIdentifier.getPortIdentifier(Porta); if ( cp == null ) { System.out.println("A " + Porta + " nao existe!" ); System.out.println("ERRO!Abortando..." ); IDPortaOK = false; System.exit(1); } IDPortaOK = true; } catch (Exception e) { System.out.println("Erro durante o procedimento. STATUS" + e ); IDPortaOK = false; System.exit(1); } } //Abre a comunicao da porta public void AbrirPorta(){ try {

33

porta = (SerialPort)cp.open("SComm",timeout); PortaOK = true; System.out.println("Porta aberta com sucesso!"); //configurar parmetros porta.setSerialPortParams(baudrate, porta.DATABITS_8, porta.STOPBITS_2, porta.PARITY_NONE); } catch (Exception e) { PortaOK = false; System.out.println("Erro ao abrir a porta! STATUS: " + e ); System.exit(1); } } //funo que envie um bit para a porta serial public void EnviarUmaString(String msg){ if (Escrita==true) { try { saida = porta.getOutputStream(); System.out.println("FLUXO OK!"); } catch (Exception e) { System.out.println("Erro.STATUS: " + e ); } try { System.out.println("Enviando um byte para " + Porta ); System.out.println("Enviando : " + msg ); saida.write(msg.getBytes()); Thread.sleep(100); saida.flush(); } catch (Exception e) { System.out.println("Houve um erro durante o envio. "); System.out.println("STATUS: " + e ); System.exit(1); } } else { System.exit(1);

34

} } //leitura de dados na serial public void LerDados(){ if (Escrita == false){ try { entrada = porta.getInputStream(); System.out.println("FLUXO OK!"); } catch (Exception e) { System.out.println("Erro.STATUS: " + e ); System.exit(1); } try { porta.addEventListener(this); System.out.println("SUCESSO. Porta aguardando..."); } catch (Exception e) { System.out.println("Erro ao criar listener: "); System.out.println("STATUS: " + e); System.exit(1); } porta.notifyOnDataAvailable(true); try { threadLeitura = new Thread(this); threadLeitura.start(); } catch (Exception e) { System.out.println("Erro ao iniciar leitura: " + e ); } } } //mtodo RUN da thread de leitura // @Override public void run(){ try { Thread.sleep(5000); } catch (Exception e) { System.out.println("Erro. Status = " + e );

35

} } //gerenciador de eventos de leitura na serial // @Override public void serialEvent(SerialPortEvent ev){ switch (ev.getEventType()) { case SerialPortEvent.BI: case SerialPortEvent.OE: case SerialPortEvent.FE: case SerialPortEvent.PE: case SerialPortEvent.CD: case SerialPortEvent.CTS: case SerialPortEvent.DSR: case SerialPortEvent.RI: case SerialPortEvent.OUTPUT_BUFFER_EMPTY: break; case SerialPortEvent.DATA_AVAILABLE: byte[] bufferLeitura = new byte[20]; try { while ( entrada.available() > 0 ) { nodeBytes = entrada.read(bufferLeitura); } String Dadoslidos = new String(bufferLeitura); if (bufferLeitura.length == 0) { System.out.println("Nada lido!"); } else if (bufferLeitura.length == 1 ){ System.out.println("Apenas um byte foi lido!"); } else { System.out.println(Dadoslidos); } } catch (Exception e) { System.out.println("Erro durante a leitura: " + e ); } System.out.println("n.o de bytes lidos : " + nodeBytes ); break; }

36

} //funo que fecha a conexo public void FecharCom(){ try { porta.close(); System.out.println("CONEXAO FECHADA>>FIM.."); } catch (Exception e) { System.out.println("ERRO AO FECHAR. STATUS: " + e ); System.exit(0); } } //Acessores public String obterPorta(){ return Porta; } public int obterBaudrate(){ return baudrate; } }

37

Anexo F Classe de conexo serial em JAVA (parte II) //COMUNICAO SERIAL UTILIZANDO A API DA SUN //************************************************************************* // CLASSE SerialCom.java PARTE DO PACKAGE SrCom //************************************************************************* package codbarra; import javax.comm.*; import java.io.*; import java.util.*; public class SerialComm { //********************************* //Variveis //********************************* //variveis para identificar portas protected String[] portas; protected Enumeration listaDePortas; //construtor public SerialComm(){ listaDePortas = CommPortIdentifier.getPortIdentifiers(); } //retorna as portas disponveis public String[] ObterPortas(){ return portas; } //Copia portas para um Array protected void ListarPortas(){ int i = 0; portas = new String[10]; while (listaDePortas.hasMoreElements()) { CommPortIdentifier ips = (CommPortIdentifier)listaDePortas.nextElement(); portas[i] = ips.getName(); i++; } }

38

//pesquisa se a Porta existe @SuppressWarnings("empty-statement") public boolean PortaExiste(String COMp){ String temp; boolean e = false; while (listaDePortas.hasMoreElements()) { CommPortIdentifier ips = (CommPortIdentifier)listaDePortas.nextElement(); temp = ips.getName(); if (temp.equals(COMp)== true) { e = true; }; } return e; } //imprime as portas disponveis protected void ImprimePortas(){ for (int i = 0 ; i < portas.length ; i ++ ) { if (portas[i] != null ) { System.out.print(portas[i] + " "); } } System.out.println(" "); }

Вам также может понравиться