问题描述
众所周知,jSerialCom是一个用于读取串口数据的优质Java库; 之前,RXTX也是不错的选择,
那么在jSerialCom中,如何捕捉RXTX等各种中断事件?
在RXTX中,有这些java语句来捕捉各种中断事件
serialPort.notifyOnFramingError (true);
serialPort.notifyOnBreakInterrupt (true);
然后,在catch代码中,我们可以这样写:
switch ( event.getEventType ()) {
case SerialPortEvent.FE :
break;
case SerialPortEvent.OUTPUT_ BUFFER_ EMPTY:
break;
case SerialPortEvent.DATA_ AVAILABLE:
//read data of serial port ...
break;
case default:
break;
但是 jSerialCom 呢? 只有“LISTENING_EVENT_DATA_AVAILABLE”之类的打击代码?不需要捕捉其他中断请求吗?
if ( event.getEventType () != SerialPort.LISTENING_EVENT_DATA_AVAILABLE ) {
return;
}
解决方法
当前的源代码和 API 文档都没有这样的功能。
Fazecast/jSerialComm
public final void waitForSerialEvent() throws Exception
视窗:
JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_configEventFlags(JNIEnv *env,jobject obj,jlong serialPortFD)
JNIEXPORT jint JNICALL Java_com_fazecast_jSerialComm_SerialPort_waitForEvent(JNIEnv *env,jlong serialPortFD)
正则:
JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_configEventFlags(JNIEnv *env,jlong serialPortFD)
JNIEXPORT jint JNICALL Java_com_fazecast_jSerialComm_SerialPort_waitForEvent(JNIEnv *env,jlong serialPortFD)
文档:
Home - jSerialComm
API Documentation
Class SerialPortEvent
Class SerialPortIOException