Pyserian站着不动了

2024-07-05 14:09:05 发布

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

好吧,我正在尝试使用一个Python脚本与一个Arduino Uno通信。基本上这个问题与this相同,其中的解决方案是添加一个时间。睡觉(xx)(对我没用)。在

我在Archlinux(截至2014年1月26日)和osx10.9.1上都尝试过,结果都是一样的,都是在python3.3.3上。在

但是(!),如果我在打开Arduino监视器时运行.py,或者在ipython/python控制台上运行相同的命令,或者在运行(pdb)时,代码运行得很好(!?!?)。。。在

这是我的。伊诺:

char incomingByte;
const int comDelay = 200;
int count;
const int led = 3;              

void imHere(int led, int time, int blinks){ // blink led for bug control
  for (count  = 1; count <= blinks; count++){
    digitalWrite(led, HIGH);
    delay(time);
    digitalWrite(led, LOW);
    delay(time);
  }
}

void setup(){
  Serial.begin(9600); 
  pinMode(led, OUTPUT);
}

void loop(){   
  if( Serial.available() > 0){  
    incomingByte = Serial.read();
    delay(comDelay);    
    switch (incomingByte){
    case 't':                      // -t | 'test': communication test flag       
      imHere(led, 500, 2);         // incomingByte received witness 
      Serial.print('0');
      imHere(led, 50, 10);         // response sent witness
      //Serial.flush();
      break;
    default:
      imHere(led, 1500, 1);        // communication error witness
      Serial.print('-1');
      break; // error?
    }
  }
}

这是我的

^{pr2}$

基本上,.py发送一个't',.ino接收它并返回一个'0'。在


Tags: pyledtimecountserialarduinointdelay
1条回答
网友
1楼 · 发布于 2024-07-05 14:09:05

尝试在串行端口打开后添加延迟。在数据输入/输出时,可能尚未完全准备就绪。为了安全起见,在两个平台上进行!在

基本睡眠/延迟:

ser = serial.Serial(port_name, 9600)

以及

^{pr2}$

相关问题 更多 >