Forum: PC-Programmierung Programmiersprache PC <-> Mikrocontroller


von André W. (sefiroth)


Lesenswert?

Hallo,

ich programmiere schon seid einiger Zeit (Atmel) Mikrocontroller, aber 
so langsam stört es mich immer nur ein kleines LCD, LEDs und Taster zur 
Steuerung zu haben...

Daher habe ich mich entschlossen eine weitere Programmiersprache zu 
lernen, um Programme am PC zu schreiben, um ein frei gestaltbares und 
optisch hochwertiges Interface für meine Schaltungen zu schaffen.

Allerdings ist jetzt die Frage welche Sprache sich dazu gut eignet und 
wie die Kommunikation stattfinden soll.

Als Hardwareschnittstelle fände ich USB oder BlueTooth gut, da nahezu 
jeder PC diese Schnittstellen hat. TCP/IP könnte ich mit auch 
vorstellen, aber das wird wahrscheinlich zu hohe Datenraten für nen 
Atmel AVR mit seinen 16 MHz haben...

Viel wichtiger ist aber die Entwicklungsumgebung, die eine derartige 
Kommunikation ermöglicht. Es fällt mir nicht schwer eine neue 
Programmiersprache zu lernen, aber bevor ich mich für eine entscheide 
würde ich sehr gerne Euren Rat hören. Habt Ihr schon Erfahrung mit 
derartiger Programmierung und könnt eine Sprache empfehlen?

Um es gleich vorweg zu sagen: Ich möchte keine Webserver-Applikation, da 
die Programmoberfläche absolut frei gestaltbar ist und nicht auf die 
HTML-Syntax eingeschränkt ist (also keine Links und Seitenladezeiten 
ect.). Mir schweben da Flash, VisualC++ oder ähnliches vor.

Ich möchte so etwas zwar nicht bauen, aber ich bringe es einfach mal als 
kleines Beispiel, was ich in etwa machen möchte:
Eine kleine Schaltung steht bei mir im Garten - sie ist mit einem Atmel 
AVR, einem Temperatursensor und einem geeigneten Transceiver 
ausgestattet. Sie misst periodisch die Temperatur und sendet sie via 
BlueTooth an den PC. (Die Box kann auch auf der Fensterbank stehen und 
per USB Daten angebunden sein). Am PC habe ich dann ein Programm, dass 
die Daten loggt und mir schöne Verläufe zeichnet. Zudem kann ich dann 
über den PC Parameter (z.B. die Messabstände) ändern.

Ok ok, das Beispiel ist jetzt nicht grad das Pralleste, aber die 
Möglichkeiten die sich bieten sind nahezu endlos.

Ich freue mich auf eure Ratschläge - bisher wurde mir hier immer super 
geholfen ;-)

Gruß, Sefi
____________________
http://www.Dark-Sun.de

von Oliver (Gast)


Lesenswert?

"Einfach", vollständig, und kostenlos ist Java. Das "look and feel" der 
Programme ist halt nicht 100% Windows.

100% Windows gibts mit Microsoft-Produkten (Visual C++, C#, Basic, was 
auch immer), ebenso mit Delphi. Das ist dann Geschmackssache, und 
natürlich die des Geldbeutels. Visual C# gibts komplett kostenlos, C++ 
auch, nur leider ohne MFC.

Die Programmiersprache ist dabei übrigends fast nebensächlich, der 
Hauptaufwand liegt in der Einarbeitung in das Windows-API.

Kommunikation über was anderes als Ethernet bedarf der passenden Treiber 
und Entwicklungswerkzeuge.

Oliver

von André W. (sefiroth)


Lesenswert?

Oliver wrote:
> Die Programmiersprache ist dabei übrigends fast nebensächlich, der
> Hauptaufwand liegt in der Einarbeitung in das Windows-API.

Okay, das ist doch schonmal eine hilfreiche Aussage. Dann kann ich mich 
in Richtung C (welchesauchimmer) weiterorientieren, da ich da den 
geringsten Umlernaufwand habe.

Es wäre interessant zu wissen, ob hier wer im Forum auf diese Art und 
Weise programmiert (also Programmgesteuerte PC/µC Kommunikation), um ein 
paar Tipps für den Einstieg zu ergattern.

von Thomas (Gast)


Lesenswert?

Naja, ganz so nebensächlich ist die Wahl der Programmiersprache dann 
doch nicht. Etwas objektorientiertes sollte es schon sein für GUIs. Wenn 
du nur in der Windows-Welt bleiben willst ist zur Zeit C# sicherlich der 
beste Tipp um schnell und komfortabel Ergebnisse zu erzielen. Die nötige 
Entwicklungsumgebung (Visual Studio 2005 Express) kannst du dir für lau 
bei MS runterladen.

Wenn du auch für Linux programmierst solltest du dir mal Qt oder 
wxWidgets anschauen. Da ist der Einstieg allerdings nicht ganz so 
komfortabel, weil man sich da die nötigen Werkzeuge erst noch selbst 
zusammensuchen muss und die Umgebung dann trotzdem nicht so schön 
integriert ist. Beide lassen sich über mehrere Sprachen anwenden, selbst 
Scriptsprachen wie Python sind möglich. Der Fokus liegt allerdings klar 
bei C++.

von André W. (sefiroth)


Lesenswert?

Als Betriebssystem reicht mir Windows alle mal hin. Genaugenommen hab 
ich noch nie was mit Linux zu tun gehabt und das wird sich wohl auch in 
nächster Zeit nicht ändern ;-)

Wenn die Entwicklungsumgebung open-source oder zumindest gratis ist, ist 
das natürlich ein dicker Bonus.

Mal angenommen ich würde in C# programmieren, eine Schaltung mit 
USB-Controller haben und einen open-source USB-Treiber installieren - 
gäbe es dann noch weitere Punkte zu berücksichtigen? Oder hätte ich dann 
prinzipiell alles um im C#-Programm die Schaltung anzusprechen? Ok, da 
wird sicher noch einiges an Programmierung drinstecken, aber ich meine 
jetzt nur grob von Prinzip her.

Die Windows API ist mit noch ein Mysterium - warum lassen die mich auch 
nicht einfach direkt an die USB-Schnittstelle ran? ;-) Wenn man sich 
erstmal an die schön klare Welt der Mikrocontroller gewöhnt hat kommt 
einem Windows zu unglaublich unübersichtlich vor - ein Wunder dass da 
überhaupt Daten rauskommen g

von Karl H. (kbuchegg)


Lesenswert?

André Wippich wrote:

> Mal angenommen ich würde in C# programmieren, eine Schaltung mit
> USB-Controller haben und einen open-source USB-Treiber installieren -
> gäbe es dann noch weitere Punkte zu berücksichtigen?

Ich würde USB mit einem FT232 machen. Vom Chiphersteller holst
du dir den Windows Treiber dazu und dann präsentiert sich
die USB Strecke zum µC wie eine ganz normale serielle Schnittstelle
für dein Programm.

> Oder hätte ich dann
> prinzipiell alles um im C#-Programm die Schaltung anzusprechen?
Ja. Das reicht dann schon.
Serielle auf und Kommandos zum µC schicken.

> Die Windows API ist mit noch ein Mysterium - warum lassen die mich auch
> nicht einfach direkt an die USB-Schnittstelle ran? ;-)

Das musst du mit obiger Lösung auch gar nicht.
Für dich als Programmierer existiert nur die COM Schnittstelle.
Der Treiber setzt das dann nach USB um

Für C# würde ich dir gleich mal empfehlen dir im nächsten
Buchladen ein Einsteigerbuch zu besorgen. Es gibt viel zu
lernen und ein Buch bringt dir das notwendige Wissen in
gordneter Weise systematisch bei. Was man von vielen Tutorien
nicht sagen kann.

von André W. (sefiroth)


Lesenswert?

Cool, dann werde ich das in der Art machen. Das klingt ja echt gar nicht 
so wild. Natürlich fange ich mit gaaanz kleinen Schritten an und wenn 
ich irgendwann eine LED blinken lassen kann bin ich schon überglücklich 
^_^

Werde dann demnächst mal Amazon nach geeigneter Lektüre durchstöbern.

Hmm, ich sehe grad, dass ich schon drei C# Bücher im Regal habe - lol. 
Die muss ich letztes Jahr mal bei Terrashop bestellt haben g Mal 
schauen ob die was taugen...

von Thomas (Gast)


Lesenswert?

Bei MS gibts auch Video-Tutorials, die sind ziemlich gut.

von Christian U. (z0m3ie)


Lesenswert?

Ich würd Lazarus empfehlen das ist ein freier Delphi Clon mit dem man 
auch Programme für MacOS und Linux erstellen kann. Besser gesagt die 
erstellten Programme sind solang man nicht irgend eine 
Plattformunabhängige Spielerei benutzt sogar meisst ohne Änderungen auf 
den jewails anderen Systemen lauffähig.
Pascal ist zudem eine sehr klare und übersichtliche Sprache.
Die IDE ist wie Delphi ein RAD Tool man kann also Oberflächen schön 
zusammenklicken.

Für die serielle Schnittstelle gibts mehrere Plattormunabhängige Klassen 
so das man sich dort auch nicht mit den Betriebsysteminternas 
herumplagen muss.

Bei USB nehm ich libusb das ist ebenfalls Plattformunabhängig gutes 
Beispiel ist mein AVR-ISP Tool das über USB mit meinen Programmern 
kommunizieren kann.  Wenn du da mal reinschnuppern willst der komplette 
Quellcode liegt mit auf meiner Seite www.ullihome.de

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.