Python pdsend数据流

2024-10-01 07:42:58 发布

您现在位置:Python中文网/ 问答频道 /正文

首先是一些背景: 四块MPR121转接板(https://www.sparkfun.com/products/9695)通过i2C连接到树莓皮2。python脚本从四块板读取数据,并使用pdsend将其发送到纯数据。在

目前我已经设法得到了所有需要在终端上打印的数据。但是,我不确定如何在纯数据中获得相同的结果,因为我只接收文本消息(类似于“print:.join(map(str print:diff3))”)

我很确定我需要改变操作系统行以适应变量,但我找不到如何做到这一点。在

事先非常感谢。在

def send2Pd (message=' '):
os.system("echo '" + message + "' | pdsend 3000");

while True:

diff1 = [cap1.baseline_data(i)-cap1.filtered_data(i) for i in range(12)]
print 'Diff1:', '\t'.join(map(str, diff1))
send2Pd ('.join(map(str, diff1));')

diff2 = [cap2.baseline_data(i)-cap2.filtered_data(i) for i in range(12)]
print 'Diff2:', '\t'.join(map(str, diff2))
send2Pd ('.join(map(str, diff2));')

diff3 = [cap3.baseline_data(i)-cap3.filtered_data(i) for i in range(12)]
send2Pd ('.join(map(str, diff3));')
print 'Diff3:', '\t'.join(map(str, diff3))

diff4 = [cap4.baseline_data(i)-cap4.filtered_data(i) for i in range(12)]
print 'Diff4:', '\t'.join(map(str, diff4))
send2Pd ('.join(map(str, diff4));')

time.sleep(0.1)

Tags: 数据inmapfordatarangefilteredprint
2条回答

好的,分类了。在

这段代码为纯数据中的每个cap提供了一行。在

但是,它看起来确实非常占用资源(使用率监视器标记为50%左右),而且这是没有运行pd补丁的。有没有一个简单的方法可以让它更有效?在

谢谢你!在

import os
import sys
import time
import captouch as MPR121

# Create MPR121 instances
cap1 = MPR121.MPR121()
cap2 = MPR121.MPR121()
cap3 = MPR121.MPR121()
cap4 = MPR121.MPR121()

# Initialize communication with all 4 MPR121s
cap1.begin( 0x5a )
cap2.begin( 0x5b )
cap3.begin( 0x5d )
cap4.begin( 0x5c )

# Define send2Pd function
def send2Pd (message=' '):
    os.system("echo '" + message + "' | pdsend 3000");

# Start loop
while True:

    # Filtered and baseline data are commented out
    # filtered = [cap1.filtered_data(i) for i in range(12)]
    # print 'Filt:', '\t'.join(map(str, filtered))
    # base = [cap1.baseline_data(i) for i in range(12)]
    # print 'Base:', '\t'.join(map(str, base))

    # Difference for all 4 boards are calculated, printed in terminal and sent to Pure Data
    diff1 = [cap1.baseline_data(i)-cap1.filtered_data(i) for i in range(12)]
    print 'Diff1:', '\t'.join(map(str, diff1))
    send2Pd ('diff1: ' +  '\t'.join(map(str, diff1)) + ';')

    diff2 = [cap2.baseline_data(i)-cap2.filtered_data(i) for i in range(12)]
    print 'Diff2:', '\t'.join(map(str, diff2))
    send2Pd ('diff2: ' +  '\t'.join(map(str, diff2)) + ';')

    diff3 = [cap3.baseline_data(i)-cap3.filtered_data(i) for i in range(12)]
    print 'Diff3:', '\t'.join(map(str, diff3))
    send2Pd ('diff3: ' +  '\t'.join(map(str, diff3)) + ';')

    diff4 = [cap4.baseline_data(i)-cap4.filtered_data(i) for i in range(12)]
    print 'Diff4:', '\t'.join(map(str, diff4))
    send2Pd ('diff4: ' +  '\t'.join(map(str, diff4)) + ';')

    # Short pause before repeating loop
    time.sleep(0.1)

如果我理解正确,您只需要删除传递给send2Pd的参数中的引号,那么send2Pd('\t'.join(map(str, diff1)))之类的方法是否有效?在

相关问题 更多 >