Hi Leute!
Ich möchte eine Serielle Schnittstelle zwischen Autoit und Arduino herstellen.
Autoit schickt ne Anrfage, Arduino nimmt die entgegen un schickt das Ergebnis (den Wert, was auch immer) zurück an Autoit.
Funktioniert soweit, aber nicht alle Rückgabewerte kommen im Autoit an. Irgendwo isn Schnitzer drin, in der Arduino-Serial funktionierts prima. Im Autoit muss ich teils 3 mal die Anfrage senden, bis sich der Wert aktualisiert.
Wer möchte kann ja mal einen Blick auf die Codeschnipsel werfen, komm grad nicht weiter
Arduino:
if (Serial.available() > 0) { // se il buffer seriale contiene dei dati
ricevuto = Serial.read(); // leggo il dato ricevuto
switch (ricevuto){ // interpreto il dato ricevuto e mi comporto di conseguenza
case '0':
digitalWrite(led1,LOW); // se ricevo 0 spengo il led1
Serial.print("1OFF");
break;
case '1':
digitalWrite(led1,HIGH); // se ricevo 1 accendo il led1
Serial.print("Hello World");
break;
AutoIt:
Global $Com_Port = 3
Global $BitPerSecond = 9600
Global $BitDati = 8
Global $Parity = 0
Global $BitStop = 1
Global $FlowControl = 2
Global $sErr = 'Errore apertura porta seriale'
_CommSetPort($Com_Port, $sErr , $BitPerSecond, $BitDati, $Parity, $BitStop, $FlowControl)
Global $Button3_premuto
Global $Text = ''
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
_CommSendString("1") ;accendo il led1
$Text = _CommGetString()
MsgBox("","", $Text)
Case $Button2
_CommSendString("0") ;spengo il led1
$Text = _CommGetString()
MsgBox("","", $Text)
Bitte nicht über die Kommentare wundern, das war ein Beispiel aus dem Netz, das ich gefunden habe....
Danke
Gruß
Chris
[Edit]
Okay, ich habs glaub ich schon.
Ich habe ein Sleep(500) eingebaut, und zwar hier
_CommSendString("0") ;spengo il led1
sleep(500)
$Text = _CommGetString()
Ich dachte, das hätte die Funktion _CommGetString schon irgendwie selbst mit drin