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,这可能是您看到输入延迟的原因。

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