<p>你可以使用我开发的<a href="https://pypi.org/project/polt" rel="nofollow noreferrer">polt Python package</a>来实现这个目的。<a href="https://pypi.org/project/polt" rel="nofollow noreferrer">polt</a>使用<a href="https://matplotlib.org" rel="nofollow noreferrer">matplotlib</a>同时显示来自多个源的数据。你知道吗</p>
<p>创建一个脚本<code>adc_read.py</code>,从ADC读取值并<code>print</code>将其输出:</p>
<pre class="lang-py prettyprint-override"><code>import random, sys, time
def read_adc():
"""
Implement reading a voltage from your ADC here
"""
# simulate measurement delay/sampling interval
time.sleep(0.001)
# simulate reading a voltage between 0 and 5V
return random.uniform(0, 5)
while True:
# gather 100 readings
adc_readings = tuple(read_adc() for i in range(100))
# calculate average
adc_average = sum(adc_readings) / len(adc_readings)
# output average
print(adc_average)
sys.stdout.flush()
</code></pre>
<p>哪些输出</p>
<pre class="lang-sh prettyprint-override"><code>python3 adc_read.py
# output
2.3187490696344444
2.40019412977279
2.3702603804716555
2.3793495215651435
2.5596985467604703
2.5433401603774413
2.6048815735614004
2.350392397280291
2.4372325168231948
2.5618046803145647
...
</code></pre>
<p>然后可以将此输出<a href="https://en.wikipedia.org/wiki/Pipeline_(Unix)" rel="nofollow noreferrer">piped</a>转换为<a href="https://pypi.org/project/polt" rel="nofollow noreferrer">polt</a>以显示实时数据流:</p>
<pre class="lang-sh prettyprint-override"><code>python3 adc_read.py | polt live
</code></pre>
<p><a href="https://i.stack.imgur.com/jjA9K.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/jjA9K.png" alt="polt plot window"/></a></p>
<p>标签可以通过添加元数据来实现:</p>
<pre class="lang-sh prettyprint-override"><code>python3 adc_read.py | \
polt \
add-source -c- -o name=ADC \
add-filter -f metadata -o set-quantity=voltage -o set-unit='V' \
live
</code></pre>
<p><a href="https://i.stack.imgur.com/uIreo.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/uIreo.png" alt="polt plot window"/></a></p>
<p><a href="https://nobodyinperson.gitlab.io/python3-polt" rel="nofollow noreferrer">polt documentation</a>包含关于进一步定制可能性的信息。你知道吗</p>