[Série] Accès au port série sous linux
Bonjour à tous,
J'essaye d'accéder au port série sous linux, j'ai pu trouver des informations (sur ce forum et d'autres) avec javax.comm, mais impossible de relire.
Je dois juste lire des chaines de caractères envoyées par un lecteur de code bar.
Voici ce qui pose problème:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
class portserie
{
static Enumeration portList;
static CommPortIdentifier portId;
static SerialPort serialPort;
public static void main(String[] args)
{
portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements()) // !!!!!!!!!!!!!!!!!!! Renvois toujours false !!!!!!!!!!!!!!!!
{
portId = (CommPortIdentifier) portList.nextElement();
if (portId.getName().equals("/dev/ttyS0"))
{
..... |
J'arrive a accéder à mon port série et a relire les informations du code bar via le numéroteur internet (la fonction terminal) le port est /dev/ttyS0 (=> COM1 sous windows).
Quelqu'un peut-il m'aider?
Merci
PS: J'utilise JBuilder 7 version entreprise (y a-t-il des classes prévue?)
Accès au port série sous Linux
Bonjour à tous,
Je dois moi-aussi lire des chaînes de caractères envoyées par un lecteur de code bar, mais en étant sous Windows. Malgré l'installation de javax.comm, je ne parviens pas à lire les données. Je travaille avec JBuilder9.
voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| import javax.comm.*;
import java.io.*;
import java.util.*;
/*
Cette classe permet de tester les ports séries disponibles
en les listant puis en créant un stream d'entrée et de sortie
*/
public class TesteJavaComm
{
CommPortIdentifier portId;
BufferedReader in;
PrintWriter out;
SerialPort serialPort;
/*
Constructeur de la classe TesteJavaComm qui prend en paramètre le port série à utiliser.
Dans un premier temps on liste les ports disponibles sur le pc
*/
public TesteJavaComm (String com)
{
System.out.println("listage des ports série disponibles:");
listePortsDispo();
try
{
//ouverture du port série:
portId=CommPortIdentifier.getPortIdentifier(com);
serialPort=(SerialPort)portId.open("Envoi",2000);
//on sélectionne tous les paramètres de la connexion série:
serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
System.out.println("Ouverture du port "+com);
//pour lire et écrire avec des streams:
in=new BufferedReader(
new InputStreamReader(serialPort.getInputStream()));
out=new PrintWriter(serialPort.getOutputStream());
//Teste de lecture/ecriture sur le port série
String originalText="une chaine de caractere";
outputArray = originalText.getBytes( );
out.write ( outputArray, 0 , length );
int b = in.read()
in.close();
out.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}//fin constructeur
public void listePortsDispo()
{
System.err.println("recherche...");
Enumeration portList=CommPortIdentifier.getPortIdentifiers();
if (portList==null)
{
System.err.println("Aucun port de communication détecté");
return;
}
while (portList.hasMoreElements())
{
portId=(CommPortIdentifier)portList.nextElement();
System.out.println("* "+portId.getName());
} // while
} //fin de la methode listePortsDispo()
/*
Methode main qui permet de tester notre classe de teste en ouvrant une connexion sur le port COM1.
*/
public static void main(String args[])
{
new TesteJavaComm ("COM1");
}//fin du main
}//fin de la classe |
voici ce que j'obtiens à la compilation :
recherche...
listage des ports série disponibles:
* COM1
* LPT1
* LPT2
Ouverture du port COM1
Et il ne se passe plus rien !!! même en activant le lecteur de code barre.
Quelqu'un peut-il m'aider à résoudre ce problème ?
D'avance merci
Re: Accès au port série sous Linux
salut
moi aussi je veux lire des caractéres à partit du port série de windows ;j'ai compilé la classe TesteJavaComm , mais j'ai une erreur à propos de variable outputArray ;qui peut m'aider,please.
merci