Envoi/Réception du trame en java
eclipsia
-
eclipsia -
eclipsia -
Bonsoir,
j'ai presque une je cherche sur le net,j'ai trouvé plusieurs mais je n'arrive pas à bien comprendre comment je peux envoyer ou recevoir une trame donnée,je vais vous écrire le code que j'utilise:
Exemple:
package packessai;
import java.io.*;
import java.util.*;
import javax.comm.*;
public class SimpleWrite {
static Enumeration portList;
static CommPortIdentifier portId;
static String messageString = charOf(10)+"000"+charOf(27)+"V4D"+charOf(13);
static SerialPort serialPort;
static OutputStream outputStream;
static InputStream inputStream;
private String defaultPort;
public static char charOf(int ascii)
{
char c = (char) ascii;
return c;
}
public String RecevoirUn()
{
String donnee;
boolean read = false;
byte[] readBuffer = new byte[1];
int nbbyte=0;
try
{
//On lit 1 caractère
nbbyte = inputStream.read(readBuffer,0,1);
read = true;
}
//Affichage de l'erreur
catch (IOException e)
{
System.out.println(defaultPort+": Impossible de recevoir sur le port");
}
if(read==true)
{
donnee = new String(readBuffer);
donnee = donnee.substring(0,1);
}
else
{
donnee = new String("\0");
donnee = donnee.substring(0,1);
}
return donnee;
}
public String Recevoir()
{
String message="";
String temp=RecevoirUn();
if(temp.getBytes()[0] == 0x23){
temp=RecevoirUn();
while(temp.getBytes()[0]!=0x40)
{
message += temp;
temp=RecevoirUn();
}
System.out.println("Pression ="+message);
//vue.setPression(message);
message="";
temp=RecevoirUn();
while(temp.getBytes()[0]!=0x40)
{
message += temp;
temp=RecevoirUn();
}
System.out.println("Humidité ="+message);
//vue.setHumidite(message);
message="";
temp=RecevoirUn();
while(temp.getBytes()[0]!=0x40)
{
message += temp;
temp=RecevoirUn();
}
System.out.println("Temperature Interieur ="+message);
//vue.setTempInterieur(message);
message="";
temp=RecevoirUn();
while(temp.getBytes()[0]!=0x23)
{
message += temp;
temp=RecevoirUn();
}
System.out.println("Temperature Interieur ="+message);
// vue.setTempExterieur(message);
}
else{
while(temp.getBytes()[0]!=0x23)
{
temp = RecevoirUn();
}
temp = RecevoirUn();
while(temp.getBytes()[0]!=0x40)
{
message += temp;
temp=RecevoirUn();
}
System.out.println("Pression ="+message);
//vue.setPression(message);
message="";
temp=RecevoirUn();
while(temp.getBytes()[0]!=0x40)
{
message += temp;
temp=RecevoirUn();
}
System.out.println("Humidité ="+message);
// vue.setHumidite(message);
message="";
temp=RecevoirUn();
while(temp.getBytes()[0]!=0x40)
{
message += temp;
temp=RecevoirUn();
}
System.out.println("Temperature Interieur ="+message);
//vue.setTempInterieur(message);
message="";
temp=RecevoirUn();
while(temp.getBytes()[0]!=0x23)
{
message += temp;
temp=RecevoirUn();
}
System.out.println("Temperature Interieur ="+message);
//vue.setTempExterieur(message);
}
return temp;
}
public SimpleWrite() {
boolean portFound = false;
String defaultPort = "COM5";
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;
try {
serialPort =
(SerialPort) portId.open("SimpleWrite", 2000);
} catch (PortInUseException e) {
System.out.println("Port in use.");
continue;
}
try {
outputStream = serialPort.getOutputStream();
} catch (IOException e) {}
try {
serialPort.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
} catch (UnsupportedCommOperationException e) {}
try {
serialPort.notifyOnOutputEmpty(true);
} catch (Exception e) {
System.out.println("Error setting event notification");
System.out.println(e.toString());
System.exit(-1);
}
}
}
//serialPort.close();
}
if (!portFound) {
System.out.println("port " + defaultPort + " not found.");
}
}
public void envoyerMessage(String messageHpgl) {
System.out.println("Writing \""+messageHpgl+"\" to "+serialPort.getName()+"...");
try {
outputStream.write(messageHpgl.getBytes());
outputStream.flush();
System.out.println("message envoyé");
}
catch (IOException e) {}
try {
Thread.sleep(1000);
//System.out.println("attente..."); // être sûr d'avoir transféré avant d'envoyer autre chose
}
catch (Exception e) {}
serialPort.close(); // fermeture du port ??
}
public static void main(String[] args)
{
SimpleWrite CS=new SimpleWrite();
String trame="trame à envoyer";
CS.envoyerMessage(trame);
String MessageReçu=CS.Recevoir();
System.out.println("Le message reçu est:"+MessageReçu);
}
}
et voilà ce que je reçu comme résultat:
Found port COM5
Writing "
000V4D
" to COM5...
message envoyé
Exception in thread "main" java.lang.NullPointerException
at packessai.SimpleWrite.RecevoirUn(SimpleWrite.java:68)
at packessai.SimpleWrite.Recevoir(SimpleWrite.java:92)
at packessai.SimpleWrite.main(SimpleWrite.java:307)
quelqu'un peut me dire comment je peut afficher la réponse reçu depuis le terminal auquel j'envoie ma trame.
S'il vous plaît quelqu'un m'aider c'est urgent.
Merci d'avance.
j'ai presque une je cherche sur le net,j'ai trouvé plusieurs mais je n'arrive pas à bien comprendre comment je peux envoyer ou recevoir une trame donnée,je vais vous écrire le code que j'utilise:
Exemple:
package packessai;
import java.io.*;
import java.util.*;
import javax.comm.*;
public class SimpleWrite {
static Enumeration portList;
static CommPortIdentifier portId;
static String messageString = charOf(10)+"000"+charOf(27)+"V4D"+charOf(13);
static SerialPort serialPort;
static OutputStream outputStream;
static InputStream inputStream;
private String defaultPort;
public static char charOf(int ascii)
{
char c = (char) ascii;
return c;
}
public String RecevoirUn()
{
String donnee;
boolean read = false;
byte[] readBuffer = new byte[1];
int nbbyte=0;
try
{
//On lit 1 caractère
nbbyte = inputStream.read(readBuffer,0,1);
read = true;
}
//Affichage de l'erreur
catch (IOException e)
{
System.out.println(defaultPort+": Impossible de recevoir sur le port");
}
if(read==true)
{
donnee = new String(readBuffer);
donnee = donnee.substring(0,1);
}
else
{
donnee = new String("\0");
donnee = donnee.substring(0,1);
}
return donnee;
}
public String Recevoir()
{
String message="";
String temp=RecevoirUn();
if(temp.getBytes()[0] == 0x23){
temp=RecevoirUn();
while(temp.getBytes()[0]!=0x40)
{
message += temp;
temp=RecevoirUn();
}
System.out.println("Pression ="+message);
//vue.setPression(message);
message="";
temp=RecevoirUn();
while(temp.getBytes()[0]!=0x40)
{
message += temp;
temp=RecevoirUn();
}
System.out.println("Humidité ="+message);
//vue.setHumidite(message);
message="";
temp=RecevoirUn();
while(temp.getBytes()[0]!=0x40)
{
message += temp;
temp=RecevoirUn();
}
System.out.println("Temperature Interieur ="+message);
//vue.setTempInterieur(message);
message="";
temp=RecevoirUn();
while(temp.getBytes()[0]!=0x23)
{
message += temp;
temp=RecevoirUn();
}
System.out.println("Temperature Interieur ="+message);
// vue.setTempExterieur(message);
}
else{
while(temp.getBytes()[0]!=0x23)
{
temp = RecevoirUn();
}
temp = RecevoirUn();
while(temp.getBytes()[0]!=0x40)
{
message += temp;
temp=RecevoirUn();
}
System.out.println("Pression ="+message);
//vue.setPression(message);
message="";
temp=RecevoirUn();
while(temp.getBytes()[0]!=0x40)
{
message += temp;
temp=RecevoirUn();
}
System.out.println("Humidité ="+message);
// vue.setHumidite(message);
message="";
temp=RecevoirUn();
while(temp.getBytes()[0]!=0x40)
{
message += temp;
temp=RecevoirUn();
}
System.out.println("Temperature Interieur ="+message);
//vue.setTempInterieur(message);
message="";
temp=RecevoirUn();
while(temp.getBytes()[0]!=0x23)
{
message += temp;
temp=RecevoirUn();
}
System.out.println("Temperature Interieur ="+message);
//vue.setTempExterieur(message);
}
return temp;
}
public SimpleWrite() {
boolean portFound = false;
String defaultPort = "COM5";
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;
try {
serialPort =
(SerialPort) portId.open("SimpleWrite", 2000);
} catch (PortInUseException e) {
System.out.println("Port in use.");
continue;
}
try {
outputStream = serialPort.getOutputStream();
} catch (IOException e) {}
try {
serialPort.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
} catch (UnsupportedCommOperationException e) {}
try {
serialPort.notifyOnOutputEmpty(true);
} catch (Exception e) {
System.out.println("Error setting event notification");
System.out.println(e.toString());
System.exit(-1);
}
}
}
//serialPort.close();
}
if (!portFound) {
System.out.println("port " + defaultPort + " not found.");
}
}
public void envoyerMessage(String messageHpgl) {
System.out.println("Writing \""+messageHpgl+"\" to "+serialPort.getName()+"...");
try {
outputStream.write(messageHpgl.getBytes());
outputStream.flush();
System.out.println("message envoyé");
}
catch (IOException e) {}
try {
Thread.sleep(1000);
//System.out.println("attente..."); // être sûr d'avoir transféré avant d'envoyer autre chose
}
catch (Exception e) {}
serialPort.close(); // fermeture du port ??
}
public static void main(String[] args)
{
SimpleWrite CS=new SimpleWrite();
String trame="trame à envoyer";
CS.envoyerMessage(trame);
String MessageReçu=CS.Recevoir();
System.out.println("Le message reçu est:"+MessageReçu);
}
}
et voilà ce que je reçu comme résultat:
Found port COM5
Writing "
000V4D
" to COM5...
message envoyé
Exception in thread "main" java.lang.NullPointerException
at packessai.SimpleWrite.RecevoirUn(SimpleWrite.java:68)
at packessai.SimpleWrite.Recevoir(SimpleWrite.java:92)
at packessai.SimpleWrite.main(SimpleWrite.java:307)
quelqu'un peut me dire comment je peut afficher la réponse reçu depuis le terminal auquel j'envoie ma trame.
S'il vous plaît quelqu'un m'aider c'est urgent.
Merci d'avance.
A voir également:
- Envoi/Réception du trame en java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Accusé de reception gmail - Guide
- Problème de réception tv pas de signal aujourd' hui - Guide
- Eclipse java - Télécharger - Langages
6 réponses
Vous avez trouver???
Je suis juste interessé par le procéder...
Un programme de dialogue alternatif.... A quand la Google Toolbar pour les aides au programmeur ...
Je suis juste interessé par le procéder...
Un programme de dialogue alternatif.... A quand la Google Toolbar pour les aides au programmeur ...
Fallentree
Messages postés
2309
Date d'inscription
Statut
Membre
Dernière intervention
209
c'est pourquoi faire ce Lecteur de thread...
bonsoir,
non pas encore, j'ai rien trouvé quelqu'un peut nous aider???????????????
J'attends vos réponse.
non pas encore, j'ai rien trouvé quelqu'un peut nous aider???????????????
J'attends vos réponse.
bonsoir,
j'ai trouvé ce code sur le net.je veux juste le tester et après je vais comprendre chaque instructions à quoi sert.
tu as trouvé quelques choses.
j'ai passer toutes la journée dans la recherche sur le net ei j'ai rien trouvé.
Lorsque j'utilise le pas à pas en eclipse que je trouve que le programme se bloque dans cette ligne:
nbbyte = inputStream.read(readBuffer,0,1);
j'éspère que quelq'un à trouver une solution qui peut nous aider.
merci.
j'ai trouvé ce code sur le net.je veux juste le tester et après je vais comprendre chaque instructions à quoi sert.
tu as trouvé quelques choses.
j'ai passer toutes la journée dans la recherche sur le net ei j'ai rien trouvé.
Lorsque j'utilise le pas à pas en eclipse que je trouve que le programme se bloque dans cette ligne:
nbbyte = inputStream.read(readBuffer,0,1);
j'éspère que quelq'un à trouver une solution qui peut nous aider.
merci.
Ta machine distante, ou ton lecteur distant, n'est pas ouvert.
En gros tu peux pas le debeugger comme cela.
En gros tu peux pas le debeugger comme cela.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
J'ai pas bien compris qui ce que tu veux dire par "mon lecteur distant, n'est pas ouvert. ".
Est ce que tu as trouvé quelques choses.
à ton avis comment je peux le debeugger???
Est ce qu'il y'a des solutions.
Merci.
J'ai pas bien compris qui ce que tu veux dire par "mon lecteur distant, n'est pas ouvert. ".
Est ce que tu as trouvé quelques choses.
à ton avis comment je peux le debeugger???
Est ce qu'il y'a des solutions.
Merci.
Bonsoir,
J'ai déjà créer un poste auquel j'ai spécifier mon problème.
Alors le premier problèe ça existe au niveau de la trame qui n'est pas compatible avec le terminal auquel je fais l'envoi.
Voici le copde utilisé:
package pack1;
import javax.comm.*;
import java.io.*;
import java.util.*;
public class Test1
{
CommPortIdentifier portId;
SerialPort serialPort;
public Test1(String com)
{
System.out.println("listage des ports série disponibles:");
listePortsDispo();
try
{
portId=CommPortIdentifier.getPortIdentifier(com);
serialPort=(SerialPort)portId.open("Envoi",2000);
serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
System.out.println("Ouverture du port "+com);
BufferedReader in=new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
OutputStream out = serialPort.getOutputStream();
String originalText="Trame à envoyer";//Suite à votre trame
byte[] outputArray = originalText.getBytes( );
out.write ( outputArray, 0 , outputArray.length );
int b = in.read();
String reponse=in.readLine();
System.out.println("ligne: "+b+"\n Réponse: "+reponse);
in.close();
out.close();
}
catch (Exception e)
{
e.printStackTrace();
}
serialPort.close();
}//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()
public static void main(String args[])
{
new Test1("COM5");
}//fin du main
}//fin de la classe
J'ai déjà créer un poste auquel j'ai spécifier mon problème.
Alors le premier problèe ça existe au niveau de la trame qui n'est pas compatible avec le terminal auquel je fais l'envoi.
Voici le copde utilisé:
package pack1;
import javax.comm.*;
import java.io.*;
import java.util.*;
public class Test1
{
CommPortIdentifier portId;
SerialPort serialPort;
public Test1(String com)
{
System.out.println("listage des ports série disponibles:");
listePortsDispo();
try
{
portId=CommPortIdentifier.getPortIdentifier(com);
serialPort=(SerialPort)portId.open("Envoi",2000);
serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
System.out.println("Ouverture du port "+com);
BufferedReader in=new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
OutputStream out = serialPort.getOutputStream();
String originalText="Trame à envoyer";//Suite à votre trame
byte[] outputArray = originalText.getBytes( );
out.write ( outputArray, 0 , outputArray.length );
int b = in.read();
String reponse=in.readLine();
System.out.println("ligne: "+b+"\n Réponse: "+reponse);
in.close();
out.close();
}
catch (Exception e)
{
e.printStackTrace();
}
serialPort.close();
}//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()
public static void main(String args[])
{
new Test1("COM5");
}//fin du main
}//fin de la classe