[Resolvido] = problema com rxtxcomm

6 respostas
R

Pessoal estou com um exemplo aqui

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

public class ListPortClass {

	public static void main(String[] s) {
		try {
			CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier("COM1");
			if (portIdentifier.isCurrentlyOwned()) {
				System.out.println("Port in use!");
			} else {
				System.out.println(portIdentifier.getName());

				SerialPort serialPort = (SerialPort) portIdentifier.open("ListPortClass", 300);
				int b = serialPort.getBaudRate();
				System.out.println(Integer.toString(b));
				serialPort.setSerialPortParams(300, SerialPort.DATABITS_8,SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
				OutputStream mOutputToPort = serialPort.getOutputStream();
				InputStream mInputFromPort = serialPort.getInputStream();
				String mValue = "AT\r";
				System.out.println("beginning to Write . \r\n");
				mOutputToPort.write(mValue.getBytes());
				System.out.println("AT Command Written to Port. \r\n");
				mOutputToPort.flush();
				System.out.println("Waiting for Reply \r\n");
				Thread.sleep(500);
				byte mBytesIn[] = new byte[20];
				mInputFromPort.read(mBytesIn);
				mInputFromPort.read(mBytesIn);
				String value = new String(mBytesIn);
				System.out.println("Response from Serial Device: " + value);
				mOutputToPort.close();
				mInputFromPort.close();
			}
		} catch (Exception ex) {
			System.out.println("Exception : " + ex.getMessage());
		}

	}
}

ja importei o jar e joguei as dlss no system 32

alguem sabe como me ajudar?

na verdade só preciso ler os dados de umas das portas COM, qualquer classe me ajudaria, eu tentei com a serialcomm, mais parece q ela nao funciona no win7 64bits

olha só o erro da rxtxcomm
java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver
Exception in thread "main" java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path
	at java.lang.ClassLoader.loadLibrary(Unknown Source)
	at java.lang.Runtime.loadLibrary0(Unknown Source)
	at java.lang.System.loadLibrary(Unknown Source)
	at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:83)
	at ListPortClass.main(ListPortClass.java:8)
e esse é o erro da serialcomm
STATUSjavax.comm.NoSuchPortException

alguem sabe como resolver?

só funciona em windows 32 bits?

valew pessoal

6 Respostas

D

como eu respondi no topico anterios que voce abriu, nao funciona em windows 64 bits, se o processador for intel, e foi descontinuado essa biblioteca...
recomendo vc usar o windows 32 bits ou arrumar um pc com amd para funcionar o 64 bits

import gnu.io.CommPort;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;

import java.io.FileDescriptor;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

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(57600,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.");
            }
        }     
    }
    
    /** */
    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
            {
                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();
            }            
        }
    }
    
    public static void main ( String[] args )
    {
        try
        {
            (new TwoWaySerialComm()).connect("COM3");
        }
        catch ( Exception e )
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

o erro que deu referente a porta foi que nao foi encontrado... verifica quais portas estao disponivel na maquina e seta no codigo...

R

entao cara, valew de novo, é quem eu te falei eu tenho um desktop com amd phenom x4, e o intel com i5 em nenhum dos 2 funciona da o mesmo erro, eu vou pegar uma máquina e colocar 32 bits pra testar, valew mesmo.

Só mais uma pergunda interfere ser Windows 7 32 ou o XP? qualquer um daria?

D

na época que eu usava, eu tive muito problema por ser processador intel, e no amd funcionava perfeitamente… vou ver se acho a classe que eu fiz e posto aqui para vc ter como exemplo, em ambiente 32bits funciona perfeitamente, mais é aquele problema a biblioteca foi descontinuada, e em java ta dificil achar algo bom para subistituir… eu tinha chegado a pesquisar ate outras linguagens para fazer isso e o C++ é o que se enquadra melhor para fazer essa tarefa…

daki apouco eu posto um codigo para vc ver e testar

R

cara valew

estou estando o xp em um note aqui e vou criar uma vm no meu desktop pra ver, valew mesmo em

R

cara no xp funcionou, vou converter oque ele esta trazendo só pra calibrar o aparelho valew mesmo em

R

resolvido mesmo valew pela ajuda

Criado 23 de julho de 2012
Ultima resposta 26 de jul. de 2012
Respostas 6
Participantes 2