在 Python 中读取串行数据无法正常工作

时间:2021-02-14 22:35:10

标签: python arduino arduino-uno

我正在尝试将来自 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 时,它滞后或根本不更新数据。

有什么想法吗?

0 个答案:

没有答案