leitura e gravação serial de python para arduino
Estou tentando "ping pong" informações entre um código python e um código arduino. Quero enviar dois pontos de ajuste para o código do arduino periodicamente (por exemplo, no minuto), lê-los no arduino e atualizar variáveis e enviar informações de status do arduino de volta ao python periodicamente (como: 30 segundos). Eventualmente, o python enviará e extrairá informações de um banco de dados mySQL (mais tarde dev).
No momento, não consigo que as informações retornem com confiança. Não encontrei nada parecido com isso nas pesquisas e tudo o que tentei modificar não está funcionando. O mais próximo que eu tenho é esse (e na verdade não alterna entre enviar e receber):
Pitão
#!/usr/bin/python
import serial
import syslog
import time
#The following line is for serial over GPIO
port = '/dev/ttyS0'
ard = serial.Serial(port,9600,timeout=5)
i = 0
while (i < 4):
# Serial write section
setTempCar1 = 63
setTempCar2 = 37
ard.flush()
setTemp1 = str(setTempCar1)
setTemp2 = str(setTempCar2)
print ("Python value sent: ")
print (setTemp1)
ard.write(setTemp1)
time.sleep(4)
# Serial read section
msg = ard.readline()
print ("Message from arduino: ")
print (msg)
i = i + 1
else:
print "Exiting"
exit()
Arduino:
// Serial test script
int setPoint = 55;
String readString;
void setup()
{
Serial.begin(9600); // initialize serial communications at 9600 bps
}
void loop()
{
while(!Serial.available()) {}
// serial read section
while (Serial.available())
{
if (Serial.available() >0)
{
char c = Serial.read(); //gets one byte from serial buffer
readString += c; //makes the string readString
}
}
if (readString.length() >0)
{
Serial.print("Arduino received: ");
Serial.println(readString); //see what was received
}
delay(500);
// serial write section
char ard_sends = '1';
Serial.print("Arduino sends: ");
Serial.println(ard_sends);
Serial.print("\n");
Serial.flush();
}
Tudo o que acabo recebendo são os mesmos valores repetidos (não o que realmente foi enviado, não tenho certeza se é um problema de cadeia ou de bytes) e nada de volta ao script python. Qualquer ajuda ou idéias são muito apreciadas. Obrigado.
Edição: código modificado para o que estou executando no momento, conforme sugerido abaixo. O Arduino está recebendo uma comunicação fina e serial verificada pelo minicom. Mas o script python ainda imprime uma linha em branco após "Mensagem do arduino:".