Python Mindwave图

时间:2011-12-28 01:18:42

标签: python graph serial-port

我在圣诞节时得到了一个N​​eurosky Mindwave,并立刻对它的标准软件不感兴趣。所以我把我对python的基本理解带到了它,很快发现了我的缺点。所以我开始四处寻找并找到了两个我希望合并的代码。

我的目的是创建一个实时图形工具,从Mindwave获取输入并将其输出到图形。

我发现的第一个代码是Think设备的界面。它从COM端口接收数据包并使用日志记录方法显示它们:

thinkgear.py

我发现我要整合的第二段代码是图形方法。我已经广泛使用了Tkinter包,所以我选择这个作为首选。我愿意接受更多不需要太多第三方软件的方法(matlab?)我在这里找到的图表代码:

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

我想要做的是将第一个输出输入第二个用于实时图表。但是,我没有使用日志记录模块的经验,也不知道如何将其与原始代码隔离以用作第二个的输入。另外,第二个的代码主要用于演示目的,我再次不确定如何操作它以使用除演示之外的其他东西。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

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

global packet_log
packet_log = []
logging.basicConfig(level=logging.DEBUG)

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

看起来像是要将数据包流式传输到单个线程中的记录器。对于您的应用程序,您不一定使用记录器(这可能会令人困惑)。你可能更容易使用像

这样的东西
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] - > [Packet Thread(procs events)] - > [分组数据分析器(获取原始数据)] - > [内部模型] - > [带状图。