2024 年 Clojure 调查问卷 中分享您的想法!

欢迎!请参阅 关于 页面了解更多此功能的详细信息。

0
IO

大家好,我在尝试使用 "/dev/input/js0"(一个 ps4 控制器)从桌面连接的设备中读取和输出数据。我想像使用 cat /dev/input/js0 一样显示数据。

这是我在使用的代码,但它似乎只有在我多次点击按钮后才会打印出来。

(with-open [r (clojure.java.io/input-stream "/dev/input/js0")]
  (loop [c (.read r)]
    (print c)
    (recur (.read r))))

当我使用 cat /dev/input/js0 命令时,我可以在点击控制器上的按钮时立即看到输出,这是我想要的方式。

有人知道我如何能够获取正在到来的数据?我错在哪里了?

2 答案

0
 
最佳答案

我发现问题所在。是使用了 print,它不会自动刷新输出。一旦我切换到使用 println,它刷新输出,我就能打印出数据。

0

clojure.java.io/input-stream 默认返回值为 java.io.BufferedInputStream,这可能是导致您输入延迟显示的原因。

by
感谢您的回复。最初我也这么想,但后来发现问题是出在 `print` 函数没有刷新输出。
...