为了账号安全,请及时绑定邮箱和手机立即绑定

在 Kivy 标签中显示来自 python 程序的心跳传感器读数

在 Kivy 标签中显示来自 python 程序的心跳传感器读数

梵蒂冈之花 2022-01-18 17:50:30
我正在尝试在我的 Kivy 应用程序中显示从我的心跳传感器获得的值。我已经尝试使用应用于其他传感器的数据提取方法,但它不适用于该传感器,因为它不包含任何功能。我尝试了多种不同的方法,但它们都没有返回所需的输出。有人可以看看传感器代码并建议一些方法在我的 kivy 应用程序中显示输出。Heartbeatsensot.pyimport time# Import the ADS1x15 module.import Adafruit_ADS1x15if __name__ == '__main__':    adc = Adafruit_ADS1x15.ADS1015()    # initialization     GAIN = 2/3      curState = 0    thresh = 525  # mid point in the waveform    P = 512    T = 512    stateChanged = 0    sampleCounter = 0    lastBeatTime = 0    firstBeat = True    secondBeat = False    Pulse = False    IBI = 600    rate = [0]*10    amp = 100    lastTime = int(time.time()*1000)    # Main loop. use Ctrl-c to stop the code    while True:        # read from the ADC        Signal = adc.read_adc(0, gain=GAIN)   #TODO: Select the correct ADC channel. I have selected A0 here        curTime = int(time.time()*1000)        sampleCounter += curTime - lastTime;      #                   # keep track of the time in mS with this variable        lastTime = curTime        N = sampleCounter - lastBeatTime;     #  # monitor the time since the last beat to avoid noise        #print N, Signal, curTime, sampleCounter, lastBeatTime        ##  find the peak and trough of the pulse wave        if Signal < thresh and N > (IBI/5.0)*3.0 :  #       # avoid dichrotic noise by waiting 3/5 of last IBI            if Signal < T :                        # T is the trough              T = Signal;                         # keep track of lowest point in pulse wave         if Signal > thresh and  Signal > P:           # thresh condition helps avoid noise            P = Signal;                             # P is the peak                                                # keep track of highest point in pulse wave** 我正在尝试将读数添加到的 kivy 应用程序**
查看完整描述

1 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

我认为你可以通过一些小的修改来完成你想要的。首先添加一个StringProperty到你的ScreenThermo类,并在on_enter()方法中启动一个线程来运行你的Heartbeatsensot代码:


from Heartbeatsensot import hearbeatsensot


class ScreenThermo(Screen):

    BPM_string = StringProperty('BPM: Not Detected')


    def on_enter(self, *args):

        Thread(target=hearbeatsensot, args=(self,)).start()

在您的kv文件中,添加对 new 的引用StringProperty:


<ScreenThermo>:

    Label:

        text: " Pulse rate"

        font_size: 50

        pos: (35, 100)



    Label:

        id: TempLabel

        text: root.BPM_string  # references new StringProperty

        font_size: 60

        halign: 'center'

        valign: 'middle'

现在您只需要将要显示的任何内容TempLabel放入BPM_string属性中即可。为此,请更改Heartbeatsensot.py以定义可在Thread. if __name__ == '__main__':只需将该文件中的替换为def hearbeatsensot(screenThermo):如下所示:


import time

# Import the ADS1x15 module.

import Adafruit_ADS1x15



def hearbeatsensot(screenThermo):


    adc = Adafruit_ADS1x15.ADS1015()

    # initialization

    GAIN = 2/3

    .

    .

    .

    screenThermo.BPM_string = 'BPM: 65'

    .

    .

    .

然后,在该方法中,只需使用 somethink like screenThermo.BPM_string = 'BPM: 65'(或任何您想要设置的内容)。BPM_string文件中的引用kv将自动设置绑定以更新TempLabel每当BPM_string被修改时。


查看完整回答
反对 回复 2022-01-18
  • 1 回答
  • 0 关注
  • 167 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信