Plotar gráficos a partir de txt

14 respostas
catataufranca

Gerei um arquivo txt onde cada linha é um ponto. Como colocar esses dados em um vetor? Já tentei com utilizando o Scanner, mas não consegui.
Estou utilizando o MEChart.
Alguém tem alguma idéia?

valeu!

14 Respostas

quikkoo

em j2me ñ tema classe Scanner, leia o arquivo com classe InputStream mesmo, ou DataInputStream se vc achar mais fácil, coloque seu arquivo no diretorio ‘res’ e faç assim:

InputStream in = Class.getResourseAsStream("/arquivo.txt");
// ou
DataInputStream in = DataInputStream(Class.getResourseAsStream("/arquivo.txt"));

caso vc receba esse arquivo atravez de alguma conexão entao faça assim:

InputStream in = socket.openInputStream();
// ou
DataInputStream in = socket.openDataInputStream();

depois é só ler número por número e armazenando no vetor

catataufranca

Então...
Os txt está dentro de um diretório no smartphone.
Daí eu fiz assim

import com.mechart.chart.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.io.*;  

public class UsoLineChart1 extends MIDlet{  
    private Display display;  
    private Form fmMain;  
    private LineChart lineChart;    
    
    
    public void startApp() 
    {   
        InputStream in = Class.getResourseAsStream("c:/dados.txt"); //aki ele dá um erro cannot find symbol
        //???
        display = Display.getDisplay(this);    
        fmMain = new Form("Gráfico");    
        ClCanvas cv = new ClCanvas();               
        double[] dados = new double[]{}; //quero inserir os dados aki   
        String[] tempo = new String[]{"01", "02", "03", "04", "05", "06"};    
        lineChart = new LineChart(cv.getWidth(), 110, dados, tempo, "Graph", 1, LineChart.MAROON, LineChart.WHITE, (double)2.1);    
        fmMain.append(lineChart);    
        display.setCurrent(fmMain);  
    }  
    public void pauseApp() {}  
    
    public void destroyApp(boolean unconditional) {}
}
class ClCanvas extends Canvas {  
    protected void paint(Graphics graphics) {}
}

Qq tá faltando pra dar certo??

Valeu mais uma vez!

quikkoo

pra fuçar no sistema de arquivos do dispositivo vc vai precisar usar a api file connection, acho umpocuo chato mexer com ela, mas é a única forma de vc encontrar esse arquivo

mas acho q se vc gravou esse arquivo no celular, então, em algum momento ele esteve em ‘suas mãos’, então sugiro que vc o guarde em um lugar mais fácil de se recuperar, como na base rms por exemplo

inté

catataufranca

quikkoo:
pra fuçar no sistema de arquivos do dispositivo vc vai precisar usar a api file connection, acho umpocuo chato mexer com ela, mas é a única forma de vc encontrar esse arquivo

mas acho q se vc gravou esse arquivo no celular, então, em algum momento ele esteve em ‘suas mãos’, então sugiro que vc o guarde em um lugar mais fácil de se recuperar, como na base rms por exemplo

inté

Então… como eu crio um Record Store? Será q tem com eu receber dados via bluetooth e armazenar em um Record Store?

valeu!!

quikkoo

da uma olhada nesse tuto: persistência com midp

e qlqr coisa tamo ae. flw, t+

catataufranca

quikkoo:
da uma olhada nesse tuto: persistência com midp

e qlqr coisa tamo ae. flw, t+


Putz valeu,

tipow eu abrir a MidLet no emulador daki, mandei um executar e não acontece nada.
No janela de saída do NetBeans aparece isso aki:

-- RecordStore inexistente
-- open
java.lang.NullPointerException
        at rms.TutorialRecordStore.add(TutorialRecordStore.java:73)
        at rms.TutorialRecordStore.execute(TutorialRecordStore.java:14)
        at rms.DisplayableRMS.commandAction(DisplayableRMS.java:33)
        at javax.microedition.lcdui.Display$DisplayAccessor.commandAction(Display.java:2093)
        at javax.microedition.lcdui.Display$DisplayManagerImpl.commandAction(Display.java:2929)
        at com.sun.midp.lcdui.DefaultEventHandler.commandEvent(DefaultEventHandler.java:297)
        at com.sun.midp.lcdui.AutomatedEventHandler.commandEvent(AutomatedEventHandler.java:667)
        at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.handleVmEvent(DefaultEventHandler.java:711)
        at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(DefaultEventHandler.java:608)

Qq tá pegando? hehehehe

brigadão!!

quikkoo

acho q é isso:

public class TutorialRecordStore {

	// o registro é iniciado como null
	private RecordStore rs = null;

	public void open() {
		try {
			// aqui vc tenta deletar um registro existente, mas rs é igual a null
			rs.deleteRecordStore(RS_NAME);
			rs = RecordStore.openRecordStore(RS_NAME, true);
			...
	}

mude pra isso:

public void open() {
	try {
		// já q é uma função estática vc ñ precisa do objeto
		RecordStore.deleteRecordStore(RS_NAME);
		rs = RecordStore.openRecordStore(RS_NAME, true);
		...
	}

acho q isso deve resolver
e qlqr coisa vc pode depurar seu programa pra saber exatamente onde esta sendo jogada essa exeção

flw, t*

catataufranca

quikkoo:
acho q é isso:

public class TutorialRecordStore {

	// o registro é iniciado como null
	private RecordStore rs = null;

	public void open() {
		try {
			// aqui vc tenta deletar um registro existente, mas rs é igual a null
			rs.deleteRecordStore(RS_NAME);
			rs = RecordStore.openRecordStore(RS_NAME, true);
			...
	}

mude pra isso:

public void open() {
	try {
		// já q é uma função estática vc ñ precisa do objeto
		RecordStore.deleteRecordStore(RS_NAME);
		rs = RecordStore.openRecordStore(RS_NAME, true);
		...
	}

acho q isso deve resolver
e qlqr coisa vc pode depurar seu programa pra saber exatamente onde esta sendo jogada essa exeção

flw, t*

Problema resolvido!!

Agora eu vo dá uma bela duma estudada nesse tuto pra ver se eu manjo o lance!!! Depois vai ser tacar o bluetooth por cima disso tudo…
Mas vamu um osso de cada vez!!

Brigadão

catataufranca

Então, surgiu uma dúvida…

ByteArrayOutputStream baos = new ByteArrayOutputStream();//?? pq tem esse cara aki?
      DataOutputStream dos = new DataOutputStream(baos);// só esse não bastava?
      dos.writeUTF(nome);
      dos.flush();//??
      byte[] data = baos.toByteArray();
      int id = rs.addRecord(data, 0, data.length); 
      baos.close();
      dos.close();

Tipow… eu quero guardar a string né? Pq eu precisei de um byte array?

Valeu de novo

quikkoo

os registros são guardados no registro como bytes, a classe DataOutputStream ñ tem uma função que retorna os bytes, a ByteArrayOutputStream tem e vc poderia usar somente ela, mas as suas funções de escrita escreve apenas bytes, e é chato ficar transformando tudo q é tipo de dados em bytes, então a classe DataOutputStream encapsula um objeto OutputStream (na qual ByteArrayOutputStream é uma classe derivada) e escreve os dados nesse objeto pra vc

eu tb acho q tem classe d+ nessa história, mas fazer oq, java foi projetado assim…

catataufranca

Ahhh… saquei…
Agora eu preciso é descolar um jeito de passar os dados para dentro do RMS… ao invés de colocá-los diretamente no código fonte.

to quebrando a cabeça aki…

catataufranca

Vc não tem nenhum exemplo de bluetooth igual a esse de rms q vc me arrumou?
Tá osso aki

Valeu

quikkoo

olha esse tópico: bluetooth com j2me
java net > bluetooth resources
tem essa apostila tb: j2me bluetooth programimng

catataufranca

Blz… Vo dá uma estudada!

Valeu

Criado 13 de maio de 2008
Ultima resposta 15 de mai. de 2008
Respostas 14
Participantes 2