Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何防止python中的代码因writeTimeoutError而崩溃?_Python_Arduino_Pyserial - Fatal编程技术网

如何防止python中的代码因writeTimeoutError而崩溃?

如何防止python中的代码因writeTimeoutError而崩溃?,python,arduino,pyserial,Python,Arduino,Pyserial,我编写了一个示例代码,根据python代码发送给arduino的信息闪烁/调暗led,只要python正在发送一些信息。代码在某个时候运行正常,在某个时间点之后,它会突然崩溃并出现此错误。这个错误是什么?为什么会发生 File "C:\PYTHON~1\lib\site-packages\serial\serialwin32.py", line 261, in write raise writeTimeoutError serial.serialutil.SerialTimeoutExcepti

我编写了一个示例代码,根据python代码发送给arduino的信息闪烁/调暗led,只要python正在发送一些信息。代码在某个时候运行正常,在某个时间点之后,它会突然崩溃并出现此错误。这个错误是什么?为什么会发生

File "C:\PYTHON~1\lib\site-packages\serial\serialwin32.py", line 261, in write
raise writeTimeoutError
serial.serialutil.SerialTimeoutException: Write timeout'
Python代码:

def glow_the_LED(set_accepted_list,set_list_ant_id,set_forbidden_list):
    if ((len(set_accepted_list &  set_list_new_id)) >0 & ((set_forbidden_list & set_accepted_list) == set())) :
        print"yes,bright the LED"
        use_LED(1)
    else:
        print"no,dim the LED"
        use_LED(0)
    set_for_comparison = set(set_accepted_list &  set_list_new_id)
    return set_for_comparison  

def establishing_connection():   #for establishing connection
    x = ser.read();
last_action = -1

def use_LED(activate):
    global last_action
    global serial
    if(last_action != activate):
        ser.write(activate)
        print "should open door -> " + str(activate)
    last_action = activate
Arduino代码:

bool lastAction = true;
void setup() {
  Serial.begin(38400);
  while(!Serial){}//wait until the serial port is connected
  Serial.write('1');
  pinMode(10 ,OUTPUT);
}

void loop() {
  if(Serial && Serial.available())
    handleData();
  }
  delay(50);
}

void handleData()
{
  char a = Serial.read();
     if(a == 'e')
     {  
       Serial.end();
     }
     else
     {
       digitalWrite(10,lastAction);
       lastAction =! lastAction;    
     }
  Serial.write('1');//ack
  Serial.flush();
}

我调用所有函数,正确设置arduino和python之间的连接。代码也可以正常工作,但稍后会因为上面提到的错误而崩溃。

George,如果没有看到您的任何代码,我会怀疑您发送数据的速度太快。此消息可能意味着串行缓冲区已满,尤其是在未启用任何硬件握手的情况下(与Arduino串行设置相同)。尝试使用一些延迟调整写入速度,设置
writeTimeout
或更高的波特率。还可以尝试发布您的代码,以便我们能提供更好的帮助。

我尝试使用波特率并设置writeTimeout。这没用。