Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
Rasenmaehroboter fuer schwierige und grosse Gaerten im Test

K
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 71: Zeile 71:
 
Hier könnt ihr das Programm herunterladen. Ihr müsst zwischen COM Port 1-15 wählen. Ich übernehme keinerlei Gewähr für Schäden oder Probleme die das Programm verursacht.
 
Hier könnt ihr das Programm herunterladen. Ihr müsst zwischen COM Port 1-15 wählen. Ich übernehme keinerlei Gewähr für Schäden oder Probleme die das Programm verursacht.
 
[http://www.villalachouette.de/william/krims/simpleRxDTxD.zip simpleRxDTxD.zip]
 
[http://www.villalachouette.de/william/krims/simpleRxDTxD.zip simpleRxDTxD.zip]
 +
 +
== Weitergehende Tipps ==
 +
* Viele Hinweise wie Daten per RS232 zwischen Controller und PC ausgetauscht werden findet ihr auch in dem Artikel [[Joystick_am_PC_zur_Kontrolle_eines_Roboters]]
 +
 +
== Autoren ==
 +
* [[Benutzer:Willa|Willa]]
 +
  
 
[[Kategorie:Software]]
 
[[Kategorie:Software]]
 
[[Kategorie:Quellcode Bascom]]
 
[[Kategorie:Quellcode Bascom]]
 
[[Kategorie:Grundlagen]]
 
[[Kategorie:Grundlagen]]

Aktuelle Version vom 4. März 2009, 15:39 Uhr

Eintollesprogramm.jpg

Einleitung

Dieser Artikel ist von einem Anfänger ohne jegliche Informatikkenntnisse für Anfänger ohne jegliche Informatikkenntnisse geschrieben.
Zum Kommunizieren mit dem Mikrocontroller kann man einerseits ein Terminalprogramm verwenden, andererseits kann man sich aber auch selber ein schickes Programm für die Kommunikation per RS232 schreiben. Und das ist auch sehr einfach:

Das OpenSource Programmierprogramm SharpDevelop kann man hier herunterladen: SharpDevelop OpenSource Webseite

Mit diesem Programm kann man u.a. in VB.NET programmieren, das ist eigentlich sehr ähnlich zu Basic in BASCOM.


Vorbereitungen in BASCOM

Folgender Code wird in einen Loop gesetzt:

Dim A as Byte

Do
A = Inkey()
If A > 0 Then
    Select Case A
      Case 49                               'Das ist der ASCII Code für Taste "1"
         Sound Portd.7 , 400 , 450
         Print "Taste 1 wurde gedrückt!"
      Case 50                               'Das ist der ASCII Code für Taste "2"
         Sound Portd.7 , 400 , 550
         Print "Taste 2 wurde gedrückt!"
      Case 51                               'Das ist der ASCII Code für Taste "3"
         Sound Portd.7 , 400 , 650
         Print "Taste 3 wurde gedrückt!"
      Case 114                              'Das ist der ASCII Code für Taste "r"
         Print "Reset..."
         Goto 0
   End Select
End If
Loop

Jetzt erkennt der Mikrocontroller vier verschiedene Tasten und kann darauf reagieren. Normalerweise würde man das Terminal aufmachen und dort dann die entsprechenden Tasten drücken, wir wollen das aber mit einem eigenen Windows Programm machen.


Das Programm in SharpDevelop

Als erstes klickt man auf Datei -> Neu -> Projektmappe -> VBNet -> Windowsanwendungen -> Windows-Anwendung. Unter dem Code-Fenster klickt man auf "Design". Links bei den Tools klickt man auf "Components" und zieht dann den Serialport in sein Programmfenster. Rechts öffnen sich dann die Eigenschaften des Serialport1, hier gibt man den COM-Port etc ein. Falls die ganzen Daten nicht zur Hand sind kann man einfach die Daten seines (funktionierenden) Terminalprogramms übernehmen. Ich musste nur den richtigen COM Port auswählen, der Rest stimmte. Jetzt klickt man nochmal auf "Quellcode" um den Code des Programms zu bearbeiten. Unter die Zeile Me.InitializeComponent() schreibt man einfach serialport1.open. Dadurch wird eine Verbindung zum serialport hergestellt sobald man sein eigenes Programm öffnet.

Im Design-Modus fügt man jetzt noch ein paar Buttons hinzu, damit das Programm überhaupt was machen kann (Tools -> Windows Forms -> Button). Wenn man auf den Button doppelt klickt kann man einstellen was passieren soll. Auf den Button legen wir die Aktion serialport1.Write (1). Wir erstellen noch drei weitere Buttons mit den Aktionen serialport1.Write (2) und serialport1.Write (3) und serialport1.Write ("r").

Jetzt können wir unseren Controller schon steuern, zum Ausführen des Programms auf den grünen Pfeil oben klicken. Im Moment werden Daten nur an den Controller gesendet und er kann darauf reagieren. Natürlich können wir auch Daten empfangen:

Wir fügen einen Timer ein (Tools -> Windows Forms -> Timer). Bei den Eigenschaften des Timers stellt man "Enabled" auf True, und den Intervall auf 250ms. Außerdem benötigen wir noch ein Textfeld (Tools -> Windows Forms -> TextBox). In dessen Eigenschaften stellen wir "Multiline" auf True und "ScrollBars" auf Both. Danach kann man das Textfeld auch in der Höhe noch etwas vergrößern. Ein Doppelklick auf den Timer bringt uns zu seinen Aktionen. Dort fügen wir folgenden Code ein:


if serialport1.BytesToRead > 0 then
   Do
      textbox1.AppendText (chr(SerialPort1.Readbyte))
      textbox1.ScrollToCaret
      If SerialPort1.BytesToRead = 0 Then
         Exit Do
      End If
   Loop
end if

Jetzt werden die Zeichen, die der Controller per RS232 an den Computer sendet in der TextBox angezeigt. Statt sich den Text einfach nur anzeigen zu lassen kann man natürlich auch sein Windows-Programm darauf reagieren lassen.

Wahrscheinlich ist das nicht die eleganteste Methode einen Controller von Windows aus zu steuern, aber es funktioniert sehr gut. Verbesserungsvorschläge sind natürlich erwünscht!

Beispielprogramm als Download

Hier könnt ihr das Programm herunterladen. Ihr müsst zwischen COM Port 1-15 wählen. Ich übernehme keinerlei Gewähr für Schäden oder Probleme die das Programm verursacht. simpleRxDTxD.zip

Weitergehende Tipps

Autoren


LiFePO4 Speicher Test