操作系统:Raspbian Stretch
Python 版本:例如3.8
Pi 模型:例如Pi 3+ B 型
GPIO 零版本:1.5.1
使用的引脚工厂:
我正在用 RaspberryPi 和 Python 做一个项目,我有 32 个继电器,我为每个继电器做 3 个测量,然后我做了 3 个测量的平均值并存储在一个列表中。 测量效果很好,但有时会发生错误并阻塞我的整个 GUI,原因 -> ADC 在支持测量时阻塞,我不知道为什么!
这是它阻塞的代码行。
leitura=gpiozero.MCP3208(channel=canal[ncanal], differential=False, max_voltage=adc_max_volt_ref, port=0, device=0).voltage
有谁知道这个错误来自哪里以及如何解决它?
这是有时会阻塞的功能。
import gpiozero
def average(lst):
var = sum (lst)/len(lst)
return var
def leitura_adc(ncanal, adc_max_volt_ref, casas_decimais):
vect_leituras=[]
canal={1:0, 2:1, 3:2, 4:3, 5:4, 6:5, 7:6, 8:7}
leitura=0
cnt=0
for i in range(3): # vai fazer X mediçoes
while leitura==0:
try:
print("leitura antes: ",leitura)
time.sleep(0.3)
leitura=gpiozero.MCP3208(channel=canal[ncanal], differential=False, max_voltage=adc_max_volt_ref, port=0, device=0).voltage # clock_pin=11, mosi_pin=10, miso_pin=9, select_pin=8
print("leitura depois: ",leitura)
except:
leitura=0
cnt=cnt+1
if cnt == 5:
string="Verificar ligação do ADC ao sistema!!!"
funcoes.func_imprime_gui(self,string,1)
break
vect_leituras.append(leitura)
resultado_leitura_adc=average(vect_leituras) # faz a media das 3 leituras
print(round(vdc_media,casas_decimais))