这是代码片段
我在这里启动一个动作监听器
try {
port_seleted.addEventListener(this);
} catch (TooManyListenersException e) {
System.out.println("too many Listeners!");
}
port_seleted.notifyOnDataAvailable(true);
当我收到数据时,下面的方法被调用
public void serialEvent(SerialPortEvent Ack_Rec) {
boolean first_flash = false;
if (Ack_Rec.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
try {
while (input_data.available() > 0) {
input_data.read(rec_ack);
}
} catch (IOException e) {
System.out.println("IO Exception in SerialEvent");
}
我没有正确接收数据,即
如果我以“你好,你今天好吗”发送一些数据,则以“你好,你好”,“ ow”,“你”,“ doin”,“今天g”收到
即,串行事件方法被多次调用,即,在读取完整数据之前,它退出while循环。
如果我插入延迟
try {
while (input_data.available() > 0) {
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
input_data.read(rec_ack);
}
} catch (IOException e) {
System.out.println("IO Exception in SerialEvent");
}
如上所示,它工作正常。 请帮助我消除延迟,因为这会降低效率!