• Nenhum resultado encontrado

Tutorial de Computação Introdução a Programação Gráfica em Java para MEC1100 v

N/A
N/A
Protected

Academic year: 2021

Share "Tutorial de Computação Introdução a Programação Gráfica em Java para MEC1100 v"

Copied!
10
0
0

Texto

(1)

Tutorial de

Computação

Introdução a Programação Gráfica em Java

para MEC1100

v2010.10

Linha de Equipamentos MEC

Desenvolvidos por:

(2)

1 Introdução

Nesse tutorial vamos criar um projeto que possa ser utilizado como base para outros programas de controle do MEC1100. Vamos aproveitar esse projeto para mostrar passo a passo o que é necessário para criar um programa de controle para o equipamento. No final teremos um programa que permite a seleção da porta USB que será utilizada para se comunicar com o dispositivo, identificação automática da presença de um dispositivo na porta selecionada e todo o suporte para o envio de comandos de controle para o dispositivo, o que facilitará muito o desenvolvimento de outros programas, pois esse poderá ser utilizado como base.

2 Material

Para esse tutorial é necessário um MEC1100 conectado em uma porta USB do computador, também será necessário o NetBeans 6.9 ou superior para a criação dos programas e a biblioteca RXTX para fazer a comunicação serial com o MEC1100.

3 Projeto

O nosso primeiro passo será instalar os programas necessários. Para isso, siga os passos contidos no “tutorial_java_mec1100” no topico do tópico “ Instalação e Configuração do Ambiente de Desenvolvimento Java”.

Feito isto, iremos criar um projeto no NetBeans 6.9 que possa utilizar a biblioteca de controle do MEC1100 e o RXTX. Para isso, vamos abrir o NetBeans 6.9 e criar um novo projeto. Na versão em português do NetBeans, devemos clicar na opção de menu Arquivo / Novo Projeto, escolha “Aplicativo de área de trabalho java”, coloque o nome do Projeto como “Base”, escolha um lugar para salvar o projeto e clique em Finalizar e com isso será criado um novo Projeto .

(3)

Com o projeto criado, devemos agora fazer com que ele possa utilizar a biblioteca de controle do dispositivo e o RXTX. Existe algumas maneiras diferentes para permitir esse uso, no entanto, usaremos a forma mais fácil, que é copiar os arquivos MEC1100.java e o EMEC1100Error.java para dentro de nossa pasta “src”do projeto. Para adicionar a biblioteca do RXTX devemos clicar em Bibliotecas no menu Projetos dentro do NetBeans e ir em Adicionar jar/pasta e adicionar o RXTXcomm.jar. Com isso feito a aparência da nossa pasta “src” deverá se parecer com o seguinte:

E a aparência do nosso projeto no NetBeans deverá se parecer com o seguinte:

Com os arquivos copiados, devemos alterar o pacote do EMEC1100Error.java e Mec1100.java. Para isso, abra-os e, onde está escrito “package”, mude para o nome do projeto. No nosso caso mude para “base”.

Dentro do arquivo Baseview.java temos duas opções: ver o código fonte clicando em “Código-fonte” ou ver o projeto gráfico clicando em “Projeto”.

Agora iremos criar a interface gráfica. Essa interface deve permitir a seleção da porta USB onde o dispositivo está conectado e indicar se a comunicação está correta. Para isso criaremos a interface demonstrada na figura a seguir:

Figura 2: Pasta "src" do projeto

(4)

Essa interface possui apenas componentes gráficos básicos. Um componente jComboBox que permite a seleção da porta USB, um componente jPanel e um jLabel, que indica o estado da conexão . Iremos criar essa interface passo a passo.

Primeiramente vamos incluir um componente jComboBox. Esse componente pode ser encontrado na Paleta / Componente Swing / Caixa de combinação.

Figura 5: Componente jComboBox Figura 4: Programa pronto.

(5)

Selecione o componente “Caixa de combinação” e clique dentro do painel do projeto para adicionar o jComboBox. Após adicionar o jComboBox nosso “BaseView” terá a seguinte aparência:

Vamos mudar a seguintes propriedade desse componente em Propriedades: Tamanho Horizontal = 100

Agora, vamos mudar o nome da variável que acessa o jComboBox clicando com o botão direito sobre o mesmo e, em Change Variable Name, vamos colocar “comboBoxSerial”

Com o comboBoxSerial configurado vamos adicionar dois componentes que irão indicar o estado da conexão, um jLabel e um jPanel. Os dois componentes podem ser encontrados na “Paleta”. A seguir uma imagem do “BaseView” após a adição dos componentes ao Painel superior:

Vamos mudar as seguintes propriedades do componente jPanel, selecionando-o e modificando as seguintes propriedades :

backgroud = [0,255,0]

Tamanho vertical = 25 Tamanho horizontal = 25

Figura 6: Adição de um jComboBox

(6)

Vamos mudar também o nome da variável que acessa este jPanel clicando com o botão direito sobre ele e em Change Variable Name vamos colocar “LEDStatus”

No componente jLabel iremos mudar as seguintes configurações:

text = Desconectado

foreground = Vermelho

font = 14 / Negrito

Vamos mudar também o nome da variável que acessa o jLabel clicando com o botão direito sobre o mesmo e em Change Variable Name vamos colocar “labelStatus”

Ao final nossa barra superior irá se parecer com o seguinte:

Agora que temos a parte visual do programa vamos implementar suas funcionalidades. Primeiramente vamos implementar as rotinas de inicialização e finalização do programa. Para isto mude para o modo ”Código-fonte” e abaixo da “public class BaseView” crie um objeto do tipo MEC1100 conforme a figura a seguir:

Figura 8: Aparência final da parte superior do programa.

(7)

Com isto feito, voltamos a aba “Projeto” e vamos adicionar o comando “listar as portas seriais” no comboBoxSerial. Para isto clique com o botão direito no comboBoxSerial e vá em “personalizar código” e, em seguida, adicione o seguinte código:

Vector<String>portas=base.MEC1100.GetInstalledSerialPorts(); comboBoxSerial = new javax.swing.JComboBox();

//Listas portas disponíveis no comobBoxSerial for (String x : portas) {

comboBoxSerial.addItem(x); }

A janela de personalização do código deverá se parecer com o seguinte:

Antes de enviar um comando de controle para o MEC1100 é necessário iniciar a comunicação em uma porta USB. Isso é feito com o método “OpenCommunication” da classe de controle do MEC1100.

Esse método recebe como parâmetro uma String, com uma porta USB, onde o dispositivo que será controlado deve estar. Vamos fazer com que, assim que seja selecionado algo no comboBoxSerial, o programa tente iniciar uma comunicação com o MEC1100. Para isto clique como o botão direito no comboBoxSerial e vá em Eventos/Popup/PopupMenuWillBecameInvisible e, então você será direcionado para o código fonte onde deverá inserir o seguinte código:

(8)

try{

//Inicia a comunicação com a porta selecionada na combobox

mec.OpenCommunication((String) comboBoxSerial.getSelectedItem()); if(mec.IsConnected()){

//Muda a cor do texto para verde

labelStatus.setForeground(new java.awt.Color(50, 205, 50)); // muda o texto adicionando as informaçoes do MEC1100

labelStaus.setText("Conectado a um "+mec.DeviceInfo()); }else{

//Muda a cor para vermelho

labelStatus.setForeground(new java.awt.Color(255, 0, 0)); //muda o texto para desconectado

labelStaus.setText("Desconectado"); }}catch (Exception err){

System.out.println("Erro:" + err.getMessage()); }

Esse código irá iniciar a comunicação, caso possível, e atualizará a jLabel com as informações do MEC1100 e mudará a cor para verde se o mesmo estiver conectado.

Nesse momento, podemos testar nosso programa. O mesmo deverá listar todas a portas seriais/USB instaladas no sistema operacional. Para testar pressione F6. O programa deverá estar semelhante a figura a seguir:

Para verificar continuamente a presença de algum dispositivo, iremos utilizar um método chamado actionPerformed. Esse método executa um código em intervalos pré-determinados de acordo com o “timer” que criaremos a seguir.

(9)

Então, iremos no editor de código para realizarmos uma modificação. A classe deve implementar o ActionListener. Para isto, logo após “public class BaseView extends FrameView” que se localiza no inicio do código, adicionaremos “implements ActionListener”. Deverá ficar igual ao código a seguir:

public class BaseView extends FrameView implements

ActionListener{ Agora vamos declarar uma variável do tipo Timer. Para isso, abaixo do local onde criamos o objeto do MEC1100, insira o código a seguir:

Timer timer

Feito isso, vamos criar o actionPerformed. Para isto após o último método insira o seguinte código:

public void actionPerformed(ActionEvent e) { try{ mec.OpenCommunication((String) comboBoxSerial.getSelectedItem()); if(mec.IsConnected()){ labelStatus.setForeground(new java.awt.Color(50, 205, 50)); labelStatus.setText("Conectado a um "+mec.DeviceInfo() ); }else{ labelStatus.setForeground(new java.awt.Color(255, 0, 0)); labelStatus.setText("Desconectado"); }

}catch (Exception err){

System.out.println("Erro:" + err.getMessage()); }

}

Agora, iremos fazer esse código ser acionado a cada 100 ms. Para isso vá no método “public BaseView” no incio do código e adicione o seguinte código, abaixo da linha “initComponents();”: new Timer(100,this).start();

(10)

A seguir uma imagem com o programa final e com os dois estados da conexão. No primeiro, a aparência sem conexão e, no segundo, com conexão.

Para finalizar o projeto iremos mudar o nome do programa indo na aba “Projetos” e clicando com o botão direito sobre o nome do projeto e, em seguida, em Propriedades.

Na tela que foi aberta, escolha no menu Categoria, a opção “Apllication”. Neste, vamos alterar o titulo para “Base”.

Dê OK e teste seu programa.

4 Conclusão

Nesse tutorial vimos como criar um programa base para controlar o MEC1100. A partir do programa criado nesse tutorial podem ser criados outros programas com maior facilidade, pois toda a estrutura de base já está implementada. Todos os outros tutoriais vão utilizar o programa criado nesse tutorial como base. Se esse tutorial for bem entendido não haverá problemas para o entendimento dos outros tutoriais e da programação para o dispositivo.

Referências

Documentos relacionados

Declaro meu voto contrário ao Parecer referente à Base Nacional Comum Curricular (BNCC) apresentado pelos Conselheiros Relatores da Comissão Bicameral da BNCC,

O objetivo desse estudo é realizar uma revisão sobre as estratégias fisioterapêuticas utilizadas no tratamento da lesão de LLA - labrum acetabular, relacionada à traumas

O objetivo das regulamentações modernas de segurança contra incêndio é pro- teger a vida e evitar que os incêndios, caso se iniciem, se propaguem para fora de um compartimento

Outras possíveis causas de paralisia flácida, ataxia e desordens neuromusculares, (como a ação de hemoparasitas, toxoplasmose, neosporose e botulismo) foram descartadas,

Na primeira, pesquisa teórica, apresentamos de modo sistematizado a teoria e normas sobre os meios não adversarias de solução de conflitos enfocados pela pesquisa, as características

Esta pesquisa teve como objetivo avaliar as características de madeira do híbrido Euca/ytpus grandis x Euca/ytpus urophylla e da celulose entre o primeiro ano até o sétimo ano

Our contributions are: a set of guidelines that provide meaning to the different modelling elements of SysML used during the design of systems; the individual formal semantics for

O presente trabalho analisa cento e quarenta e três (143) representações humanas pré-históricas pintadas, circunscritas nos sítios arqueológicos do Vale do Moxotó e do