Python zu Arduino seriell lesen und schreiben

Ich versuche, Informationen zwischen Python-Code und Arduino-Code "ping pong" hin und her zu tauschen. Ich möchte regelmäßig zwei Sollwerte an den Arduino-Code senden (zum Beispiel in der Minute), sie auf Arduino lesen und Variablen aktualisieren und dann regelmäßig Statusinformationen von Arduino zurück an Python senden (zum Beispiel auf: 30 Sekunden). Schließlich wird Python Informationen von einer mySQL-Datenbank (später dev) senden und abrufen.

Im Moment kann ich nicht die Information bekommen, zuverlässig hin und her zu hüpfen. Ich habe in den Suchanfragen nichts Vergleichbares gefunden und alles, was ich zu ändern versucht habe, funktioniert nicht. Das nächste, was ich habe, ist folgendes (und es wechselt tatsächlich nicht zwischen Senden und Empfangen hin und her):

Python

#!/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();
}

Alles, was ich bekomme, sind die gleichen Werte, die wiederholt werden (nicht das, was tatsächlich gesendet wurde, nicht sicher, ob es sich um ein String- oder Byte-Problem handelt), und nichts zurück zum Python-Skript. Jede Hilfe oder Ideen werden sehr geschätzt. Vielen Dank.

BEARBEITEN: Der Code wurde wie unten vorgeschlagen geändert. Arduino empfängt eine einwandfreie und serielle Kommunikation, die von minicom überprüft wurde. Aber Python-Skript druckt immer noch eine leere Zeile nach "Nachricht von Arduino:".

Antworten auf die Frage(2)

Ihre Antwort auf die Frage