#c Zeiger auf Adresse / array-list

OP #7825541
Lesenswert?

hallo,

Ich möchte in c# verschiedene Fonts in eine Bitmap zeichnen:

1
#if cortex_m3x==0
2
ex uint8_t const f8x12[] PROGMEM = {
3
#else
4
ex uint8_t const f8x12[]  = {
5
#endif
6
0,128,8,12,0,0,32,
7
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" ",0+/
8
0x00,0x18,0x3C,0x3C,0x3C,0x18,0x18,0x00,0x18,0x18,0x00,0x00,//"!",1+/
9
0x00,0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//""",2+/
10
0x00,0x36,0x36,0x7F,0x36,0x36,0x36,0x7F,0x36,0x36,0x00,0x00,//"",3+/
11
//0x18,0x18,0x3C,0x66,0x60,0x30,0x18,0x0C,0x06,0x66,0x3C,0x18,//"$",4+/
12
0x01,0x03,0x07,0x1f,0x7f,0xff,0xff,0x7f,0x1f,0x07,0x03,0x01,//"",95+/
13
....

Der Header enthält Angaben zu Größe und Ausrichtung, verschiedene Fonts werden durch Zeiger auf die Adresse ausgewählt, läuft auf ARM und AVR.

Wie überträgt man das auf c#?

Wie bekomme ich die verschiedene Fonts z.B. in eine Liste oder wie geht ein Zeiger auf den jeweiligen font?

danke für Unterstützung

Gast #7825542
Lesenswert?

Karl K. schrieb:

Wie überträgt man das auf c#?

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.

#7825571
Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:

Jonas B. schrieb:

du lebst halt hiterm Mond.

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"

#7825623
Lesenswert?

Rolf M. schrieb:

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?

#7825632
Lesenswert?

Rolf schrieb:

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.

https://visualgdb.com/?features=embedded

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.

OP #7825792
Lesenswert?

Harald K. schrieb:

Toll. Und was soll das bringen?

Weiß ich noch nicht.

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.

Angehängte Dateien:
(Firma: 1984now) #7825805
Lesenswert?

Rolf M. schrieb:

Er hat die dubiose Idee, seine AVR-Programme erst in C# zu schreiben und auf dem PC zu testen

Die Idee ist garnicht so dumm, wie sie zunächst scheinen mag. Aber wohl eher nur für ganz bestimmte Arten von Programmen wirklich vorteilhaft.

Keinesfalls für das übliche Geklingel mit Portbits oder die Ansprache von Peripherie über die üblichen Schnittstellen.

Aber Routinen zur Signalverarbeitung kann man auf diese Weise schon sehr gut (nämlich zeitsparend und trotzdem umfassend) testen.

Die ganze Signalverarbeitung für das hier z.B.: Beitrag "Audio Spektrum Analyzer mit ATtiny85"

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.

OP #7826117
Lesenswert?

Gunnar F. schrieb:

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.

Gast #7827749
Lesenswert?

Harald K. schrieb:

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.

(Firma: 1984now) #7827958
Lesenswert?

Franko S. schrieb:

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.

(Firma: 1984now) #7827985
Lesenswert?

Harald K. schrieb:

Ob S. schrieb:

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...

#7828137
Lesenswert?

Ob S. schrieb:

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.

(Firma: 1984now) #7829270
Lesenswert?

Harald K. schrieb:

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren