我通常使用 GNU screen在服务器上打开虚拟终端,以便长时间运行的程序可以在我注销或断开连接时运行。我现在正在摆弄我附加了 Sparkfun OpenScale 的 Raspberry pi读出 load cell (用于测量我体重的体重秤)。
为了读出这个 OpenScale 板,我使用
连接到它screen /dev/ttyUSB0 9600
然后我得到一个带有一些选项的终端程序:
Serial Load Cell Converter version 1.0
By SparkFun Electronics
No remote sensor found
System Configuration
1) Tare scale to zero [-23555]
2) Calibrate scale [-9649]
3) Timestamp [Off]
4) Set report rate [95]
5) Set baud rate [9600 bps]
6) Change units of measure [kg]
7) Decimals [1]
8) Average amount [1]
9) Local temp [Off]
r) Remote temp [Off]
s) Status LED [Off]
t) Serial trigger [Off]
q) Raw reading [Off]
c) Trigger character: [120]
x) Exit
这很好用,经过一些校准后我得到了很好的读数。问题是我不明白如何退出这个程序。如果您看到上面的菜单,您可能会认为我可以简单地按 x
,但是这只会退出此菜单,然后您会进入测量值读取模式(它只会开始打印从秤上获得的重量) .如果我再次按下 x
,它只会再次打开此菜单。
我尝试了很多方法来关闭它:
q
x
Ctrl + c
Ctrl + d
Esc
Backspace
我当然可以脱离 session (使用 Ctrl + a
然后按 d
),然后终止 screen session ,但程序不会存储 tar 化为零。它正确地存储了校准,但不是零点,这使得读数完全错误,这让我每次重新启动时都需要 tar 到零。这就是为什么我认为正确退出程序可能会正确保存零点的原因。
有人知道正确退出该程序的方法吗?
最佳答案
由于您将 screen 用作串行设备的终端仿真器,除非串行设备本身将校准数据存储在某种 NVRAM 中,否则您可能需要在每次重置 Raspberry Pi 时运行重新校准。
我建议使用 -L
选项启动 screen 以将输出记录到文件中。校准例程完成后,您可以使用 Ctrl-a d
从 screen session 中分离。然而,日志文件应该随着被测量的权重而继续增长。
但是,如果您真的想退出 screen 以便另一个进程可以打开并从串行设备读取数据,那么您可以使用 Ctrl-a\
。 screen 会提示你是否要退出,输入y
退出。
关于linux - 如何关闭 Raspberry Pi 上的 USB screen session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44316150/