La lecture de port COM en Java, l'Erreur 0 x 5 ..\rxtx\src\termios.c(892)
Je suis en train d'écrire une petite application en Java pour lire à partir de COM port, et depuis que nous utilisons les systèmes 64 bits, j'ai eu à utiliser RXTX. Le problème, c'est quand j'essaie de lancer mon application, j'obtiens l'erreur suivante:
"Erreur 0 x 5 ..\rxtx\src\termios.c(892):Accès Refusé"
Essayé mon code et aussi le code de RXTX site, quelqu'un a une expérience avec ce avant?
Voici mon code:
import gnu.io.CommPort;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**
* This version of the TwoWaySerialComm example makes use of the
* SerialPortEventListener to avoid polling.
*
*/
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 SerialWriter(out))).start();
serialPort.addEventListener(new SerialReader(in));
serialPort.notifyOnDataAvailable(true);
}
else
{
System.out.println("Not a serial port...");
}
}
}
public static class SerialReader implements SerialPortEventListener
{
private InputStream in;
private byte[] buffer = new byte[1024];
public SerialReader ( InputStream in )
{
this.in = in;
}
public void serialEvent(SerialPortEvent arg0) {
int data;
try
{
int len = 0;
while ( ( data = in.read()) > -1 )
{
if ( data == '\n' ) {
break;
}
buffer[len++] = (byte) data;
}
System.out.print("Result="+new String(buffer,0,len));
}
catch ( IOException e )
{
e.printStackTrace();
System.exit(-1);
}
}
}
public static void main ( String[] args )
{
try
{
(new TwoWaySerialComm()).connect("COM1");
}
catch ( Exception e )
{
//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
pouvez-vous changer, juste pour le test ::
J'ai cette erreur spam dans ma console à chaque fois que je débrancher l'USB-2-COM adaptateur lorsqu'il est connecté.
while ( ( data = in.read()) > -1 )
dans while ( ( data = in.read()) > 0 )
J'ai cette erreur spam dans ma console à chaque fois que je débrancher l'USB-2-COM adaptateur lorsqu'il est connecté.
OriginalL'auteur Sin5k4 | 2012-05-14
Vous devez vous connecter pour publier un commentaire.
Je suis tombé sur ce problème, car le port était en cours d'utilisation. Une instance précédente de javaw.exe paru dans le gestionnaire des tâches de Windows, il tenait le devant de la port.
La raison pour laquelle les processus java n'a accrocher dans CommPortIdentifier était un problème matériel: Lors du branchement de l'USB-2-convertisseur série qu'il m'est arrivé de l'utiliser dans un port USB2, tout a bien fonctionné. Lorsque l'appareil est branché par un câble USB 3 port, CommPortIdentifier code s'accrocher, et puis après les instances de Java reçu de la structure.c: erreur d'Accès Refusé.
OriginalL'auteur Kay
Cette commande shell a été aidé à m'en Android (busybox nécessaire pour stty):
OriginalL'auteur Eugene
J'avais utilisé le rxtx api, et a bien fonctionné.
OriginalL'auteur user1112699