자바 간단한 직렬 connetor (jssc) rs232 (카드 판독기 Roger prt66lt)에서 일부 값을 얻으려고하지만 모든 이벤트가 시작 얻을 것 같습니다. 예제 코드를 사용하고 있습니다. 카드 리더는 카드를 읽을 때 카드 번호를 보내도록 설정되어 있습니다. 하지만 나는 어떤 이벤트도 시작하지 못한다. 나는 System.out 이벤트를 보지 못한다. jssc.jar (2.5.0 버전부터)와 divice에 연결하는 중입니다. jssc의이 버전은 .dll이 필요합니까? 나는 그것에 포함 된 것 같아? 이 하나의 비슷한 코드지만 RXTX 라이브러리와 잘 작동하지만 attahed dll 라이브러리를 포함해야합니다.자바 JSSC rs232 이벤트 없음
카드 리더는 나에게 HEX 값을 보내 : 02, 10 개 문자 데이터, 0D, 0A을, 03
코드 :
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");
}
}
}
}
}
Gravian, 나는 모든 시리얼 라이브러리는 DLL을 필요 여부를 결정하려합니다. win32com.dll없이 실행할 수 있습니까? 당신이 참조한 DLL이라고 가정합니다. MIT에서 다운로드 할 수있는 오래된 항아리를 고려 했습니까? – dougM