我在圣诞节得到了一台Neurosky Mindwave,但很快就对它的标准软件不屑一顾。因此,我把我对python的基本理解带到了它上面,并很快找到了我的缺点。所以我开始四处寻找,找到了两段我想要组合的代码。
我的目的是创建一个实时绘图实用程序,它从Mindwave中获取输入并将其输出到图形中。
我找到的第一个代码是Think gear的接口。它从COM端口接收数据包,并使用日志记录方法显示它们:
我发现的第二段代码是我想集成的图形化方法。我已经广泛地使用了Tkinter包,所以我选择它作为第一选择。我对不需要太多第三方软件(matlab?)的更简单的方法持开放态度。我在这里找到的绘图代码:
https://stackoverflow.com/a/7605072/1110140
我想要做的是将第一个的输出提供给第二个,用于实时图形。但是,我没有使用日志记录模块的经验,也不知道如何将其与原始代码分离,以用作第二个模块的输入。此外,第二部分的代码主要用于演示目的,我也不确定如何操作它以使其与演示之外的其他东西看起来更好。
任何帮助都是非常感谢的。
发布于 2011-12-29 15:03:55
从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 ->数据包线程(procs事件) ->数据包数据解析器(获取原始数据) ->内部模型-> StripChart。
https://stackoverflow.com/questions/8650909
复制相似问题