有点像这个问题的后续行动,我现在已经取得了一定的成功(LED 打开和关闭,万岁!),我现在有另一个问题。
除了写入设备之外,我还需要从设备中读取。我不希望有一个线程坐在那里并每 50 毫秒查询一次设备(考虑到将使用该设备的设置,这可能是在没有 Java 等效的 .Net 事件的情况下使其工作的唯一方法)。
有没有办法设置一个Java“事件”(松散使用的术语),当有字节等待从设备读取时触发?
我现在要写入设备的是一个终端接口,它接受字符串并通过写入字节数组(或终止)来响应它们:
BufferedReader BR = new BufferedReader(new InputStreamReader(System.in));
byte[] bBuffer = new byte[6];
String cmd = BR.readLine();
while (true){
switch(cmd){
case "ON":
dev.write(ON);
Thread.sleep(READ_UPDATE_DELAY_MS);
dev.read(bBuffer);
break;
case "OFF":
dev.write(OFF);
Thread.sleep(READ_UPDATE_DELAY_MS);
dev.read(bBuffer);
break;
case "EXIT":
System.exit(0);
}
cmd = BR.readLine();
}
我希望是这样的:
dev.InputReceived = <some input handling function>;
这可能吗?