Formatar string ?!

4 respostas
Tomassoni
Galera ajuda eu com essa formatção, to lendo os bytes da porta serial assim:

import <a href="http://java.io">java.io</a>.<em>;

import java.util.</em>;

import javax.comm.*;

import sun.misc.ASCIICaseInsensitiveComparator;

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();
            }
        }
    }
}

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_7,
            SerialPort.STOPBITS_1,
            SerialPort.DATABITS_7);
    } catch (UnsupportedCommOperationException e) {}
    readThread = new Thread(this);
    readThread.start();
}

public void run() {
    try {
        Thread.sleep(10000);
    } 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[10];
      
        
        try {
            while (inputStream.available() > 0) {
                int numBytes = inputStream.read(readBuffer);
            }
            System.out.print(new String(readBuffer));
        } catch (IOException e) {}
        break;
    }
}

}

o retorno e este:

Š 8º

Nossa nem consigo colocar o retorno aqui! mas retorna um monte de quadradinhos e uns caracteres locos(Š )…sendo que teria que ser assim:

G 80 g

Isso vem de uma blança …

Alguém tem ideia do que eu possa fazer…
Agradeço desde de já

4 Respostas

proazevedo

Bom, não sei se isso pode te ajudar, porque estou começando a programar em Java, e nem mesmo entendí o código digitado, mas a instrução para transformar em String é :

String tipostring = new String(b).trim();
  return tipostring;

Espero ter te ajudado…

proazevedo
String tipostring = new String(b).trim();
  return tipostring;

Sendo b, no caso seria byte:

clodoaldomarques

Amigão, pelo o que entindi, vc está querendo converter um tipo byte em String, não é isso?
ao invés de usar o tipo primitivo byte tente usar a pacote Byte e use o método toString para converter o valor, talvez dê certo.

Um abração

Tomassoni

Repostas:

Eu usei o new String (b).trim -> relamente acabou com os caracteres locos valeu cara … não entendi o porque muito bem mas…

E enquanto a usar o pacote, como assim não entendi,ainda continuo com alguns probleminhas que talvez isso possa me ajudar,poderia da um exmplo? a proposito estou querendo fazer o que citou mesmo, transformar um byte em string.

Valeu

Criado 15 de setembro de 2006
Ultima resposta 16 de set. de 2006
Respostas 4
Participantes 3