Python 思维波图

标签 python graph serial-port

我在圣诞节收到了 Neurosky Mindwave,但立即对它的标准软件不以为然。于是带着我对python的基本了解,很快就找到了自己的不足。所以我开始四处寻找,发现了两段我想合并的代码。

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

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

thinkgear.py

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

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

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

非常感谢任何帮助。

最佳答案

从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]。

关于Python 思维波图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8650909/

相关文章:

python - Websocket 线程

python - 在lark语法中正确设置规则和终端之间的优先级

减少 ggnet2 网络图中的空白空间

c++ - 通过 RS232 串行端口从条码扫描器读取异步数据

python - 将 Python 算法翻译成 C++ 时遇到困难

python - 使用 Excel 工作表中的数据在 Python 中绘制图表

python - 如何在seaborn图表中循环执行子图

c - 如何修复无法从 esp8266 响应读取serial.find ("OK")

c# - 在 C# 中从 gsm 调制解调器调用电话

python - 如何将 numpy 复杂数组转换为两个元素的 float 组?