Go Down

Topic: Arduino - Autoit - Serial-Problem (Read 714 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy