首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Mindwave图形

Python Mindwave图形
EN

Stack Overflow用户
提问于 2011-12-28 09:18:42
回答 1查看 1.6K关注 0票数 4

我在圣诞节得到了一台Neurosky Mindwave,但很快就对它的标准软件不屑一顾。因此,我把我对python的基本理解带到了它上面,并很快找到了我的缺点。所以我开始四处寻找,找到了两段我想要组合的代码。

我的目的是创建一个实时绘图实用程序,它从Mindwave中获取输入并将其输出到图形中。

我找到的第一个代码是Think gear的接口。它从COM端口接收数据包,并使用日志记录方法显示它们:

thinkgear.py

我发现的第二段代码是我想集成的图形化方法。我已经广泛地使用了Tkinter包,所以我选择它作为第一选择。我对不需要太多第三方软件(matlab?)的更简单的方法持开放态度。我在这里找到的绘图代码:

https://stackoverflow.com/a/7605072/1110140

我想要做的是将第一个的输出提供给第二个,用于实时图形。但是,我没有使用日志记录模块的经验,也不知道如何将其与原始代码分离,以用作第二个模块的输入。此外,第二部分的代码主要用于演示目的,我也不确定如何操作它以使其与演示之外的其他东西看起来更好。

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-29 15:03:55

从thinkgear.py上看,ThinkGearProtocol只是一个工厂,它使用ThinkGearMetaClass来生成其类型为返回数据类型的对象。下面的代码-

代码语言:javascript
复制
global packet_log
packet_log = []
logging.basicConfig(level=logging.DEBUG)

for pkt in ThinkGearProtocol('/dev/rfcomm9').get_packets():
    packet_log.append(pkt)

看起来它的目的是在单个线程中将数据包流到记录器。对于您的应用程序,您不一定要使用记录器(这就是它可能令人困惑的地方)。对于您来说,使用像这样的东西可能会更容易

代码语言:javascript
复制
def PacketHandler(packet):
    # Send an event out to objects 
    for obj in listeners:
        obj.packet_callback(packet)

for pkt in ThinkGearProtocol('/dev/rfcomm9').get_packets():
    PacketHandler(pkt)

或者,我不使用Tkinter,但如果它有一些处理事件的方法,您可以使用上面的代码来发布事件。现在,您可以通过编写将传入的数据包转换为原始数据的代码将thinkgear.py模块粘合到StripChart类,然后将此原始数据发布到图形中。我将首先尝试使用StripChart,看看需要做些什么才能使它工作,然后用一个虚拟处理程序编写上面的侦听器,看看是否可以打印数据流(使用实际值而不是数据包)。从那里开始,它是非常特定于应用程序的。

这看起来就像

thinkgear.py ->数据包线程(procs事件) ->数据包数据解析器(获取原始数据) ->内部模型-> StripChart。

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

https://stackoverflow.com/questions/8650909

复制
相关文章

相似问题

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