- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为了从逻辑 Controller 捕获数据,我使用了 screen作为终端仿真器并通过 KeySpan USA-19HS USB Serial Adapter 连接我的 MacBook .我创建了以下 bash 脚本,这样我就可以输入 talk2controller <filename>
其中 filename 是数据文件的名称。
#!/bin/bash
if [ -z "$1" ]; then
echo Please provide the filename to save the logfile
exit
fi
LOGFILE=$1
echo "logfile $1" > screenrc # Set the logfile filename
echo "logfile flush 1" >> screenrc # Wait 1 sec before flushing buffer to filesystem
screen -L -c screenrc /dev/tty.KeySerial1 19200
我已经更改了日志文件的文件名,并将日志文件缓冲区刷新到文件系统之前的等待时间从默认的 10 秒更改为 1 秒。我将这些命令保存到 screenrc
.然后我调用 screen :
-L
— 启用日志记录-c screenrc
— 覆盖默认配置文件/dev/tty.KeySerial1 19200
— 使用 19200 的波特率与串口通信我记录的每个测试大约需要 3-6 分钟,并且包含速度、加速度和位置信息。我会知道测试基于加速度是有效的。目前,我正在等到测试结束后再运行 Python matplotlib用于绘制速度、加速度和位置的脚本,以在继续下一个测试之前查看测试是否有效。
为了节省时间,我更愿意在测试进行到一半时绘制数据,同时仍在捕获数据。
在我看来,在捕获更多数据的同时绘制数据有两种选择:
问题 3:有没有我没有想到的更好的选择?
最佳答案
选项 1 和 2 都可以,但是天啊,为了万物皆可,避免为此使用线程!您最终会遇到两全其美的情况:锁定问题,和绘图线程中的异常无论如何都会杀死整个程序(包括日志记录线程)。正如其他人提到的那样,为此使用两个单独的过程很好。 screen
是用于此目的的工具选择有点奇怪,就像在 python 中手动编写代码一样。我只是将 talk2controller 脚本重写为这个微不足道的脚本:
stty -F /dev/tty.KeySerial1 19200 raw
cat </dev/tty.KeySerial1 >logfile
(如果您希望脚本的每次运行都附加到文件,而不是从头开始重写,您也可以使用 >>logfile
。)
另一个问题是,只要其他人正在写入文件,是否可以让程序读取文件。这个问题的一个更具体的版本是:如果日志中的一行在您尝试阅读时写了一半怎么办?
答案是:你可以这样做,但你是对的,你不能保证一行在你读的时候不会写到一半。 (如果您编写自己的 cat
或 screen
的替代品,您实际上可以通过始终使用 os.read()
写入文件来保证这一点而不是 sys.stdout.write()
或 print
。)
但是,无论如何都不需要这种保证。你只需要在阅读文件时小心点,你永远不会有问题。本质上,不完整的行只是没有以 \n
换行符结尾的行。因此:
for line in open('logfile'):
if not line.endswith('\n'): break
...handle valid line...
由于 \n
字符是日志每一行最后写入的内容,因此您可以肯定地知道,如果您阅读 \n
字符,它之前的所有内容写对了。
关于python - 在 screen 上记录数据时用 Python 读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3709698/
抱歉,标题不准确,但我的问题是:我正在尝试在代码隐藏中使用 css 设置背景图像,我想向该图像添加线性渐变,类似这样: Image1.Style["background-image"] = "line
我使用 DI 编写了一个大型应用程序。该应用程序由初始化时的 Bootstrap 组成,其中注入(inject)了大多数依赖项。一切皆好。 但是,有些服务* 我不能简单地到处注入(inject)。 一
当 sbt 使用 SbtOneJar 插件构建 OneJar 文件时,它为构建的 jar 提供名称 [name]_[scala-version]-[version]-one-jar.jar,其中 na
我使用的是 Bootstrap 3.0 及其网格系统,并且在我的页面上有两个 div,一个在另一个上面。 我想让用户能够切换 View ,这样这些 div 将一个放在一边另一个(点击按钮)。我可以仅使
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
目标是从 mkv 生成 HLS 兼容的 MPEGTS 片段,使用 -c:v copy 复制视频,但对音频进行转码。 但是,由于在输入搜索( -ss )时,ffmpeg 会搜索关键帧(对我来说,这似乎是
我正在使用 cffile action="upload" 将名称中包含空格的文件上传到 Amazon S3 .文件名为 burger+beans n beetroot.jpg .如您所见,该名称包含空
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Parsing blank XML tags with LXML and Python 给定以下 XML 文
我安装了 Visual Studio 2012 v3 和 git 扩展。 I want to change the default merge tool to winmerge but it seem
我是一名优秀的程序员,十分优秀!