2

有点像这个问题的后续行动,我现在已经取得了一定的成功(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>;

这可能吗?

4

0 回答 0