使用pyseri从串行端口读取连续数据

2024-06-26 13:58:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我的arduino一直在给我送线。在

例如,我逐行发送一个整数(0-1023),因此它应该是:

"51\r\n233\r\n37\r\n166\r\n"

并且无限长,只要它是连续不断的流。在

我目前正在使用pyserial的函数readline()来读取数据,但是经常会看到损坏/丢失的字节。例如,它不是"37\r\n"后跟"11\r\n",而是得到"3\r11\r\n"甚至"3711\r\n"!在

下面是我完整的Python结束代码:

^{pr2}$

对于那些感兴趣的人,(可能相关的)arduino代码只是:

#define FASTADC 1  // Flag for prescale 16
// Code pasted for modifying ADCSRA
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif

void setup() {
  Serial.begin(1000000);
  #if FASTADC
    // set prescale to 16
    sbi(ADCSRA,ADPS2) ;
    cbi(ADCSRA,ADPS1) ;
    cbi(ADCSRA,ADPS0) ;
  #endif
}

void loop() {
  int val;
  val = analogRead(A0);
  Serial.println(val);
}

从代码中可以看到,波特率、奇偶校验、停止位都设置为1000000;无;1。在


Tags: 代码forbitvalarduinoendifsbisfr