Mudanças entre as edições de "Trabalho da Jessica"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 56: Linha 56:
 
[[imagem:FigTrabalhoJessica1.png|600px]]
 
[[imagem:FigTrabalhoJessica1.png|600px]]
  
Colocar códigos aqui:
+
Código de Conexão com o Banco:
  
 
<syntaxhighlight lang=java>
 
<syntaxhighlight lang=java>
 +
 +
package conexao;
 +
 +
import java.sql.Connection;
 +
import java.sql.DriverManager;
 +
 +
public class ConBanco {
 +
 +
Connection conexao = null;
 +
 +
public ConBanco(Connection con) {
 +
 +
con = this.conexao;
 +
}
 +
 +
public Connection getConnection() {
 +
 +
try {
 +
 +
String url = "jdbc:mysql://localhost:3306/"; // 3306 e a porta do MySql
 +
 +
String dbName = "energia";
 +
String driver = "com.mysql.jdbc.Driver";
 +
String user = "root";
 +
String senha = "jessica2604"; // senha do banco de dados
 +
 +
Class.forName(driver).newInstance();
 +
this.conexao = DriverManager.getConnection(url + dbName, user, senha);
 +
System.out.println("Conectado " + this.conexao + ".");
 +
 +
} catch (Exception e) {
 +
System.out.println("Erro ao se conectar com o Banco");
 +
e.printStackTrace();
 +
}
 +
return this.conexao;
 +
}
 +
 +
}
 +
 +
 +
 +
</syntaxhighlight>
 +
 +
Código do Servidor:
 +
 +
<syntaxhighlight lang=java>
 +
 +
package conexao;
 +
 +
import java.sql.Connection;
 +
import java.sql.SQLException;
 +
import java.sql.Statement;
 +
 +
import conexao.ConBanco;
 +
 +
public class Servidor {
 +
 +
double pot;
 +
 +
public Servidor(double dado) {
 +
 +
dado = this.pot;
 +
}
 +
 +
// public void RecebeDado() {
 +
 +
// }
 +
 +
public void EnviaDado() {
 +
 +
Connection con = null;
 +
ConBanco conecta = new ConBanco(con);
 +
Statement stmt;
 +
 +
con = conecta.getConnection();
 +
try {
 +
 +
stmt = con.createStatement();
 +
stmt.executeQuery("Use energia");
 +
String sql = "UPDATE Dado SET potencia=" + this.pot;
 +
stmt.executeUpdate(sql);
 +
stmt.close();
 +
 +
// NÃO ESTÁ ENVIANDO PARA A BASE DE DADOS!
 +
// Problema a resolver!
 +
 +
} catch (SQLException e) {
 +
// TODO Auto-generated catch block
 +
e.printStackTrace();
 +
}
 +
System.out.println("Dado Enviado");
 +
 +
}
 +
 +
}
 +
 +
 +
</syntaxhighlight>
 +
 +
Class MainServidor:
 +
 +
<syntaxhighlight lang=java>
 +
package conexao;
 +
 +
public class MainServidor {
 +
 +
public static void main(String args[]) {
 +
 +
Servidor server = new Servidor(23.0);
 +
server.EnviaDado();
 +
 +
}
 +
}
 +
 
</syntaxhighlight>
 
</syntaxhighlight>

Edição das 22h11min de 9 de outubro de 2013

Etapas da Fase 1

  1. Estudar e implementar um exemplo básico de programa Java transmissor-receptor (periódico) de um dado simples (struct com time stamp e valor float) usando o protocolo UDP;
  2. Instalar uma base de dados MySQL e criar uma tabela para armazenamento dos dados do sensor;
  3. Modificar o programa Java para inserir o dado na base de dados;
  4. Modificar o programa Java receptor para receber o dado transmitido pelo programa do Arduíno;
  5. Usar um cliente MySQL para consultar a base e verificar o correto armazenamento;
  6. Avaliar o sistema em conjunto com o Giulio e com a equipe


Bibliografia

  1. Exemplo de programa Java UDP [1]
  2. Instalação e criação de tabela MySQL no Linux [2];


Etapas

Data:26/09 - última reunião
Data:27/09 - 05/10 - Pesquisa e estudo de conceitos novos em Java, conceitos de redes,entre outros.
305/10- 7/10 - implementação da Aplicação Java com Banco de Dados (erro para conexão da aplicação Java com o Banco).
08/10 - Erro com a conexão RESOLVIDO!

SEMANA DO DIA 26/09 ­ 08/10

Atualmente o projeto se resume em duas partes:

  • A parte onde teremos o sensor e o Arduino enviando Dados para uma máquina(Giulio), para fins de melhor compreensão essa máquina será o “cliente”, dentro do que chamamos de arquitetura Cliente/Servidor.
  • A outra parte seria as aplicações em Java rodando no “cliente” e no servidor. Essas aplicações vão se comunicar por um protocolo (TCP/UDP) que ainda não foi definido. No lado da máquina “cliente” teremos uma aplicação Java que será responsável por:
    • Receber dados do sensor e do Arduino;
    • Tratar esses dados(que tipo de dado?,quais dados?...);
    • enviar essas dados para a Aplicação Java que está no Servidor via a algum protocolo ainda não definido (como TCP ou UDP);
  • O servidor será responsável por:
    • receber os dados do “cliente”;
    • enviar esses dados para o Banco de Dados (SQL+JAVA);
    • OBS: para a aplicação Java poder se comunicar com o Banco de Dados é preciso instalar um Drive de comunicação, é este drive que será a interface da aplicação Java com o Banco de Dados. Requisitos:
    • Servidor MySQL ( Já está Instalado!);
    • PHPMyAdmin ­ gerenciador do Banco de Dados(Já está Instalado!);
    • Drive de Conexão com o MySql (Já instalado!);
    • Aplicação Java ­ Servidor (Iniciado mas ainda não terminado!);

Problemas encontrados:

  • Driver de Conexão com o MySql: como já havia citado anteriormente para a aplicação Java que está “rodando” no servidor se comunicar o Banco de Dados precisa ser instalado um Driver de acordo com o Banco Usado, no nosso caso um driver específico para o MySql, esse driver assim como toda a interface que fará essa comunicação será o JDBC e seu driver será o msql.JDBC.Driver, que pode ser baixado no site do mySql:
     http://dev.mysql.com/downloads/connector/j/#downloads
  • Escolha a plataforma de acordo com o sistema operacional que está sendo usado, como no nosso projeto estamos usando Linux, escolhemos plataforma independente, extraimos o arquivo escolhemos o arquivo já compilado .jar e adicionamos no Eclipse (editor de código para Java): Project > Properties > Java Build Path > Add External JARs.

Terá duas possibilidades de Driver o da Oracle ou do MySql, a principio o problema de comunicação que estava dando é que estava sendo usado o Driver errado (o da Oracle ao invés do MySql), esse driver deve ser adicionado no código java de conexão assim como se segue:

        “com.mysql.jdbc.Driver”


A imagem a seguir demonstra como o projeto está estruturado atualmente:


FigTrabalhoJessica1.png

Código de Conexão com o Banco:

package conexao;

import java.sql.Connection;
import java.sql.DriverManager;

public class ConBanco {

	Connection conexao = null;

	public ConBanco(Connection con) {

		con = this.conexao;
	}

	public Connection getConnection() {

		try {

			String url = "jdbc:mysql://localhost:3306/"; // 3306 e a porta do MySql
								 
			String dbName = "energia";
			String driver = "com.mysql.jdbc.Driver";
			String user = "root";
			String senha = "jessica2604"; // senha do banco de dados

			Class.forName(driver).newInstance();
			this.conexao = DriverManager.getConnection(url + dbName, user, senha);
			System.out.println("Conectado " + this.conexao + ".");

		} catch (Exception e) {
			System.out.println("Erro ao se conectar com o Banco");
			e.printStackTrace();
		}
		return this.conexao;
	}

}

Código do Servidor:

package conexao;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

import conexao.ConBanco;

public class Servidor {

	double pot;

	public Servidor(double dado) {

		dado = this.pot;
	}

	// public void RecebeDado() {

	// }

	public void EnviaDado() {

		Connection con = null;
		ConBanco conecta = new ConBanco(con);
		Statement stmt;

		con = conecta.getConnection();
		try {

			stmt = con.createStatement();
			stmt.executeQuery("Use energia");
			String sql = "UPDATE Dado SET potencia=" + this.pot;
			stmt.executeUpdate(sql);
			stmt.close();

			// NÃO ESTÁ ENVIANDO PARA A BASE DE DADOS!
			// Problema a resolver!

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("Dado Enviado");

	}

}

Class MainServidor:

package conexao;

public class MainServidor {

	public static void main(String args[]) {

		Servidor server = new Servidor(23.0);
		server.EnviaDado();

	}
}