我正在尝试将来自 arduino uno(电位计值读数)的数据采样到 python。 串行读取正在线程中运行。当我想在每个采样周期(比如 1 秒)更新值时,它要么滞后,要么根本不更新当前值。
Arduino 代码:
int analogPin = A0;
byte* bytePointer;
void setup() {
Serial.begin(9600);
}
void loop() {
val = analogRead(analogPin);
bytePointer = (byte*)(&val);
Serial.write(bytePointer, len);
}
以下使用的 Python 代码:
class SerialCustom:
def __init__(self, port, bauderate):
self.serialObject = serial.Serial(port=port, baudrate=bauderate, bytesize=8)
self.buffer = bytearray(2)
def read_in_thread(self):
self.serialObject.flushInput()
while True:
self.serialObject.readinto(self.buffer)
def get_sampled_val(self,sampling_rate_s ):
T = threading.Thread(target=self.start_read_thread)
T.start()
time_old = time.time()
while True:
dt = time.time() - time_old
if dt >= sampling_rate_s:
print('sampled val: ',self.buffer)
time_old = time.time()
运行“get_sampled_val(ts)”当ts=0#sec时,没有延迟,数据实时更新。
我的目的是在线程中连续读取值,并在 get_sampled_val 中使用线程读取的最新值,但它没有按预期工作。当 ts>0 时,它滞后或根本不更新数据。
有什么想法吗?