didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 2017
-
12 août 2006 à 18:25
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023
-
22 août 2006 à 13:47
bonjour a tous.
Voila quelques jour que j'ai realiser un petit montage (lecteur de puces RFID) me permetant de recuperer sous la forme de 11 octets les donnees enregistrer dans la puce (dons le code identifiant) et ce sur n'importe quel port serie RS 232 d'un pc.
apres une recherche aprofondie sur internet et sur le site j'ai ete decus du peu de resultat explicant comment "cree une liaison RS 232, recuperer des donnees sur le prot RS 232 ...".
par concequent, je m'en refaire a vous pour m'expliquer tous cela.
try {
int tmp = sPort.getFlowControlMode();
if (hanshake != tmp)
sPort.setFlowControlMode(hanshake);
} catch (Exception e) {
throw new SerialConnectionException("Unsupported flow control");
}
}
/**
* Ferme le port et libere les elements associé
*/
protected final boolean close() {
//si open = false c'est que le port et deja fermé
if (!open) return true;
// Le port est bien ouvert?
if (sPort != null) {
try {
// fermeture des i/o stream
os.close();
is.close();
// farmeture du port
portId = null;
sPort.close();
sPort.removeEventListener();
sPort = null;
open = false;
return true;
} catch (IOException e) {
return false;
}
} else {
return true;
}
}
/**
* Recuperation de la liste des ports dispo
*/
protected final Vector<String> getPortList() {
Enumeration portList = CommPortIdentifier.getPortIdentifiers();
Vector<String> list = new Vector<String>();
while (portList.hasMoreElements()) {
CommPortIdentifier cpi = ((CommPortIdentifier) portList.nextElement());
if (cpi.getPortType() == CommPortIdentifier.PORT_SERIAL)
list.add(cpi.getName());
}
return list;
}
/**
* Envoi une seconde de pause.
*/
protected final void sendBreak() {
sPort.sendBreak(1000);
}
/**
* Lit ce qu'il y a dans le socket (c'est une lecture de chaine donc a adapter )
*/
protected final String read() {
if (is == null)
return null;
String nl = System.getProperty("line.separator");
try {
Thread.sleep(100);
Scanner sc = new Scanner(is);
String str = "";
while(sc.hasNext()) str += sc.nextLine() + nl;
sc.close();
return str;
} catch (Exception e) {
return null;
}
}
/**
* Ecrit des data dans le socket
*/
protected final boolean write(String data) {
if (os == null)
return false;
String tmpData = data + '\r';
byte[] tmp = tmpData.getBytes();
try {
os.write(tmp, 0, tmp.length);
} catch (IOException e) {
return false;
}
return true;
}
/**
* Pour savoir si le socket est ouvert ou non
*/
protected final boolean isClosed() {
return open;
}
}
dsl pour le manque de commentaire mais j'ai du faire le menage dans le code donc supprimer des commentaire (la fleme de les remettre sinon tu as la java doc pour savoir qui fait quoi
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 22 août 2006 à 13:01
Salut,
Ce sont des choses que tu te dois de connaitre avant d'utiliser le port série !
9600= pour la vitesse de transmission de donnees (9600 bauds)
javax.comm.SerialPort.DATABITS_8 = Bit de donnees (8 bit)
javax.comm.SerialPort.STOPBITS_1 = Bit d'arret (1 bit)
javax.comm.SerialPort.FLOWCONTROL_NONE = Controle de flux Aucun (a quoi casert ?)
1000 = c'est le timeout d'emission et reception
dans le code plus haut sort la parity pour pouvoir la changer dynamiquement
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 21 août 2006 à 22:59
Salut,
les parametres que tu dois rensigner pour l'utiliser soit la config RS232 qui est dans le constructeur de la classe RS232 bref que des choses que tu te doit de savoir avant de faire une comm. RS232
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 20172 22 août 2006 à 11:57
ok, mais je comprend mieux par l'exemple donc pourrai tu me donnés un exemple ( juste 1 ligne )
RS232 rs232 = new RS232(un exemple de chaques parametres popssible);
c'est pour, egalement, savoir comment je dois les declarer, mais aussi savoir quelles sont ces parametre
STP
je te remerci.
didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 20172 22 août 2006 à 12:52
merci donc cela donne "RS232 rs232 = new RS232(deviceName, 9600, javax.comm.SerialPort.DATABITS_8,
javax.comm.SerialPort.STOPBITS_1, javax.comm.SerialPort.FLOWCONTROL_NONE, 1000, 1000);"
avec
9600= pour la vitesse de transmission de donnees (9600 bauds)
javax.comm.SerialPort.DATABITS_8 = Bit de donnees (8 bit)
javax.comm.SerialPort.STOPBITS_1 = Bit d'arret (1 bit)
javax.comm.SerialPort.FLOWCONTROL_NONE = Controle de flux Aucun (a quoi casert ?)
1000 = ???
Y a t il la gestion des bite de parite (generalement null)
je te remerci de bien vouloire verifier cette liste et de la completter .
merci.