Avatar billede jenvest Nybegynder
13. november 2004 - 10:18 Der er 2 kommentarer

javax seriel problem

Hej
Jeg har et problem med javax, jeg får et input fra seriel, der skal bruges som en renset streng. efter jeg har renset strengen har jeg prøvet at udskrive den, men der kommer ikke noget ud, den skriver kun test1 = ,test2 = osv. og det bliver den så ved med...om og om igen. Jeg skal have den ud som en streng da jeg skal kontrollere den i en database.

Jeg har arbejdet videre på et eksempel fra javax api'et, de originale indstillinger er lavet til kommentarer.



import java.io.*;
import java.util.*;
import javax.comm.*;

public class SimpleRead implements Runnable, SerialPortEventListener {
    static CommPortIdentifier portId;
    static Enumeration portList;

    InputStream inputStream;
    SerialPort serialPort;
    Thread readThread;

    public static void main(String[] args) {
        portList = CommPortIdentifier.getPortIdentifiers();

        while (portList.hasMoreElements()) {
            portId = (CommPortIdentifier) portList.nextElement();
            if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
                if (portId.getName().equals("COM1")) {
                //if (portId.getName().equals("/dev/term/a")) {
                    SimpleRead reader = new SimpleRead();
                }//if
            }//if
        }//while
    }//main

    public SimpleRead() {
        try {
            serialPort = (SerialPort) portId.open("SimpleReadApp", 2000);
        } catch (PortInUseException e) {}
        try {
            inputStream = serialPort.getInputStream();
        } catch (IOException e) {}
    try {
            serialPort.addEventListener(this);
    } catch (TooManyListenersException e) {}
        serialPort.notifyOnDataAvailable(true);
        try {
            serialPort.setSerialPortParams(9600,
                SerialPort.DATABITS_8,
                SerialPort.STOPBITS_1,
                SerialPort.PARITY_NONE);
        } catch (UnsupportedCommOperationException e) {}
        readThread = new Thread(this);
        readThread.start();
    }

    public void run() {
        try {
            Thread.sleep(20000);
        } catch (InterruptedException e) {}
    }

    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:
        //byte[] readBuffer = new byte[20];   
        StringBuffer readBuffer = new StringBuffer();
           
            try {
                while (inputStream.available() > 0) {
                  //int numBytes = inputStream.read(readBuffer);
                  String output = readBuffer.toString();
                  String ny1 = output.replaceAll("","");
                  String ny2 = ny1.replaceAll("","");
                  String ny3 = ny2.replaceAll(" ","");
                 
                  System.out.println ("test1 = " + output);
                  System.out.println ("test2 = " + ny2);
                  System.out.println ("test3 = " + ny3);
                 
                 
                }//while
                //System.out.print(new String(readBuffer));             
            } //try
            catch (IOException e) {}
            break;
        }//geteventtype
    }//serialevent
}
Avatar billede _carsten Nybegynder
13. november 2004 - 15:50 #1
Jeg er ikke lige nogen ørn til noget serielt sjov, men prøv at erstatte

            try {
                while (inputStream.available() > 0) {
                  //int numBytes = inputStream.read(readBuffer);
                  String output = readBuffer.toString();
                  String ny1 = output.replaceAll("","");
                  String ny2 = ny1.replaceAll("","");
                  String ny3 = ny2.replaceAll(" ","");
                 
                  System.out.println ("test1 = " + output);
                  System.out.println ("test2 = " + ny2);
                  System.out.println ("test3 = " + ny3);
                 
                 
                }//while


MED


    BufferedReader reader = new InputStreamReader( inputStream );
    String line = "";
   
            try {
                while ( (line = reader.readline()) != null) {
                  readBuffer.append( line );
                  String output = readBuffer.toString();
                  String ny1 = output.replaceAll("","");
                  String ny2 = ny1.replaceAll("","");
                  String ny3 = ny2.replaceAll(" ","");
                 
                  System.out.println ("test1 = " + output);
                  System.out.println ("test2 = " + ny2);
                  System.out.println ("test3 = " + ny3);
                 
                 
                }//while
Avatar billede jenvest Nybegynder
14. november 2004 - 11:37 #2
tak for foreslaget, det vil jeg prøve
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