移动设备上的串行程序存在两个问题:
有什么建议吗?代码片段可能?
答案 0 :(得分:0)
您可以向SerialPort添加一个侦听器,只要该端口上有可用数据,就会收到通知。在这个回调中,in.available()
也应该返回可以读取的字节数,但在read
返回-1之前消耗字节可能更好。
final CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier("COM1");
final SerialPort com1 = (SerialPort)portId.open("Test", 1000);
final InputStream in = com1.getInputStream();
com1.notifyOnDataAvailable(true);
com1.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
com1.addEventListener(new SerialPortEventListener() {
public void serialEvent(SerialPortEvent event) {
if (event.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
try {
byte[] buffer = new byte[4096];
int len;
while (-1 != (len = in.read(buffer))) {
// do something with buffer[0..len]
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
});