Mostrando postagens com marcador Mariana. Mostrar todas as postagens
Mostrando postagens com marcador Mariana. Mostrar todas as postagens

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,

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

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

sexta-feira, 8 de outubro de 2010

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

sexta-feira, 1 de outubro de 2010

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

sexta-feira, 24 de setembro de 2010

Novo Layout Simulador

>Por Mariana

Hey
Como dito pela Juliana andamos tendo problemas com a relação do nosso simulador e nosso cliente. Tentamos arrumar de diversos modos essas classes porém, ainda nao obtemos sucesso. Em mais uma tentativa alteramos a interface do Simulador que agora tem um botão no qual inicia a execução do cliente. Veja como ficou a tela:



Até mais,
Mariana

sexta-feira, 17 de setembro de 2010

Propostas Aprovadas

>Por Mariana

Hey
Como solicitado pelo prof. Rodrigo, estou postando as propostas aprovadas para banner, capa de CD, e etiqueta de CD. Confira:








Até mais
Mariana

sexta-feira, 10 de setembro de 2010

Desenvolvimento técnico: Documentação

>Por Mariana

Hey

Resolvi trazer um pouco da documentação do projeto, a seguir uma breve explicação e uma ilustração.

O ambiente reproduz uma área plana, chamada de arena na qual atualmente é posicionado um robô e uma bola. Neste ambiente o robô executará os comportamentos para realizar uma tarefa.


Até mais e bons estudos
Mariana

sexta-feira, 3 de setembro de 2010

Desenvolvimento em JAVA - Conversor

>Por Mariana

Como dito anteriormente começamos desenvolver um jeito de controle remoto do simulador, por UDCP. Para isso ocorrer precisamos converter também float em bytes, a seguir a rotina que faz isso:

void comunicacaoRobo2() {
/** 6 floats * 4 bytes cada * 3 conjuntos de estado */
byte data[] = new byte[6 * 4 * 3];
byte cmd[] = new byte[1];

Estado estado[] = new Estado[3];
for (int i = 0; i <>
estado[i] = new Estado();

while (true) {
try {
estado[0].angulo = (float) (2 * Math.PI + robo2.angulo);
estado[0].x = tamXCm - (float) robo2.x;
estado[0].y = tamYCm - (float) robo2.y;
estado[0].dAngulo = (float) robo2.dAngulo;
estado[0].dx = -(float) robo2.dx;
estado[0].dy = -(float) robo2.dy;

estado[1].angulo = (float) bola.angulo;
estado[1].x = tamXCm - (float) bola.x;
estado[1].y = tamYCm - (float) bola.y;
estado[1].dAngulo = (float) 0;// bola.dAngulo;
estado[1].dx = -(float) bola.dx;
estado[1].dy = -(float) bola.dy;

estado[2].angulo = (float) (2 * Math.PI + robo1.angulo);
estado[2].x = tamXCm - (float) robo1.x;
estado[2].y = tamYCm - (float) robo1.y;
estado[2].dAngulo = (float) robo1.dAngulo;
estado[2].dx = -(float) robo1.dx;
estado[2].dy = -(float) robo1.dy;

leBytes(data, estado);

DatagramPacket packet = new DatagramPacket(cmd, 1);
socketRobo2.receive(packet);
if (cmd[0] == (byte) 0x88) {
packet.setData(data);
socketRobo2.send(packet);
// Thread.sleep(100);
} else {
System.out.format("%02x ", cmd[0]);
robo2.comando(cmd[0]);
Thread.sleep(20);
}
} catch (InterruptedException e) {
} catch (IOException e) {
e.printStackTrace();
}
}
}



Até mais e boas provas a todos.

sexta-feira, 27 de agosto de 2010

Desenvolvimento em JAVA - Conversor

>Por Mariana

Hey
Após a apresentação para a banca começamos desenvolver um jeito de controle remoto do simulador, por UDCP. Para isso ocorrer precisamos converter bytes em reais, a seguir a rotina que faz isso:

public void atribuiBytesEstado(Estado estado[], byte[] b) {
int ind = 0, x;
for (int i = 0; i <>
x = ((int) b[ind] & 0x000000ff)
+ (((int) b[ind + 1] <<>
+ (((int) b[ind + 2] <<>
+ (((int) b[ind + 3] <<>
System.out.format("%x %x %x %x %x\n", (int) b[0],
((int) b[1] <<>
(((int) b[3] <<>
ind += 4;
estado[i].angulo = Float.intBitsToFloat(x);
x = ((int) b[ind] & 0x000000ff)
+ (((int) b[ind + 1] <<>
+ (((int) b[ind + 2] <<>
+ (((int) b[ind + 3] <<>
ind += 4;
estado[i].x = Float.intBitsToFloat(x);
x = ((int) b[ind] & 0x000000ff)
+ (((int) b[ind + 1] <<>
+ (((int) b[ind + 2] <<>
+ (((int) b[ind + 3] <<>
ind += 4;
estado[i].y = Float.intBitsToFloat(x);
x = ((int) b[ind] & 0x000000ff)
+ (((int) b[ind + 1] <<>
+ (((int) b[ind + 2] <<>
+ (((int) b[ind + 3] <<>
ind += 4;
estado[i].dAngulo = Float.intBitsToFloat(x);
x = ((int) b[ind] & 0x000000ff)
+ (((int) b[ind + 1] <<>
+ (((int) b[ind + 2] <<>
+ (((int) b[ind + 3] <<>
ind += 4;
estado[i].dx = Float.intBitsToFloat(x);
x = ((int) b[ind] & 0x000000ff)
+ (((int) b[ind + 1] <<>
+ (((int) b[ind + 2] <<>
+ (((int) b[ind + 3] <<>
ind += 4;
estado[i].dy = Float.intBitsToFloat(x);
}
}

Até mais

sexta-feira, 20 de agosto de 2010

Menu em Java


>Por Mariana

Hey
Ultimos ajustes para a apresentação no sábado (21/08/2010) na sala 1. Temos trabalhado bastante em juntar os módulos que já estavam prontos, em java. Abaixo imagem do nosso menu, essa tela é provisória, sofrerá mudanças ainda.



Até mais

sexta-feira, 13 de agosto de 2010

Banner



>Por Mariana

Hey
Como nos foi solicitado pelo prof. Rodrigo, tivemos que fazer banners, capas de cd, e etiquetas de cd. Hoje trouxe a minha proposta de banner. Logo Abaixo:

Boa noite à todos

sexta-feira, 6 de agosto de 2010

Capa CD

>Por Mariana

Hey
Como solicitado pelo prof. Rodrigo, de aplicativos II, durante a semana trabalhei sobre a capa do CD, juntamente com a Juliana. Decidimos utilizar o fundo azul, por ser uma cor mais alegre e atrativa para nosso público alvo.
Segue abaixo a imagem:



Bom dia à todos,

sexta-feira, 30 de julho de 2010

Desenvolvimento técnico: Tradutor

>Por Mariana

Hey,
Esta semana começamos o desenvolvimento da classe Tradutor. Essa classe deverá traduzir o arquivo da lógica e transformá-lo em comandos. Esses comandos serão enviados tanto para o simulador quanto para o robô real, de acordo com a escolha do usuário, gerando a movimentação sobre a arena. Aqui está o método encontrar(), o qual deverá achar a condição correspondente a situação daquele instante.
public void encontrar(String nomeArq, int x, int y) throws IOException {
Properties prop = new Properties();
FileInputStream pf = new FileInputStream(nomeArq);
prop.load(pf);
for (int i = 0; i < prop.size(); i++) {

String s = prop.getProperty("com" + i,
"O1(0,0);O2(1,1);O1(1,1);O2(0,0)");
String p[] = s.split(",|\\(|\\),|\\);|\\)");
for (int j = 0; j < p.length; j++)
System.out.println(p[j]);
/*
* Testar coordenadas dos objetos nesse momento com condições
* presentes no arquivo
*/
if ((Integer.parseInt(p[7]) == x) && (Integer.parseInt(p[8]) == y)
&& (Integer.parseInt(p[10]) == 1)
&& (Integer.parseInt(p[11]) == 1)) {
agir(Integer.parseInt(p[1]), Integer.parseInt(p[2]), Integer
.parseInt(p[4]), Integer.parseInt(p[5]));
return;
}
}

Isso é tudo por hoje. Até mais,
Mariana

sexta-feira, 23 de julho de 2010

Sistema Proposto

>Por Mariana

Hey
Trouxe a correção do sistema proposto:

No site do sistema o usuário se cadastra escolhendo um grupo para participar, recebendo um confirmação de cadastro. O usuário pode criar um grupo, preenchendo as informações necessárias e recebe uma confirmação dessa ação, bem como notificações a cada novo participante deste. O administrador envia ao sistema informações para exclusão(grupo ou participante), e notificações/advertências. Essas últimas serão enviadas aos grupos ou usuários. O grupo pode notificar o usuário, expulsá-lo ou se excluir. O usuário sempre pertencerá a um grupo (existirá um grupo padrão, inexcluível), podendo excluir seu cadastro quando desejar. O sistema fornece ao administrador relatórios com informações dos usuários e dos grupos e ao grupo relatórios com informações dos participantes e seus desempenhos.

O usuário acessa o sistema desktop fornecendo o login, ele da entrada nas coordenadas dos objetos dos quadros de ação/condição dando origem a um arquivo de lógica(.ggb). Uma vez tendo o arquivo de lógica o usuário pode solicitar a interpretação do mesmo, assistindo sua execução pelo simulador 2D ou com os objetos reais. O sistema retorna o status do participante.

Obs. Se o participante não tiver cadastro no site do sistema, ele poderá acessar o sistema desktop, porém não haverá retorno do status.

Boa volta as aulas

sexta-feira, 16 de julho de 2010

Trigonometria

>Por Mariana

Hey
Para manipularmos o robô vamos utilizar trigonometria para determinar o giro dos motores, o ângulo e a distância a ser percorrida. Teremos uma classe que receberá comandos e os interpretará em forma de cálculos. Veja a imagem abaixo que ilustra um pouco do funcionamento:



Até mais

sexta-feira, 9 de julho de 2010

Comando C

>Por Mariana

Olá,
Na semana passada, durante uma conversa com o professor Renê Pegoraro, recebemos explicações sobre o funcionamento dos robôs que serão disponibilizados pela UNESP.
Os robôs são bem simples e dispõem apenas de duas rodas. Por essa razão, os comandos serão formados por 8 bits. Assim, como demonstrado na imagem abaixo, cada bit tem uma função. Para este projeto, não será necessária a variação de velocidade, dessa forma optamos por usar o último bit valendo 0 quando o robô estiver parado e 1 quando estiver em movimento.


Traremos mais informações em breve.
Mariana

sexta-feira, 2 de julho de 2010

JavaComm

>Por Mariana

Discutindo sobre o nosso projeto chegamos a conclusão que será usado JavaComm para comunicação serial com os robôs. Então resolvi trazer um pouco sobre essa ferramenta:

JavaComm
O Java Communications 3.0 API Java é uma extensão que facilita o desenvolvimento independente de plataforma para aplicações de comunicações tecnologias como cartões inteligentes, sistemas embarcados, e de dispositivos de ponto de venda, serviços financeiros dispositivos, fax, modems, terminais de vídeo e equipamentos robóticos.
O Java Communications API (também conhecido como javax.comm) prevê aplicações de acesso a RS-232 hardware (portas seriais) e acesso limitado a IEEE-1284 (portas paralelas) modo SPP.
Implementações da API estão atualmente disponíveis para Solaris SPARC, Solaris x86, x86 e Linux. Cada uma das implementações disponíveis Sun trabalha com o Sun Ray da linha de produtos thin client, e incluem portmapping extensões para permitir uma gestão para especificar a localização de portos, bem como a sua visibilidade, nomes, e em alguns casos anotados referência.

serial API características:
  • Enumeração de portas (administrador e usuário mapeamento de porta configurável)
  • Porto de configuração (taxa de transmissão, velocidade, bits de parada, paridade)
  • Acesso à EIA232 DTR padrão, CD, CTS, RTS e DSR sinais
  • Transferência de dados através de portas RS-232
  • opções de hardware e software de controlo do fluxo
  • Buffer de recepção de controle de limite
  • opção de evento assíncrono para a notificação de:
    • Os dados disponíveis sobre uma porta RS-232
    • hardware Port nível muda de linha
    • mudanças de propriedade do Porto, num único JVM

Até mais

sexta-feira, 25 de junho de 2010

Desenvolvimento em JAVA


>Por Mariana

Hey

Com o término da semana de provas, voltamos nosso foco para o projeto. Já faz algum tempo que mostrei a interface, decidi então trazer a atualização da nossa tela principal. A tela sofreu algumas modificações de layout, e ainda será muito mais modificada, a novidade é também que ao fechar a telá ela mostra um diálogo que irá salvar a lógica do usuário.



Até mais

sexta-feira, 18 de junho de 2010

Desenvolvimento JAVA

>Por Mariana

Hey
Já faz algum tempo que não posto nada relacionado com código, então trouxe um trecho interessante sobre a classe Arquivo, que cria e salva um arquivo .GGB onde será salvo o campo "com" que armazenará, as coordenadas dos objetos dispostos nas arenas, segundo o layout postado pela Juliana.

public class Arquivo {
public void Carregar() throws Exception {
Properties p = new Properties();
FileInputStream pf = new FileInputStream("aaa.dat");
p.load(pf);
System.out.println(p.getProperty("escola"));
System.out.println(p.getProperty("faculdade"));
System.out.println(p.getProperty("departamento", "computacao"));
}

public void Salvar(Vector mini) throws Exception {
Properties arqLogica = new Properties();
FileOutputStream pf = new FileOutputStream("teste.ggb");
for (int i = (mini.size()-1); i>=0; i--) {

arqLogica.put("com"+i, "O1("+mini.elementAt(i).acao.posObj[0].x+","+mini.elementAt(i).acao.posObj[0].y+
");O2("+mini.elementAt(i).acao.posObj[1].x+","+mini.elementAt(i).acao.posObj[1].y+")|"+
"O1("+mini.elementAt(i).condicao.posObj[0].x+","+mini.elementAt(i).condicao.posObj[0].y+
");O2("+mini.elementAt(i).condicao.posObj[1].x+","+mini.elementAt(i).condicao.posObj[1].y+")");

}
arqLogica.store(pf, "Coordenadas");

}
}
Obrigada à todos e boas provas!

Mariana