Gegenfrage: Warum willst du das tun? Ich kennen keinen Mikrocontroller, den in C# programmierbar ist, und das Display wirst du wohl kaum an einen PC anschließen wollen, oder?
Wenn du die Programmierung vorher auf dem PC üben willst, dann mache das sinnvollerweise in der gleichen Programmiersprache, wie auf dem Mikrocontroller. Die QT Creator IDE macht es einem besonders einfach.
Kläre mich auf! Welche Mikrocontroller programmierst du in C#?
Er hat die dubiose Idee, seine AVR-Programme erst in C# zu schreiben und auf dem PC zu testen und dann irgendwie mit einer Kombination aus Makros und einem selbstgebastelten Konverter C draus zu machen, um sie für den AVR zu bauen. Siehe Beitrag "gcc auf dem pc ausführen"
Er hat die dubiose Idee, seine AVR-Programme erst in C# zu schreiben und
auf dem PC zu testen
Weil er wohl eine IDE für C# hat, mit der er vertraut ist und in der man komfortabel debuggen kann, z. B. Visual Studio. Aber kann man in dieser IDE auch hardwarebezogene Programme debuggen oder auch nur compilieren? Mit welcher Laufzeitumgebung?
Weil er wohl eine IDE für C# hat, mit der er vertraut ist und in der man
komfortabel debuggen kann, z. B. Visual Studio.
In der kann man mit exakt demselben Komfort auch mit C arbeiten.
Aber kann man in dieser IDE auch hardwarebezogene Programme
debuggen oder auch nur compilieren?
Mit welcher Laufzeitumgebung?
Ja, für Visual Studio (/nicht/ "Visual Studio Code", das ist was komplett anderes) gibt es mit VisualGDB eine Erweiterung, mit der genau das geht, für diverse Zielsysteme.
Visual Studio ist übrigens auch die Grundlage für "Atmel Studio" bzw. "Microchip Studio", das aber hat dann in der Handhabung schon etliche Unterschiede.
"Visual Studio Code" hingegen ist eine sehr universell an alles mögliche anpassbare IDE, quasi der Nachfolger des Java-Molochs "Eclipse", und dafür gibt es Erweiterungen wie z.B. PlatformIO ...
Es gibt wirklich keinen Grund, der dafür spricht, sich mit C# die Finger zu brechen, wenn man doch eigentlich C programmieren will.
Toll. Und was soll das bringen? Das hat mit C exakt nichts mehr zu tun. Und wenn Du das ganze auf einem µC laufen lassen willst, bringt auch die formelle Ähnlichkeit zu C++ nichts, denn auf einem µC will man kein /new/ verwenden.
Ich kann Teile meines avr-Programms auf dem PC testen und habe dabei den gleichen Zugriff auf Modbus wie mit dem avr.
Für die Ausgabe wird ein 240x320 lcd simuliert, so dass der output wie auf dem avr ist. Die getesteten Programmteile laufen auf dem avr genau so wie auf dem PC. Mehr wollte ich eigentlich nicht.
ist zunächst in VB.net entstanden. Natürlich gleich mit dem Ziel, daraus am Ende AVR8-Code machen zu wollen. Deswegen sehen diese Routinen kaum wie ein übliches VB-Programm aus, sind aber natürlich trotzdem gültiges VB.
Das ginge in C# ganz genau so, ist ja eh' (abgesehen von der unterschiedlichen Syntax) dieselbe Soße.
Das ganze wurde dann erst mal auf Funktion und Filterstabilität getestet, dann in AVR8-Asm portiert und dann in mehreren Iteration immer wieder geändert und die Änderungen erneut portiert. Bis halt auf dem AVR8 alles gepasst hat, Funktion, Stabilität und auch die Perfomance.
und dann irgendwie mit einer Kombination aus Makros
und einem selbstgebastelten Konverter C draus zu machen
Naja, so weit bin ich damals nicht gegangen. Das habe ich schön per klassischer Handarbeit erledigt. War natürlich auch nicht schwer, weil der Code ja von vornherein mit diesem Ziel geschrieben wurde.
Aber möglich wäre auch sowas natürlich theoretisch schon. Ich war nur viel zu faul dazu, das so weit zu treiben.
Rolf M. schrieb im Beitrag #7825571:
Für Embedded-Programmierung in C verwende ich gelegentlich Code::Blocks
um einzelne Module zu testen, aber dann auch in C.
Hab ich probiert - aber mit der Grafik ist das bei cb nicht so einfach.
Zurück zu c#: der lcd-code ist ja relativ lang. ich würde den gerne in eine separate Datei auslagern. Gibt es in c# sowas wie #include?
Ich habe versucht eine classe anzulegen - aber ich bekomme die Variablen in Form1 nicht global.
Was magst Du daran für "Blösdinn" halten? Beides sind leistungsfähige IDEs, die an beliebie Programmiersprachen, Toolchains und was auch immer angepasst werden können.
Die IDE heisst Visual Studio, auf der auch das hier diskutierte Atmel/Microchip Studio basiert. Die hat mit Visual Studio Code bis auf ein paar Namensbestandteile nichts zu tun.
Wie Microsoft zum Visual Studio Code schreibt"Your code editor."
Was magst Du daran für "Blösdinn" halten? Beides sind leistungsfähige
IDEs, die an beliebie Programmiersprachen, Toolchains und was auch immer
angepasst werden können.
Code ist keine IDE, das ist ein besserer Editor. Ja das Pluginchaos ist in etwa ebenbürtig.
Code ist keine IDE, das ist ein besserer Editor. Ja das Pluginchaos ist
in etwa ebenbürtig.
So sieht das aus. Leider ist offensichtlich das Konzept von Plugins alleine nicht dazu geeignet, ein konsistentes, gut benutzbares GUI hervorzubringen.
Es braucht etwas mehr Zwang zu Konformität. Der Ansatz von MS mit der "isolated shell" des richtigen VisualStudio hat das möglich gemacht. Aber leider: inzwischen hat weder MS noch irgendwer anders ein Interesse daran. Das hat wohl allein MS vergeigt. Die wurden zu gierig, so dass es für potentielle User zu teuer wurde. Und für MS selber wurde der Pflegeaufwand der historisch verkauften Lizenzen zu teuer.
Mit VS-Code gibt's aus MS-Sicht nun kein Problem mehr. Sie müssen für garnix Support leisten, kassieren aber Daten ohne Ende, die sie direkt oder indirekt zu Geld machen können.
Sie müssen für
garnix Support leisten, kassieren aber Daten ohne Ende, die sie direkt
oder indirekt zu Geld machen können.
Wie machen die das?
Indem sie an allen möglichen und unmöglichen Stellen nach Hause telefonieren. Mach' einfach mal ein tcpdump. Wozu muss eine blöder Editor ständig im Internet rumwurschteln? Hast du dich das mal gefragt?
Selbst wenn an vielen Stellen kaum Payload übertragen wird: die Tatsache des Datentransfers alleine sind schon verkaufbare Daten. Vor allem, wenn sie mit Daten aus anderen Quellen zusammengeführt werden können...
Genau deshalb gibt's ja mit VSCodium eine Variante, die um die
nach-hause-telefonier-Funktion bereinigt wurde. Siehe
https://vscodium.com/
Tja, das Problem dabei ist nur: die Plugins, die aus dem Editor erst eine (halbwegs brauchbare) IDE machen, sind mindestens genauso gesprächig wie der Editor selber...
Indem sie an allen möglichen und unmöglichen Stellen nach Hause
telefonieren. Mach' einfach mal ein tcpdump. Wozu muss eine blöder
Editor ständig im Internet rumwurschteln? Hast du dich das mal gefragt?
Du weißt, daß man die "telemetrie" abschalten kann?
Du weißt, daß man den Kram auch a) selbst aus den Sourcen übersetzen oder b) aus anderen Quellen (vscodium) beziehen kann, der dann keine Telemetrie enthält?
Aber vermutlich verbringst Du zu viel Deiner Lebenszeit damit, C zu hassen.
Du weißt, daß man den Kram auch a) selbst aus den Sourcen übersetzen
oder b) aus anderen Quellen (vscodium) beziehen kann, der dann keine
Telemetrie enthält?
Du hast das eigentliche Problem nicht erkannt. Die Plugins, deren Verbreitungswege, deren eigene Geschwätzigkeit.
Allerdings, wie rmagnus vollkommen zutreffend sagte: das ist ein generelles Problem heutiger Software. Er meinte zwar auch, dass es besonders kommerzielle Software beträfe, aber meiner Meinung nach ist es so: OSS schnüffelt oft ganz genauso. Wozu auch immer...
Gerade bei VSCode-Plugins kann man sich jedenfalls jederzeit selber und live davon überzeugen, dass geschnüffelt wird.
Aber vermutlich verbringst Du zu viel Deiner Lebenszeit damit, C zu
hassen.
Nö, das kann ich locker nebenbei. Das kostet null Zeit. Ist nämlich kein Prozess, sondern ein Status. Ist übrigens auch völlig unabhängig von der IDE, in der ich den C-Dreck lesen oder schreiben muss. Hat also nicht mit VSCode zu tun. Zumal das selber ja nicht mal in C geschrieben ist, sondern in JS. Auch nicht wirklich besser, nur auf andere Art Scheiße. Aber ein paar Gemeinsamkeiten gibt es schon: fehlendes striktes Typsystem z.B.