sexta-feira, 29 de outubro de 2010

Acesso Remoto

>Por Mariana

Hey
O projeto possui um tela de configurações, que salva o número de IP de onde o simuldor ou o ambiente real está executando, podendo então enviar os comandos para o robô. Veja a seguir a função que atribui o valor do IP:

private void carregaIP(int opcao) {
if (opcao == 0)// escolheu o simulador
IP = Funcoes.IPSimulador;
else
// escolheu o ambiente real
IP = Funcoes.IPReal;
porto = Integer.parseInt(Funcoes.Porto);

}

Até mais,

Mudanças na execução da lógica

>Por Juliana

Olá,
Uma semana já se passou desde que apresentamos a prévia na aula de Aplicativos e na feira do SESI. Durante esse tempo fizemos várias alterações, inclusive na forma como o usuário deverá interagir com o programa para executar sua lógica. Essa execução se dará através de um Painel de Controle, que irá controlar Simulador e Robô Real. Mais tarde, provevelmente, algum integrante do grupo lhes apresentará tal tela.
Até ontem a noite ainda estavamos com alguns problemas na execução. Ao pausar a simulação, o Eclipse acusava java.net.SocketTimeoutException. O problema foi resolvido ao percebermos que a variável executando do Simulador apenas deveria ser alterada para false ao se fechar a janela de simulação.
Assim, temos:

PainelControle.java
if (Evento.getSource() == btPausar) {
Funcoes.executando = 0;
rbSimulador.setEnabled(true);
rbReal.setEnabled(true);
btExecutar.setEnabled(true);
btAbrir.setEnabled(true);
}

Simulador.java
public void windowClosing(WindowEvent arg0) {
Funcoes.executando = 0;
Funcoes.menu.simulador.arena.executando = false;

arg0.getWindow().setVisible(false);
Funcoes.menu.painelControle.btAbrir.setEnabled(true);
Funcoes.menu.painelControle.btExecutar.setEnabled(true);
caminho = null;
Prog1.llMinis.removeAll(Prog1.llMinis);
Prog1.pnArea.removeAll();
}

Até a semana que vem,
Juliana

Painel de Controle

>Por Paula

Olá!

Resolvemos criar uma tela de Painel de Controle, que será utilizada com o Simulador 2D, nessa tela estão presentes as funções de Configurar os ambientes, Escolher a lógica, executá-la e pausar a execução. Essas funções são acessadas através de ícones, como pode-se ver abaixo:

Paula


Posição dos Objetos na Arena - OK

>por Matheus

Olá!
Como apresentado no post da semana passada, durante a semana trabalhei para que o usuário conseguisse alterar a posição dos objetos (Robô e Bola) fazendo uso do mouse, ao invés de utilizar posições fixas para o posicionamento. Para isso, utilizei implentações como MouseMotionListener e MouseListener. Segue abaixo o código em Java elaborado:

public boolean validaPosicaoMouse(MouseEvent e, int obj)
{
xMouse = (int)e.getPoint().getX();
yMouse = (int)e.getPoint().getY();
xMouse = (int)(xMouse / escalaCmPixel);
yMouse = (int)(yMouse / escalaCmPixel);
yMouse = tamYCm - yMouse;

//obj 1 = robo1 || 2 = robo2 || 0 = bola
if(obj == 1)
{
if (((xMouse <= robo1.x+2) && (xMouse >=robo1.x -2)) && ((yMouse <= robo1.y+2) && (yMouse >=robo1.y -2)))
{
return true;
}
}
if(obj == 2)
{
if (((xMouse <= robo2.x+2) && (xMouse >=robo2.x -2)) && ((yMouse <= robo2.y+2) && (yMouse >=robo2.y -2)))
{
return true;
}
}
if(obj == 0)
{
if (((xMouse <= bola.x+2) && (xMouse >=bola.x -2)) && ((yMouse <= bola.y+2) && (yMouse >=bola.y-2)))
{
return true;
}
}

return false;

}

@Override
public void mouseDragged(MouseEvent e)
{
xMouse = (int)e.getPoint().getX();
yMouse = (int)e.getPoint().getY();
xMouse = (int)(xMouse / escalaCmPixel);
yMouse = (int)(yMouse / escalaCmPixel);
yMouse = tamYCm - yMouse;

if((emCima == 1) || (emCima == 0))
{
atualizaPosicaoMouse(xMouse, yMouse);
}
}

public void atualizaPosicaoMouse(int x, int y)
{
//obj 1 = robo1 || 2 = robo2 || 0 = bola
if(emCima == 1)
{
robo1.x = x;
robo1.y = y;
repaint();
return;
}
if(emCima == 0)
{
bola.x = x;
bola.y = y;
repaint();
return;
}
}



@Override
public void mousePressed(MouseEvent e) {
if((validaPosicaoMouse(e, 1)) && (Funcoes.executando==0))
{
emCima = 1;
return;
}
if((validaPosicaoMouse(e, 0)) && (Funcoes.executando==0))
{
emCima = 0;
return;
}

}

@Override
public void mouseReleased(MouseEvent e) {
emCima = -1;
}


Até a próxima!

Matheus

Histórico de notificação - administrador do grupo

>Por Maisa

Hey,
Como realizado no administrador geral, foi adicionado a opção de visualização do histórico de notificação pelo administrador do grupo.

Assim, ele pode verificar as notificações que enviou e para quem enviou. Nesse caso, não há a opção de Filtro 'Exclusão' pois o administrador de um grupo pode apenas expulsar um usuário do grupo, e não excluí-lo.

Segue abaixo uma imagem da tela:


Como no administrador geral, ele também pode ver as informações básicas da notificação : para quem foi enviada e qual a mensagem.

Maisa

Mudança na data da Apresentação Final

>por Renato

Essa semana recebemos a notícia de que a data da Apresentação Final foi modificada. A apresentação estava anteriormente marcada para os dias 10 e 11 de novembro de 2010, ou seja, no meio da semana de provas do quarto bimestre. Porém, nos dias 06 e 07 de novembro, as provas do ENEM 2010 serão aplicadas. Para evitar o sobrecarregamento dos alunos, as apresentações da nossa sala agora ocorrerão nos dias 04 (período da tarde) e 05(também no período da tarde).

Ou seja, a Apresentação Final já é semana que vem.


Renato

Apresentação Final

>Por Debora

Olá,

Essa semana eu e o Renato Giampietro começamos a apresentação final do projeto. Decidimos fazê-la em PowerPoint, pois nenhum membro do grupo trabalha com Flash e teríamos pouco tempo para aprender.
A apresentação contém um vídeo de abertura, apresentação dos integrantes, instituição beneficiada, telas do blog, site, sistema web, menu da aplicação em java e contém também as tecnologias utilizadas.

Até semana que vem.

Debora

sexta-feira, 22 de outubro de 2010

Funcionamento do simulador

>Por Mariana

Hey
Como visto no meu post anterior, o simulador tem nos botões, e hoje eu trouxe o código deles. O botão executar é qume dá inicio a execução, e o pause interrompe-a. Veja:

Botão Executar
if (Evento.getSource() == btExecutar) {
Funcoes.executando = 1;
menuItemEscolherArq.setEnabled(false);
t = new Thread(this);
t.start();

}


Thread t
@Override
public void run() {

btExecutar.setEnabled(false);
// bingo
if (caminho == null) {
caminho = Funcoes.arquivo();
try {
Funcoes.carregarArquivo(caminho, Prog1.llMinis);
} catch (Exception e) {
e.printStackTrace();
}
}
arena.executando = true;
simCliente = new SimuladorCliente(caminho);// "C:\\Documents and Settings\\mariana.shimabukuro\\Desktop\\APPARATUS\\Projeto\\dir.ggb");
btExecutar.setEnabled(true);

}

Botão Pause

if (Evento.getSource() == btPausar) {
Funcoes.executando = 0;
menuItemEscolherArq.setEnabled(true);
btExecutar.setEnabled(true);
}


Até mais,
Mariana

Acentos

>Por Maisa

Hey,
Estavam ocorrendo alguns erros em relação a acentos na nossa aplicação PHP. Não estávamos conseguindo cadastrar nomes com acento, enviar notificações, etc.
Com isso o Matheus fez umas pesquisas e descobriu funções PHP para codificar e descodificar acentos para conseguirmos salvar e pegar os valores do banco.
As funções são:
  • utf8_encode (codifica)
  • utf8_decode (descodifica)
Assim, modifiquei os arquivos e agora o problema está solucionado.

Até mais,

Feira de Tecnologia

>Por Debora

Olá,

Nessa sexta feira, nós fomos expor nosso projeto na feira de tecnologia que estava acontecendo no SESI. Durante a tarde, ficamos eu, Matheus, Mariana e Renato e durante a noite, Juliana, Paula, e Maisa.
Nós queríamos ter levado a arena e os robôs, para chamar mais atenção do público, mas infelizmente não deu certo, pois faltou uma biblioteca do java para conseguirmos executar o programa que verifica as posições dos objetos na arena.
No geral deu tudo certo, nós nos saímos bem!

Até a próxima

Desenvolvimento em Java: Cadastro de lógica

>Por Juliana

Boa tarde,
Ontem, enquanto dávamos uma conferida pré-feira em todo o projeto GoGoBots, notamos um erro na exclusão de comportamentos ao fazer o cadastro. O comportamento excluído era sempre o primeiro. Após algumas tentativas, chegamos ao seguinte trecho de código, que, de forma simples, resolveu nosso problema.

btRemover.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
Mini m = (Mini) ((JButton)(e.getSource())).getParent().getParent();
Prog1.llMinis.remove(m);
Prog1.pnArea.removeAll();
for (int i = 0; i < Prog1.llMinis.size(); i++) {
Prog1.pnArea.add(Prog1.llMinis.get(i));
}
Prog1.pnArea.updateUI();
Prog1.pnArea.validate();
if (!(Funcoes.existeComportamento(Prog1.llMinis))) {
Prog1.btSalvarComoLogica.setEnabled(false);
Prog1.btSalvarLogica.setEnabled(false);
}

}

});


Até semana que vem,
Juliana

Mudança na Tela de Configuração

>Por Paula

Olá!

Durante essa semana foram realizadas algumas alterações na tela de configuração, agora o usuário irá configurar de uma só vez, os elementos do Robô Real e do Simulador 2D, escolhendo em qual computador serão executadas as lógicas.

Segue abaixo a imagem da tela:

Paula

Posição dos Objetos na Arena

>por Matheus

Hey! Tudo certo?
Durante essa semana nos foi solicitado que alterassemos a forma como o usuário posiciona os objetos na arena. Até então os mesmos tinham posições fixas, como por exemplo (3,3). Estamos trabalhando para que as respectivas posições sejam alteradas pelo mouse.
Assim que tiver mais novidades deixo vocês informados.

Até a próxima!

Matheus

"Prévia" da apresentação

>Por Renato

Oi.
Foram escolhidos 2 grupos para que, no dia 22/10/2010, durante as duas aulas de aplicativos, fizessem uma prévia da apresentação do projeto.

O professor Fabrício, de Aplicativos, se propôs a corrigir e apontar possíveis modificações da apresentação para garantir o melhor rendimento possível no dia da apresentação final (11/11/2010).

Um dos grupos que irão realizar a apresentação será o próprio Apparatus.

sexta-feira, 15 de outubro de 2010

Layout Simulador

>Por Mariana

Hey
Como venho relatando há algum tempo, mudanças no layout do simulador deveriam ser realizadas. Tinhamos feito algo somente para teste, porém após a reunião do dia 09/10 na casa da Juliana, discutimos um pouco sobre e a Paula e o Matheus, fizeram a seguinte janela:


Agora o usuário tem a opção de interromper a execução a qualquer momento, e iniciar uma nova interpretação. Sem falar na tela de configurações na qual ele poderá dizer qual robô esta controlando e qual máquina que vai se conectar. Por hoje é só!

Até mais,
Mariana

Validação de IP

>Por Matheus

Hey! Tudo certo?
Durante essa semana me foquei na programação em Java, contando sempre com o auxílio da Paula. Duas telas de configuração foram desenvolvidas e estão praticamente finalizadas. Nelas, nos deparamos com uma situação um tanto quanto inusitada: a validação de um endereço IP.

Para realizar essa validação, estamos utilizando uma expressão regular, que pode ser observada abaixo:

public boolean ValidaIP(String ip)
{
Pattern pattern = Pattern.compile("(([0-1]?[0-9]{1,2}\\.)|(2[0-4][0-9]\\.)|(25[0-5]\\.)){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))");
Matcher matcher = pattern.matcher(ip);
if( matcher.matches() )
return true;
else
return false;
}

Por hoje é só! Até a próxima.

Matheus

Tela de Configuração - Robô Real

>Por Paula

Olá ;D

Essa semana eu e o Matheus desenvolvemos as duas últimas telas necessárias, as de configurações do simulador e do robô real. Na tela de configuração do robô real o usuário deverá escolher em qual computador se encontra o servidor linux de comunicação com robô, se é o mesmo computador que está sendo utilizado ou se será outro, escolhendo a segunda opção o usuário terá que digitar o IP da máquina correspondente. Dando continuidade, o usuário digitará o número de porto, ou seja, a porta de comunicação e por último selecionar o arquivo com a lógica que o robô executará.

Segue abaixo a imagem com a tela do Robô Real:


Até mais!

Paula

Layout da janela Configurações

>Por Juliana

Bom dia,
Como já foi dito aqui no blog, fizemos uma tela para configuração do Simulador 2D pelo usuário. Por enquanto, ela tem duas finalidades: selecionar o IP da máquina onde a lógica será executada e escolher as posições dos objetos no início da execução.

Até a semana que vem,
Juliana

Apresentação Final

>por Renato

Oi.

Vou postar sobre o horário das apresentações finais e a data da reapresentação.

A apresentação do nosso grupo será realizada dia 10/11/2010, às 10:00 da manhã. Antecedendo nossa apresentação, teremos o grupo Índigo. No dia 09/10/2010 teremos a apresentação do grupo Stay e posteriormente do grupo Spectrum no período da tarde.

A data de reapresentação foi marcada para o dia 27/11/2010, no período normal de aula.
Vale lembrar que é previsto que tempo de duração das apresentações seja entre 60 a 90 minutos.


Renato.

Andamento da Reunião do dia 09/10/2010

>Por Debora

Olá,

Na reunião de sábado (na casa da Juliana), juntamente com o idealizador do nosso projeto, Renê Pegoraro, discutimos sobre uma data para testarmos nosso projeto no robô real. Arrumamos também o layout do simulador e consertamos alguns erros do mesmo, além de termos distribuido tarefas para os integrantes do grupo.

Até mais!

Debora

Filtro de notificações

>Por Maisa

Hey,
Como dito no meu post anterior, foi feito o histórico de notificações. Para ajudar o usuário a encontrar o histórico desejado, foi desenvolvido o Filtro de notificações o qual será exibido pelo tipo de operação (Email,Exclusão ou Expulsão).

O usuário então escolhe a opção desejada e clica em "Listar". Caso não deseje um tipo específico, o usuário poderá também visualizar uma listagem completa do histórico de notificações.

Segue abaixo uma imagem da tela:


Maisa

sexta-feira, 8 de outubro de 2010

Botão executar

>Por Juliana

Olá
Como já foi comentado anteriormente mudamos o layout da tela do simulador, trouxe então o código do botão adicionado, confira:

btExecutar.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
try {
String caminho = Funcoes.arquivo();
Funcoes.carregarArquivo(caminho, Prog1.llMinis);
new SimuladorCliente(caminho);// "C:\\Documents and Settings\\mariana.shimabukuro\\Desktop\\APPARATUS\\Projeto\\dir.ggb");

} catch (Exception e1) {

e1.printStackTrace();
}

}

});



Boa semana,
Juliana

Histórico de notificação

>Por Maisa

Como dito pela Paula, houve a criação da listagem dos registros de log. Ao realizar essa listagem percebemos também que era necessária uma listagem do histório de notificação também no módulo administrador.
Desenvolvi então a página, que pode ser acessada no menu Utilitários > Notificação. Segue abaixo uma imagem da o histórico de notificação:

Ao lado dos campos Data, Destinatário e Operação os quais identificam a notificação, há um ícone (lupa) que mostrará mais detalhes sobre a notificação enviada.
Abaixo a janela que será aberta ao clicar no ícone:

Onde aparecerá o usuário que enviou, o que recebeu e a mensagem enviada.

Maisa

Reunião

>por Débora

Olá,

Ontem 7/10/2010, o grupo teve uma conversa e decidiu que seria necessário fazer uma reunião nesse final de semana para adiantar o projeto na parte da programação, pois nosso prazo em relação aos outros grupos quanto ao término do trabalho é menor, ja que iremos apresentar nosso projeto na semana da tecnologia - final de outubro.
Depois da reunião vocês serão informados do que se passou e como estará o projeto.
Por hoje é isso.
Até mais!

Debora

Integração: interface e simulador

>Por Mariana

Hey
Nessa semana trabalhei na integração dos módulos de interface desenvolvidos pela Paula e pelo Matheus com o módulo do simulador 2D, por enquanto não tivemos sérios problemas.Porém está sendo complicado harmonizar os ambientes, e lógicas de programação utilizadas. Abaixo um print do funcionamento:



Até mais,
Mariana

Período de Log

>por Matheus

Olá!

Durante essa semana estamos nos esforçando para finalizar a aplicação Web (PHP). Como já foi dito pela Paula, um dos pontos que faltavam no sistema era a visualização dos registros de log. Para facilitar, resolvemos criar uma espécie de "seleção de período". O usuário seleciona, com o auxílio de dois calendários, a data de início e de término do período. Caso não deseje um período específico, o usuário poderá também visualizar uma listagem completa com todos os registros de log.

Segue abaixo uma imagem da tela.


Matheus

Mudança no DER

>por Renato

Vou postar sobre a mudança realizada no DER da pasta de TSPD.

Anteriormente, constava no DER que que um usuário administrador poderia possuir N grupos e que um grupo poderia ter N usuários. Ocorreu um erro, pois todos os usuários participarão de apenas um grupo e isso também é válido para aqueles que são administradores de um grupo.

Agora, consta que um grupo possui N usuários e um usuário administrador pode ser dono de um único grupo. Segue abaixo a imagem do relacionamento modificado:



Renato

Registro de Log

>Por Paula

Olá ;D

Essa semana, após algumas conversas, lembramos de um detalhe que havia passado despercebido, a página de listagem dos registros de log no módulo de administrador. Assim, durante uma das aulas utilizadas para o desenvolvimento do projeto construi a página de listagem de log, porém como são milhares de registros, está sendo desenvolvido pelo Matheus uma forma de paginação.
Segue abaixo a imagem com a listagem dos registros de log, que é acessada através do link Reg. de Log na aba Utilitários, lembrando que por enquanto encontra-se sem paginação.


Até mais!

Paula

sexta-feira, 1 de outubro de 2010

Alteração foto grupo

>Por Maisa

Ao cadastrar um grupo o usuário pode adicionar uma foto para o mesmo. Caso não escolha uma foto nessa hora, ou mesmo se apenas quiser modificá-la poderá acessar após o Login.
Assim, entrando no menu Alterar > Grupo e abaixo dos campos há um botão 'Alterar foto' que irá para tela de alteração.

Ao clicar no botão aparecerá a tela a seguir:


Onde aparecerá a foto do grupo e o botão para alterá-la.

Maisa
>por Débora

Olá

Hoje vou postar sobre uma alteração feita na pasta de TSPD. No nosso DFD foi tirado o nível do usuário, ja que isso daria muito trabalho para o grupo em relaçã a programação. Com essa alteração, não haverá mais relatório classificando usuário por desempenho.

Bom, por hoje é só. Até mais.

Debora

Simulador

>Por Mariana

Hey
Estamos tendo problemas com a programação referente ao botão que aciona a execução do simulador, estamos tentando arrumar, porém não temos idéia do que fazer. O objetivo é pesquisar em algumas fontes e perguntar ao prof. Dr. Rene Pegoraro. Boa sorte à todos nós nessa etapa final.

Até mais,
Mariana

Tela sobre o Projeto

>Por Paula

Olá ;D

Referente a interface das telas da aplicação em Java já foram praticamentes finalizadas, faltando somente a tela de ajuda, a qual não decidimos ainda como será desenvolvida. Estamos com um problema de justificamento, mas que logo será resolvido.

Segue abaixo a tela falando sobre o Projeto:



Paula

Layout da tabela parâmetros

>por Renato

Oi.

Essa semana eu desenvolvi o layout da tabela parâmetros, que foi criada depois da conclusão da pasta de TSPD do terceiro bimestre.

A tabela irá conter informações do e-mail e do banco, como o host, a porta e o endereço de e-mail, mas ainda está sujeita a futuras alterações.

A imagem pode ser visualizada logo abaixo:

Alteração na Notificação - PHP

>por Matheus

Heey! Tudo certo?

Com grande parte da aplicação PHP já desenvolvida, resolvemos implantar um 'layout' para as notificações via e-mail do sistema Web. O novo layout das notificações serão simples, mas ao mesmo tempo agradáveis e atrativos.

Confira abaixo um protótipo de notificação:


Por hoje é só!