Avatar billede musiigedeo Nybegynder
13. juni 2007 - 10:47 Der er 7 kommentarer og
1 løsning

Hvordan kan jeg hente data fra SimpleRead classen

Jeg bruger følgende class til at læse fra serial porten

import java.io.*;
import java.util.*;
import javax.comm.*;
public class SimpleRead implements SerialPortEventListener {
     
      private static final String SERIALPORT = "COM1";
     
      private CommPortIdentifier portId;
      private Enumeration portList;
      public InputStream inputStream;
      private SerialPort serialPort;
      public static String data;
           
      public SimpleRead(){
         
          portList = CommPortIdentifier.getPortIdentifiers();
          while (portList.hasMoreElements()) {
                  //System.out.print("test"); 
                portId = (CommPortIdentifier) portList.nextElement(); 
                if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
                    if (portId.getName().equals(SERIALPORT)) {
                  try {
                        serialPort = (SerialPort) portId.open("SimpleReadApp", 2000);
                        inputStream = serialPort.getInputStream();
                        serialPort.addEventListener(this);
                        serialPort.notifyOnDataAvailable(true);
                        //set config.
                        serialPort.setSerialPortParams(9600,
                            SerialPort.DATABITS_8,
                            SerialPort.STOPBITS_1,
                            SerialPort.PARITY_NONE);
                    } catch (Exception e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                    }
                    }
                }
            }
    }
    public void serialEvent(SerialPortEvent event) {
       
            switch(event.getEventType()) {
            case SerialPortEvent.BI:
            case SerialPortEvent.OE:
            case SerialPortEvent.FE:
            case SerialPortEvent.PE:
            case SerialPortEvent.CD:
            case SerialPortEvent.CTS:
            case SerialPortEvent.DSR:
            case SerialPortEvent.RI:
            case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
                break;
            case SerialPortEvent.DATA_AVAILABLE:   
            //data is available - read it!
            byte[] readBuffer = new byte[8];
             
                try {
                    while (inputStream.available() > 0) {
                        int numBytes = inputStream.read(readBuffer);
                    }
                    data = new String(readBuffer);
                    System.out.print(data);
                    System.out.print("ja ja");
                   
                } catch (IOException e) {
                //TODO Auto-generated catch block
                e.printStackTrace();
                }
                break;
            }
        }

men problem er at når jeg prøver at hente String data i en anden classe som

myclass{
SimpleRead read = new SimpleRead();
void getData(){
  String Data1 = read.data;
}

}
får jeg bare null. hvor bliver min data af?
Avatar billede mikkelbm Nybegynder
13. juni 2007 - 10:53 #1
Det er højst sandsynligt fordi at du kalder read.data inden der er læst noget fra serielporten.
Avatar billede mikkelbm Nybegynder
13. juni 2007 - 10:54 #2
Prøv eventuelt i din eventhandler:

public void serialEvent(SerialPortEvent event)
{
  System.out.println ("Event received");
  // Resten af din kode..
}


For at se om du modtager nogle events.
Avatar billede musiigedeo Nybegynder
02. juli 2007 - 12:26 #3
jeg har løst det
Avatar billede mikkelbm Nybegynder
02. juli 2007 - 12:38 #4
Og løsningen var?
Avatar billede musiigedeo Nybegynder
20. juli 2007 - 16:23 #5
jeg skulle lave de to konstruktor sålades
GUI konstruktor

public Gui(){
  SimpleRead read = new SimpleRead(this);
}

og SimpleRead konstruktor

Gui parent;
public SimpleRead(Guiparent){
          this.parent = parent;
                  //initialisering af porten
}
Avatar billede musiigedeo Nybegynder
20. juli 2007 - 16:24 #6
føler du dig snydt mikkelbm? :-)
Avatar billede mikkelbm Nybegynder
20. juli 2007 - 20:16 #7
Næh, overhovedet ikke. Det er bare normal god praksis at vise andre hvad løsningen blev, så de eventuelt kan drage nytte af det!

Husk at acceptere dit eget svar, så spørgsmålet bliver lukket.
Avatar billede musiigedeo Nybegynder
22. juli 2007 - 15:54 #8
Det er klart..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester