python - 将快速串行数据写入文件(csv 或 txt)

标签 python csv arduino serial-port export-to-csv

有没有办法捕获非常快的串行数据并将其写入文件?

我使用 32kSPS 外部 ADC 和波特率 2000000,同时以以下格式打印:adc_value (32bits)\t millis()

这会导致每 1 毫秒打印约 15 次。不幸的是,我尝试过的每个解决方案都无法捕获实时数据并将其存储到文件中。这包括:处理草图、TeraTerm、串行端口监视器、puTTY 和一些 Python 脚本。他们都无法实时记录数据。 另一方面,Arduino Serial Monitor 能够显示实时串行数据,但无法将其记录在文件中,因为它缺少此功能。

这是 Arduino 中串行监视器的打印屏幕,其中包含传入数据:

enter image description here

最佳答案

一个有问题的事情可能是您每次收到新记录时都尝试进行写入。这会浪费大量时间写入数据。

而是尝试将数据收集到缓冲区中,并且当缓冲区即将溢出时,在单个且尽可能低级别的写入调用中写入整个缓冲区。

为了不停止过多的数据接收,您可以使用线程和双缓冲:在一个线程中接收数据,写入缓冲区。当缓冲区即将溢出时,向第二个线程发出信号并切换到第二个缓冲区。另一个线程获取已满的缓冲区并将其写入磁盘,并等待下一个缓冲区变满。

关于python - 将快速串行数据写入文件(csv 或 txt),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48620151/

相关文章:

python - 如何集成 ZSH 和 (i)python?

python - sklearn余弦相似度::AttributeError: 'module'对象没有属性 'metrics'

python - 如何在 py.test 中显示警告

javascript - 重组 CSV 文件?

python - 如何将 csv 中的行插入到 postgres+python 中现有表中的特定列?

c++ - 等到例行程序在 Arduino 上结束

linux - 在 Ubuntu Linux 上为 Arduino 编译程序——还有其他方法吗?

python - python 中的循环和字符串

Python输出每个子目录下的文件个数到一个csv文件

将 char* 转换为 unsigned char arduino