将 pyserial 与 arduino 串行输出同步

问题描述

有没有一种简单的方法可以将pyserial串行连接的数据流与arduino同步?我运行的这段简单代码不时给出奇怪的值,我只能假设这是由于位移或垃圾数据造成的。

例如,有些运行我得到了一个具有正确输出的数据数组:

[4.697265625,4.7021484375,4.6923828125,4.6826171875,4.677734375,4.66796875,4.658203125,....]

然后一些运行我会得到如下所示的数据:

[1.6408595718088704e-28,2.524370304146793e-28,1.640838386579482e-28,1.640838386579482e-28 ... ]

我假设垃圾数据是由于发送的字节不同步(即python程序正在接收下一个数据包的第一个字节和第一个数据包的第2、3、4字节)。

有没有人遇到过这种情况并有解决方案?

这是我用来通过串行端口发送值的代码

Arduino

void loop(){
  double val = 5.0*(analogRead(1))/1024.0;
  //Serial.println(val);
  sendToPc(&val);
}

void sendToPc(double* data){
  byte* byteData = (byte*)(data);
  Serial.write(byteData,4);
}

访问它的简单python代码

Python 代码

self.handle.reset_input_buffer()
self.handle.reset_output_buffer()
while(True):
   self.handle.readinto(self.rawData)

rawData 是一个大小为 4 字节的字节数组。

提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)