Fórum serial #415774

23/04/2012

0

O codigo a baixo é o mesmo do Simpleread da sun, me retorna um erro,
coloqueo o rxtx na pasta do jdk/jre/lib/ext

import gnu.io.*;
import java.io.*;
import java.util.*;


public class serial implements Runnable, SerialPortEventListener {
    static CommPortIdentifier portId;
    static Enumeration	      portList;
    InputStream		      inputStream;
    SerialPort		      serialPort;
    Thread		      readThread;

    /**
     * Method declaration
     *
     *
     * @param args
     *
     * @see
     */
    public static void main(String[] args) {
    boolean		      portFound = false;
    String		      defaultPort = /dev/term/a;

 	if (args.length > 0) {
	    defaultPort = args[0];
	} 
   
	portList = CommPortIdentifier.getPortIdentifiers();

	while (portList.hasMoreElements()) {
	    portId = (CommPortIdentifier) portList.nextElement();
	    if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
		if (portId.getName().equals(defaultPort)) {
		    System.out.println(Found port: +defaultPort);
		    portFound = true;
		    //serial reader = new serial();
		} 
	    } 
	} 
	if (!portFound) {
	    System.out.println(port  + defaultPort +  not found.);
	} 
 	
    } 

    /**
     * Constructor declaration
     *
     *
     * @see
     */
    public serial() {
	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();
    }

    /**
     * Method declaration
     *
     *
     * @see
     */
    public void run() {
	try {
	    Thread.sleep(20000);
	} catch (InterruptedException e) {}
    } 

    /**
     * Method declaration
     *
     *
     * @param event
     *
     * @see
     */
    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];

	    try {
		while (inputStream.available() > 0) {
		    int numBytes = inputStream.read(readBuffer);
		} 

		System.out.print(new String(readBuffer));
	    } catch (IOException e) {}

	    break;
	}
    } 

}



Exception in thread main java.lang.UnsupportedClassVersionError: serial : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: serial. Program will exit.
Ronaldo Garcia

Ronaldo Garcia

Responder

Posts

24/04/2012

Ronaldo Garcia

Bom dia!
Estou precisando de ajuda com referencia a comunicação serial, pois ja peguei alguns exemplos e tive a infelicidade ou falta de conhecimento quanto a ler dados na porta serial.

o erro abaixo é refernte a classe SimpleRead.java

quando executo pelo eclipse retorna esse erro.
fico no aguardo.



Exception in thread main java.lang.UnsupportedClassVersionError: SimpleRead : Unsupported major.minor version 51.0

Responder

Gostei + 0

24/04/2012

Robson Teixeira

Sua classe deve possuir o serialVersionId pois com esse atributo e possivel realizar as tarefas que deseja e também ambas suas classes devem implementar Serializable.

espero ter ajudado.
att
robson
Responder

Gostei + 0

24/04/2012

Edson Melo

ola pessoal, estava passando por aqui e vi, trabalho com delphi, a pouco tempo, mas pelo que li, levanto uma pequena lebre que talvez faça sentido, ou talvez abra mais conhecimento.

pessoal, a saida paralela dos computadores, ja não existe mais, a saida serial esta indo pelo mesmo caminho, porque então continuar a usar, ou desenvolver sistemas utilizando esta opções fadada ao fim, todas elas estão indo para a USB, não seria mais logico, começar mos a pensar nas USB como porta de Comunicação, ou sera que USB e Serial seriam compativeis.

Não me entendam mal, não quero desencorajar nada, mas e para se pensar no que falei, e evitaria dores de cabeça futura na hora que a porta Serial for abandonada como foi a Paralela.

ate breve
Responder

Gostei + 0

26/04/2012

Ronaldo Garcia

Meu caro amigo Edson, infelizmente pessoas com pensamento conservador no topo da administração do negocio pensão que time que se esta ganhando não se meche, só esqueceu de pensar na evolução da tecnologia.
Sistema atual é todo em cobol e sistema de comunicação é serial, então penso em trafegar nos dois sentitos, rede normal com RJ45 e serial, após cincronizar dados e quando estiver 100%, cortar esse tipo de comunicação, estou estudando isso mas não consegui nada concreto.

obrigado pela compreenção, e não te enterpretei mau. um abraço!
Responder

Gostei + 0

26/04/2012

Daniel

Quanto aos outros integrantes do fórum, por favor, vamos parar de dar opinião pessoal principalmente quando não sabe das coisas. As portas seriais são extremamente utilizadas na indústria e automação e existem várias variantes. A USB é uma delas. Gostaria que os fóruns fossem mais sérios e objetivos.

Meu amigo Ronaldo, tenta usar o código que te enviei abaixo. Precisa da lib rxtxcomm que deve ser a mesma que vc está suando. Lembrando que deve ter a lib correspondente ao seu sistema operacional respeitando o tamanho da palavra com que ele trabalha (se é 64 ou 32 bits). Vc precisa usá-la da seguinte maneira. Provavelmente seu outro código foi compilado em uma versão superior ao jre que vc tem instalado. Compila este código lembrando de adicionar o método main chamando o connect e alterar o número da sua porta e parâmetros de comunicação para o dispositivo.

Copie para RXTXcomm.jar ---> <JAVA_HOME>\jre\lib\ext
Copie rxtxSerial.dll ---> <JAVA_HOME>\jre\bin

Código:


import gnu.io.CommPort;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 *
 * @author dmrocha
 */
public class TwoWaySerialComm {

    public TwoWaySerialComm() {
        super();
    }

    void connect(String portName) throws Exception {
        CommPortIdentifier portIdentifier =
                CommPortIdentifier.getPortIdentifier(portName);
        if (portIdentifier.isCurrentlyOwned()) {
            System.out.println(Error: `port is currently in use);
        } else {
            CommPort commPort = portIdentifier.open(this.getClass().getName(), 2000);
            if (commPort instanceof SerialPort) {
                SerialPort serialPort = (SerialPort) commPort;
                serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
                InputStream in = serialPort.getInputStream();
                OutputStream out = serialPort.getOutputStream();
                (new Thread(new SerialReader(in))).start();
                (new Thread(new SerialWriter(out))).start();
            } else {
                System.out.println(Error: only serial ports are handled by this example.);
            }
        }
    }

    void disconnect (String portName) throws Exception
    {
        CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier(portName);
        if (portIdentifier.isCurrentlyOwned()){
            CommPort commPort = portIdentifier.open(this.getClass().getName(), 2000);
            commPort.close();
        }
            
    }
    public static class SerialReader implements Runnable {

        InputStream in;

        public SerialReader(InputStream in) {
            this.in = in;
        }

        public void run() {
            byte[] buffer = new byte[1024];
            int len = -1;
            try {
                Principal principal = new Principal();

                while ((len = this.in.read(buffer)) > -1) {
                    System.out.print(new String(buffer, 0, len));
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    public static class SerialWriter implements Runnable {

        OutputStream out;

        public SerialWriter(OutputStream out) {
            this.out = out;
        }

        public void run() {
            try {
                int c = 0;
                while ((c = System.in.read()) > -1) {
                    this.out.write(c);
                    
                    
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
 
}

Responder

Gostei + 0

26/04/2012

Ronaldo Garcia

Muito obrigado Daniel, pois vou fazer os testes! muito obrigado pela força e embreve retornarei!
Responder

Gostei + 0

26/04/2012

Edson Melo

caro daniel, este e um forum de debates sobre esperiencias e ideias, nãoo tive a intenção de atrapalhar, mas tive uma criação que me ensinou a escutar analizar e aproveitar ideias que me parecem boas, por isso postei a mensagem, mas pessoas atrazadas e com ideias fioxas , nunca vao entender estas posições, este e um forum onde cada um expoe suas ideias, se serão aproveitadas muito bem, se nao desconsidere, simplesmente isso.

mas me alegro por ter uma visao da evolução e nao ficar pensando em tecnologias ja quase ultarpassadas, pois estão surgindo nmovas que com certesa substituirão as atuais , e porque não ja nos preparar mos para um futuro, que creio sera melhor.

desculpem me pela intromissao, se todos pensassem do mesmo modo , não havia problemas sem solução não e
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar