Bonsoir,
Dans le cadre d'un projet de contrôle d'accès, je dois lire et écrire sur des badges RFID via une liaison RS232.
Cependant, je n'arrive pas à écrire la bonne trame au lecteur.
Avec le logiciel FRAMER, j'ai vu qu'on devait écrire la trame UART suivante pour initialiser le lecteur :
010530FE96
Dans un premier temps, je souhaite l'écrire en dur pour tester, mais je n'arrive pas à envoyer la trame voulue. Voici le code que j'ai mis en place. Mais le chiffre hexadécimal pose problème :
Cependant, la trame n'est pas bonne et du coup je n'arrive pas lire la réponse du lecteur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 byte adresse = 01; byte length = 05; byte commande = 30; byte CRCH = (byte)0xFE; byte CRCL = 96; byte trame[] = new byte[5]; trame[0]=adresse; trame[1]=length; trame[2]=commande; trame[3]=CRCH; trame[4]=CRCL; out.write(trame);
J'utilise la bibliothèque RXTX pour communiquer avec le lecteur.
Voici le code que j'utilise pour me connecter au lecteur :
Si quelqu'un a une solution à me proposer je suis preneur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 void connect ( String portName ) throws Exception { CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier(portName); //générer une liste des ports disponibles. Elle choisit ensuite un port dans la liste et appelle // CommPortIdentifier.open pour créer un objet CommPort qui est casté ensuite en SerialPort. if ( portIdentifier.isCurrentlyOwned() ) // si le port est deja connecté { System.out.println("Error: Port is currently in use"); } else { CommPort commPort = portIdentifier.open(this.getClass().getName(),2000); if ( commPort instanceof SerialPort ) { //si le port est présent mais pas connecté SerialPort serialPort = (SerialPort) commPort; serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE); InputStream in = serialPort.getInputStream(); OutputStream out = serialPort.getOutputStream();
Merci d'avance
Partager