erickson уже объяснил, почему вы не можете этого сделать, но здесь некоторые решения:
Если вы хотите только извлечь элементы из своего базового списка, в принципе ваш метод приема должен быть объявлен как принимающий List<? extends BaseClass>
.
Но если это не так, и вы не можете его изменить, вы можете обернуть список с помощью Collections.unmodifiableList(...)
, который позволяет возвращать список супертипа параметра аргумента. (Он избегает проблемы с типами, бросая UnsupportedOperationException при попытках вставки).
Чтобы получить правильное значение, вы должны прочитать значение дважды. При первом считывании микросхема выполняет новое измерение и возвращает текущее значение в регистр (что не является правильным значением). Во втором чтении вы получите правильное значение:
import smbus
import time
address = 0x48
A0 = 0x40
A1 = 0x41
A2 = 0x42
A3 = 0x43
bus = smbus.SMBus(1)
while True:
bus.read_byte_data(address, A1) # do the measurement but ignore the value
value = bus.read_byte_data(address, A1) # get the correct value
#print(value)
print("AOUT: %1.03f" %(value*3.3/255))
time.sleep(0.2)