Java JSSC rs232 aucun événement


J'essaie d'obtenir des valeurs de rs232 (lecteur de carte Roger prt66lt) avec un simple connetor série java (jssc) mais il semble que je ne démarre aucun événement. J'utilise l'exemple de code. Le lecteur de carte est configuré pour envoyer le numéro de carte lorsqu'il le lit. Mais je ne reçois aucun événement commencé parce que je ne vois pas l'événement de ce système.hors. Je suis, y compris jssc.bocal (à partir de la version 2.5.0) et sa connexion à divice. Est-ce que cette version de jssc n'en a pas besoin .dll ? Je pense que c'est inclus dans celui-ci ? Le code similaire à celui-ci, mais avec la bibliothèque RXTX, fonctionne bien mais je dois inclure la bibliothèque dll attahed.

Lecteur de carte m'envoyer HEX valeur: 02, 10 caractères DONNÉES, 0D, 0A, 03

Code:

import jssc.SerialPort;
import jssc.SerialPortEvent;
import jssc.SerialPortEventListener;
import jssc.SerialPortException;

public class Main {

static SerialPort serialPort;

public static void main(String[] args) {
    serialPort = new SerialPort("COM4"); 
    try {
        serialPort.openPort();//Open port
        serialPort.setParams(9600, 8, 1, 0);//Set params
        int mask = SerialPort.MASK_RXCHAR + SerialPort.MASK_CTS + SerialPort.MASK_DSR;//Prepare mask
        serialPort.setEventsMask(mask);//Set mask
        serialPort.addEventListener(new SerialPortReader());//Add SerialPortEventListener
    }
    catch (SerialPortException ex) {
        System.out.println(ex);
    }
}

static class SerialPortReader implements SerialPortEventListener {
    public void serialEvent(SerialPortEvent event) {
 System.out.println("Event started");
        if(event.isRXCHAR()){//If data is available
            if(event.getEventValue() == 10){//Check bytes count in the input buffer
                //Read data, if 10 bytes available 
                try {
                    byte buffer[] = serialPort.readBytes(10);
                }
                catch (SerialPortException ex) {
                    System.out.println(ex);
                }
            }
        }
        else if(event.isCTS()){//If CTS line has changed state
            if(event.getEventValue() == 1){//If line is ON
                System.out.println("CTS - ON");
            }
            else {
                System.out.println("CTS - OFF");
            }
        }
        else if(event.isDSR()){///If DSR line has changed state
            if(event.getEventValue() == 1){//If line is ON
                System.out.println("DSR - ON");
            }
            else {
                System.out.println("DSR - OFF");
            }
        }
    }
}
}
Author: Gravian, 2013-05-26

1 answers

Le problème était que le paramètre par défaut de la ligne RTS et DTR est élevé, je dois donc utiliser une autre méthode setParams et définir la ligne RTS sur false selon les besoins du périphérique.

Solution:

serialPort.setParams(9600, 8, 1, 0, false, true);
 0
Author: Gravian, 2013-05-27 19:39:23