Bonjour à tous,
J'ai trouvé un code source qui a l'air sérieux pour pouvoir envoyer et
recevoir des choses sur mon port parallèle, mais il bloque sur la ligne
: " outputStream.write(messageString.getBytes()); "
J'utilise windows XP, par contre sous window 95, tout fonctionne
correctement, je l'ai testé sur un vieux PC. Pour plusieurs raisons, je
me dois d'utiliser XP, alors, ...
Si quelqu'un peut me fournir de l'aide, je lui en serait grandement reconnaissant.
Ah, au fait, je me demandais s'il y avait moyen de faire en sorte que
le flux de sortie soit continu si on lui envoie une seule lettre ou un
seul chiffre.
Merci d'avance.
Mageti
/*
* Programme gèrant la communication avec le port parallèle en utilisant l'api java.comm
* Ce programme réalise les actions suivantes qui sont effectués sur la machine locale:
* Teste la présence d'un port parallèle, si celui-ci est présent:
* Récupération du nom du port
* Récupération du mode de port (SPP, PS2, ECP, ...)
* Tentative d'association à un flux de sortie
* Tentative d'association à un flux d'entrée
* Envoie des données sur le port
*
* Pour fonctionner, il est nécessaire d'avoir correctement installer l'api java.comm
*
*/
package parallelport;
import java.io.*;
import java.util.*;
import javax.comm.*;
public class TestLpt1 {
static Enumeration portList;
static CommPortIdentifier portId;
static String messageString = "Texte envoyé en sortie sur le port parallèle... (60 octets)\n";
static String ApplicationName = "TestLpt1";
static ParallelPort parallelPort;
static OutputStream outputStream;
static InputStream inputStream;
public static void main(String[] args) {
portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements()) {
portId = (CommPortIdentifier) portList.nextElement();
// Recherche d'un port parallèle nommé lpt1
if (portId.getPortType() == CommPortIdentifier.PORT_PARALLEL&&
portId.getName().equals("LPT1")) {
System.out.println("Il y a un port parallèle nommé:
"+portId.getName());
try {
// Ouverture de ce port
parallelPort =
(ParallelPort)portId.open(TestLpt1.ApplicationName, 2000);
System.out.println("\nTentative
d'appropriation du port par l'application TestLpt1...");
System.out.println("Le port est
approprié à "+portId.getCurrentOwner());
}
catch (PortInUseException e) {
System.out.println("Le port est
utilisé par une autre application.");
}
// tentative de reconnaissance du mode utilisé
switch(parallelPort.getMode()) {
case ParallelPort.LPT_MODE_PS2:
System.out.println("\nLe port est
actuellement en mode PS2");
break;
case ParallelPort.LPT_MODE_EPP:
System.out.println("\nLe port est
actuellement en mode EPP");
break;
case ParallelPort.LPT_MODE_ECP:
System.out.println("\nLe port est
actuellement en mode ECP");
break;
case ParallelPort.LPT_MODE_NIBBLE:
System.out.println("\nLe port est
actuellement en mode NIBBLE");
break;
case ParallelPort.LPT_MODE_SPP:
System.out.println("\nLe port est
actuellement en mode SPP");
/*
try {
SetModeECP();
}
catch
(UnsupportedCommOperationException e) {
System.out.println("Cannot set port at ECP mode");
}
*/
break;
default:
System.out.println("\nLe mode du
port est inconnu.");
break;
}
try {
// création d'un flux de sortie
outputStream =
parallelPort.getOutputStream();
System.out.println("-> Open
ouput stream");
} catch (IOException e) {
System.out.println("X Cannot open
ouput stream");
}
try {
// création d'un flux d'entrée
inputStream =
parallelPort.getInputStream();
System.out.println("-> Open
input stream");
} catch (IOException e) {
System.out.println("X Cannot open
input stream");
}
try {
// écriture vers le port parallèle
outputStream.write(messageString.getBytes());
System.out.println("\nPrint to
parallel port");
System.out.println("Fin normale
du programme.");
}
catch (IOException e) {
System.out.println("\nCannot
print to parallel port");
}
} // fin du if
} // fin du while
} // fin du main
public static void SetModeECP() throws UnsupportedCommOperationException {
// Fonction qui permettra de passer le port en mode ECP
parallelPort.setMode(ParallelPort.LPT_MODE_ECP);
}
} // fin de la classe