<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>http://ii.tudelft.nl/vret_oud/index.php?action=history&amp;feed=atom&amp;title=Mobi8PythonHBR</id>
	<title>Mobi8PythonHBR - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://ii.tudelft.nl/vret_oud/index.php?action=history&amp;feed=atom&amp;title=Mobi8PythonHBR"/>
	<link rel="alternate" type="text/html" href="http://ii.tudelft.nl/vret_oud/index.php?title=Mobi8PythonHBR&amp;action=history"/>
	<updated>2026-04-04T05:34:23Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>http://ii.tudelft.nl/vret_oud/index.php?title=Mobi8PythonHBR&amp;diff=2162&amp;oldid=prev</id>
		<title>Wouter at 10:27, 25 June 2009</title>
		<link rel="alternate" type="text/html" href="http://ii.tudelft.nl/vret_oud/index.php?title=Mobi8PythonHBR&amp;diff=2162&amp;oldid=prev"/>
		<updated>2009-06-25T10:27:42Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 10:27, 25 June 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l57&quot; &gt;Line 57:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 57:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; print &amp;quot;heartbeat!&amp;quot;, 60/heartTime, &amp;quot;bpm&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; print &amp;quot;heartbeat!&amp;quot;, 60/heartTime, &amp;quot;bpm&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; else:&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; else:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;if &lt;/del&gt;heartbeat&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;gt;&lt;/del&gt;0&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;:&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; heartbeat&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/ins&gt;0&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; heartbeat=heartbeat-1&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; prevSample=sample&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; prevSample=sample&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Wouter</name></author>
		
	</entry>
	<entry>
		<id>http://ii.tudelft.nl/vret_oud/index.php?title=Mobi8PythonHBR&amp;diff=2161&amp;oldid=prev</id>
		<title>Wouter at 10:22, 25 June 2009</title>
		<link rel="alternate" type="text/html" href="http://ii.tudelft.nl/vret_oud/index.php?title=Mobi8PythonHBR&amp;diff=2161&amp;oldid=prev"/>
		<updated>2009-06-25T10:22:46Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
import win32com.client&lt;br /&gt;
import time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#-------------connecting procedure----------------&lt;br /&gt;
print &amp;#039;mobi8 heartbeat counter demo&amp;#039;&lt;br /&gt;
print &amp;#039;W.Pasman 24june 2009&amp;#039;&lt;br /&gt;
&lt;br /&gt;
mobi8=win32com.client.Dispatch(&amp;quot;PortiSerial.SerialSource&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;connecting with mobi8...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
mobi8.ComPort=&amp;quot;4&amp;quot;&lt;br /&gt;
SerialNumber = mobi8.FrontendSerialNumber&lt;br /&gt;
if SerialNumber==-1:&lt;br /&gt;
  raise Exception(&amp;quot;can not open connection with mobi8.&amp;quot;+&lt;br /&gt;
    &amp;quot; Try to reconnect the mobi8 device via bluetooth&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
NrOfChannels=mobi8.GetFrontendNrOfChannels()&lt;br /&gt;
HighestSampleRate=mobi8.SampleRate&lt;br /&gt;
print &amp;quot;mobi8 connected with &amp;quot;+str(NrOfChannels)+&amp;quot; channels, max samplerate=&amp;quot;+str(HighestSampleRate)&lt;br /&gt;
&lt;br /&gt;
#----------- set up the sampler -------------&lt;br /&gt;
&lt;br /&gt;
ReceivedSamples=0&lt;br /&gt;
DesiredSampleRate=HighestSampleRate/4 # samples/s&lt;br /&gt;
SamplingTime=30                # seconds total measurement time.&lt;br /&gt;
mobi8.SampleRate=DesiredSampleRate&lt;br /&gt;
error=mobi8.StartAcq(DesiredSampleRate)&lt;br /&gt;
print &amp;quot;returned:&amp;quot;,error&lt;br /&gt;
&lt;br /&gt;
#-------------- sample heart beat rate calculator----------------&lt;br /&gt;
prevSample=0 # for very simple highpass filter&lt;br /&gt;
beattop=10000    # the peak height of hp-filtered signal.&lt;br /&gt;
heartbeat=0    # counter to determine length of peaks&lt;br /&gt;
&lt;br /&gt;
heartTime=1 # nice start value for avg time between heartbeats&lt;br /&gt;
prevBeatTime=time.time()&lt;br /&gt;
&lt;br /&gt;
while ReceivedSamples &amp;lt; SamplingTime*DesiredSampleRate:&lt;br /&gt;
  Periods,samples=mobi8.GetSampleRecordAsVariant()&lt;br /&gt;
  if Periods&amp;gt;0:&lt;br /&gt;
    ReceivedSamples = ReceivedSamples+Periods&lt;br /&gt;
    #print Periods&lt;br /&gt;
    for sample in samples[0]:&lt;br /&gt;
      d=sample-prevSample # compute high-pass filtered signal&lt;br /&gt;
      if d&amp;gt;beattop and ReceivedSamples &amp;gt; 500: # trash first samples  &lt;br /&gt;
        beattop=d # update max peak height&lt;br /&gt;
        print beattop&lt;br /&gt;
      if d&amp;gt;beattop/3:&lt;br /&gt;
        heartbeat=heartbeat+1&lt;br /&gt;
        if heartbeat==3:&lt;br /&gt;
          thetime=time.time()&lt;br /&gt;
          heartTime=.9*heartTime + .1*(thetime-prevBeatTime)  &lt;br /&gt;
          prevBeatTime=thetime        &lt;br /&gt;
          print &amp;quot;heartbeat!&amp;quot;, 60/heartTime, &amp;quot;bpm&amp;quot;&lt;br /&gt;
      else:&lt;br /&gt;
        if heartbeat&amp;gt;0:&lt;br /&gt;
          heartbeat=heartbeat-1&lt;br /&gt;
      prevSample=sample&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
#-----------------disconnect --------------------&lt;br /&gt;
print &amp;quot;closing down connection&amp;quot;&lt;br /&gt;
error=mobi8.StopAcq()&lt;br /&gt;
error=mobi8.ReleaseSerialPort()&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;ended&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wouter</name></author>
		
	</entry>
</feed>