Go Down

Topic: Arduino - Autoit - Serial-Problem (Read 637 times) previous topic - next topic

sorath

Feb 01, 2013, 03:07 am Last Edit: Feb 01, 2013, 03:16 am by sorath Reason: 1
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:
Code: [Select]

  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:
Code: [Select]
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 = ''


Code: [Select]
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
Code: [Select]
_CommSendString("0") ;spengo il led1
    sleep(500)
$Text = _CommGetString()


Ich dachte, das hätte die Funktion _CommGetString schon irgendwie selbst mit drin :)

Go Up