Enviando comunicação serial do Raspberry pi

Estou enviando dados seriais de um Raspberry Pi para um Arduino usando um programa Python. Estou executando o Python 2.7.3. O programa é:

import serial

ser = serial.Serial('/dev/ttyACM0', 115200)

ser.write(b'\x4c\xff\x46')

O problema é que nada parece ser enviado por essas três linhas se elas forem executadas em um programa. Mas se eu os executar linha por linha em um shell Python, eles funcionarão bem.

Além disso, se o Arduino Serial Monitor estiver aberto, o programa também funcionará bem, sem executar as linhas uma a uma no shell.

EDITADO PARA ADICIONAR:

Parece que há algum atraso no envio para o Arduino. Então, quando executo o código no modo interpretativo, ele funciona, mas se como um programa, não funciona. Eu acho que porque tentei o mesmo programa em uma máquina Windows.

import serial

ser = serial.Serial('COM8', 115200)

ser.write(b'\x4c\x20\x46')

Se eu executar o programa no modo interpretativo, ou mesmo no modo de depuração com um ponto de interrupção no comando ser.write, ele funcionará. Mas não se for executado como um programa.

EDITADO PARA ADICIONAR MAIS:

Acontece que o Arduino tem uma redefinição automática nas comunicações seriais que precisam ser desativadas:

http://playground.arduino.cc/Main/DisablingAutoResetOnSerialConnection#.UwP_wfldV8E

http://forum.arduino.cc/index.php/topic,28723.0.html

Usei um capacitor de 220 uF entre o pino RESET e o terra. Isso funciona.

Difícil de ser mordido por um bug como esse! Ainda é inteligente.

questionAnswers(1)

yourAnswerToTheQuestion