我正在尝试创建一个小程序来替换我的 ActiveX 控件,因为它最近开始出现问题,尽管它已经工作了多年。所有这一切都是从串行端口读取数据,在我的例子中是条形码扫描仪,并将数据传递到输入框。此外,任何关于我可以使它变得更好的方法的指针都将不胜感激。
代码:
package checkin;
import jssc.SerialPort;
import jssc.SerialPortException;
import jssc.SerialPortEvent;
import jssc.SerialPortEventListener;
import netscape.javascript.*;
import java.applet.Applet;
public class MainSerial extends Applet {
static SerialPort port;
static JSObject window;
public static void main(String[] args) { //WARNING
SerialPort port = new SerialPort("COM1");
try {
port.openPort();
port.setParams(9600, 8, 1, 0);
int mask = SerialPort.MASK_RXCHAR + SerialPort.MASK_CTS + SerialPort.MASK_DSR;
port.setEventsMask(mask);
port.addEventListener(new SerialPortReader()); //ERROR
} catch (SerialPortException ex) {
window.eval("alert('Could not open port.\nThe port may be in use by another program.')");
}
}
class SerialPortReader implements SerialPortEventListener {
public void serialEvent(SerialPortEvent event) {
if(event.isRXCHAR()) {
try {
byte buffer[] = port.readBytes();
int x = 0;
int count = buffer.length;
StringBuilder data = new StringBuilder();
while(x < count) {
data.append(buffer[x]);
x++;
}
window.eval("getSerialData('" + data.toString() + "')");
} catch (SerialPortException ex) {
window.eval("alert('Port could not be read.')");
}
}
}
}
}
Eclipse 引发的错误:
The serializable class MainSerial does not declare a static final serialVersionUID field of type Long
Eclipse 引发的警告:
No enclosing instance of MainSerial is accessible. Must qualify the allocation with an enclosing instance of type MainSerial.
这是我第一次尝试Java,请原谅我的无知。对我来说没有意义的是为什么我在 Eclipse 中看到这些错误,但在 NetBeans 中却没有?另外,如果线
port.addEventListener(new SerialPortReader());
在那个特定的父母中,为什么我需要重新初始化它?我确定我遗漏了一些小东西,可能很明显,但非常感谢任何帮助。我尝试创建小程序的原因是由于我的 ActiveX 控件的问题越来越多。