0
我試圖從一個java簡單串行connetor(jssc)rs232(讀卡器羅傑prt66lt),但它看起來像我沒有得到任何事件開始一些值。我正在使用示例代碼。讀卡器設置爲在讀取卡號時發送卡號。但我沒有得到任何事件開始因爲我沒有看到事件,System.out。我包含jssc.jar(來自2.5.0版本)及其連接到設備。這個版本的jssc不需要任何.dll嗎?我認爲它包含在其中?這個類似的代碼,但與RXTX庫工作正常,但我需要包括達到DLL文庫。爪哇JSSC rs232沒有事件
讀卡器給我十六進制值: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。你有沒有考慮過你可以從麻省理工學院下載的舊罐子? – dougM