首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用PySerial/Matplotlib实现RS-232实时绘图

用PySerial/Matplotlib实现RS-232实时绘图
EN

Stack Overflow用户
提问于 2009-11-25 22:28:04
回答 2查看 3.5K关注 0票数 2

我是Python世界的新手,我的编程技术相当差,但我正在尝试找到一种方法来使用Python显示脑电图电路的输出(使用OpenEEG电路http://openeeg.sourceforge.net)。

模拟输出通过模数转换器(在ATmega8微控制器中)进行放大和处理,并由MAX232转换为RS232。

RS232信号如下:

字节1:同步值0xa5

字节2:同步值0x5a

字节3:版本

字节4:帧编号

字节5:通道1低位字节

字节6:通道1高字节

字节7:通道2低位字节

字节8:通道2高字节

..。

字节9-16用于额外的电极通道,但不需要数据,因为只使用前两个

..。

字节17:按钮状态(b1-b4)

我已经有了一些基本的PySerial功能,但我需要找到一种方法来利用传入的数据,方法是缓冲数据并将有用的值绘制为2个实时x-y波形(时间与电压)。

问题更新:

我只打印了几行明显的PySerial代码,但这简直是胡言乱语。我正在尝试将数据剥离成可以绘制的值的格式。这17个字节的数据当前以256帧/秒的速度传入。这(两个)通道分别由10位数据组成(用6个0组成其余2个字节)。它们是无符号的,给出了从0到1023的可能值。这些值对应于应该绘制为正值和负值的值,因此二进制值512对应于零(微伏)的曲线图。

如何以8位二进制格式读取传入的流(去掉不需要的数据),然后组合每个通道中的两个相关字节(如果需要,可能会删除多余的6个零)?

EN

回答 2

Stack Overflow用户

发布于 2009-11-25 22:48:08

要处理复杂的二进制数据格式,您可以在numpy中使用structured arrays (另请参阅here以获得更好的介绍)。在定义了数据的结构之后,应该很容易将其读入。然后,您可以使用numpy的功能将数据简化为您需要的内容。

票数 2
EN

Stack Overflow用户

发布于 2009-12-01 14:37:42

有一个很好的实时绘图示例here。这是一个很好的例子,因为它使用自生成的数据运行,所以很容易测试,但在哪里修改代码以绘制实际数据也很明显,代码也很容易理解。

基本思想是创建一个绘图窗口,然后在数据传入时使用

代码语言:javascript
运行
复制
set_xdata(np.arange(len(self.data)))
set_ydata(np.array(self.data))

(不过,在当前版本的matplotlib中,您可能希望使用set_data(xdata, ydata)。)

至于解析串行端口数据,最好作为一个单独的问题来问。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1797249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档