Forum: Compiler & IDEs Dattentabelle "einlesen"


von Jörg B. (joerg-sh)


Lesenswert?

Hallo,
ich habe eine Datei mit insgesamt 60 8 bit adressen und 8 bit Werten, 
durch "," getrennt, die ich gerne in meinen Programm verarbeiten möchte.

address,value
0x00,0xc3
0x01,0x01
0x03,0x00
0x08,0x00
0x0b,0x01
0x0e,0x00
0x0f,0x00
0x10,0x00
...


Wie kann ich das am einfachsten machen?


Grüße

Jörg

von Oliver S. (oliverso)


Lesenswert?

Was meinst du mit "verarbeiten" ?
Einlesen, ein Feld im Quellcode damit initialisieren, als Datenfeld dem 
Programm hinzulinken, ... ?


Oliver

von Jörg B. (joerg-sh)


Lesenswert?

Ich muss die Daten via SPI an die entsprechende Adresse schicken.

Die Daten an sich werden nicht verändert im Programm.

von Thomas B. (escamoteur)


Lesenswert?

Und wo sollen die Daten abgelegt werden? Was für ein System überhaupt?

von Oliver S. (oliverso)


Lesenswert?

Draus werden sollte also so etwas in der Art:
1
uint8_t feld[60][2] = {
2
{0x00,0xc3},
3
{0x01,0x01},
4
...
5
};

Ich würde da per Tabellenkalkulation die fehlenden Klammern und Kommas 
hinzufügen, aber einfach eintippen dürfte fast genauso schnell sein.

Oliver

von Jörg B. (joerg-sh)


Lesenswert?

Die Daten werden in Register eines AD Wandlers abgelegt.

System ist STM32F4, aber das dürfte für das reine Handling der Daten ja 
nicht entscheidend sein. Wie ich sende usw. ist mir ja bekannt.

Ich hätte nur gerne eine einfache Art die Daten, welche sich gerade in 
der Entwicklungsphase öfters ändern einfach einzulesen.

Für Olivers Lösung müsste ich mir dann ein Programm schreiben welches 
die Daten entsprechen verpackt.

von Hmm (Gast)


Lesenswert?

@ Oliver

>...aber einfach eintippen dürfte fast genauso schnell sein...
Ach was! Er hat eine Datei vorliegen bei der nur noch die Klammern und 
Kommata fehlen und da ist eintippen genauso schnell. Ist das Dein voller 
Ernst?

von Hmm (Gast)


Lesenswert?

>Für Olivers Lösung müsste ich mir dann ein Programm schreiben welches
die Daten entsprechen verpackt.

Nun, wer erst 14 Tage in dem Geschäft ist, dem ist natürlich nicht 
zuzumuten das er eben mal in Perl ein Drei-Zeilen-Tool selbst schreibt.
Frag einfach Deinen Fachvorgesetzten. Der wird das für Dich regeln.
Was machst Du sonst noch gerne? Döner verkaufen?

von Rolf Magnus (Gast)


Lesenswert?

Hat denn heutzutage keiner mehr einen Editor, bei dem man simples 
Ersetzen mit regulären Ausdrücken machen kann?

von Karl H. (kbuchegg)


Lesenswert?

Jörg B. schrieb:

> Für Olivers Lösung müsste ich mir dann ein Programm schreiben welches
> die Daten entsprechen verpackt.

Ja, das soll schon mal vorkommen, dass man sich als Programmierer 
schnell ein kleines Tool schreibt, welches Daten entsprechend verpackt.
Ob das jetzt ein Editormakro ist, ob das die Anweisungen an einen 
Stream-Editor ala sed sind, ob das eine der modernen Sprachkonzepte wie 
Perl darstellt, ob das ein Hilsmittel wie Excel ist, welches mit seinen 
Import/Export Möglichkeiten das Gewünschte zu leisten vermag, oder aber 
ob das ein C-Programm ist (weil man C beherrscht und da einfach am 
schnellsten zum Ziel kommt) ... all das hilft nicht darüber hinweg, dass 
man sich als Programmierer auch mal selbst ein Werkzeug baut und 
einsetzt.

Gewöhn dich daran. Wer den Job in der Programmierung darin versteht, 
dass man 'nur' Codezeile um Codezeile schreibt, der hat etwas 
Grundlegendes noch nicht verstanden bzw. gelernt.

von Hmm (Gast)


Lesenswert?

@ Rolf

>Hat denn heutzutage keiner mehr einen Editor, bei dem man simples
>Ersetzen mit regulären Ausdrücken machen kann?

Wer behauptet das? Und was sollte einem so ein Editor hier nutzen?
Hast Du das gelesen?

>Ich hätte nur gerne eine einfache Art die Daten, welche sich gerade in
der Entwicklungsphase öfters ändern einfach einzulesen.

Da ist so ein Perl- oder Awk-Zweizeiler sicher sinnvoller. Den kann man 
in ein Makefile eintragen.

von Hmm (Gast)


Lesenswert?

Ich meinte das viel netter. So wie Karl-Heinz es geschrieben hat.

von Jörg B. (joerg-sh)


Lesenswert?

Inzwischen hat mir ein befreundeter Programmierer eine wesentlich 
simplere Lösung gezeigt. Darum ging es mir.



unsigned char Data[] = { #include "data.txt" };

und ans ende der Datei noch ein ","



Ihr könnt euch dann weiter über das "wenn und aber" einer Frage im Forum 
zu stellen amüsieren.


Ach ja, Ihr könnt natürlich auch sinnlos weiter Programme zur 
Datenmanipulation schreiben...

schönen Tag euch.

von Karl H. (kbuchegg)


Lesenswert?

Jörg B. schrieb:
> Inzwischen hat mir ein befreundeter Programmierer eine wesentlich
> simplere Lösung gezeigt. Darum ging es mir.
>
>
>
> unsigned char Data[] = { #include "data.txt" };
>
> und ans ende der Datei noch ein ","

Aber nicht mit diesen Eingangsdaten

address,value
0x00,0xc3
0x01,0x01
0x03,0x00
0x08,0x00
0x0b,0x01
0x0e,0x00
0x0f,0x00
0x10,0x00


Dass die Daten über einen #include reingeholt werden war wohl jedem 
schon klar. Das ändert aber nichts daran, dass das Datenfile 
syntaxmässig so aussehen muss, dass es ein C Compiler als 
Initialisierung akzeptiert.

Und
1
unsigned char Data[] = {
2
0x00,0xc3
3
0x01,0x01
4
0x03,0x00
5
0x08,0x00
6
0x0b,0x01
7
0x0e,0x00
8
0x0f,0x00
9
0x10,0x00
10
};
ist nun mal keine gültige C-Syntax, weil die ',' am Zeilenende fehlen.
Egal ob das nun direkt im Code steht, oder ob der Datenteil in einer 
eigenen Datei steht und mittels #include eingebunden wird. Letzten Endes 
kriegt der Compiler genau das zuletzt gezeigte zu sehen und das mündet 
in einen Syntax Error. Also muss es einen Mechanismus geben, der die 
fehlenden ',' am Zeilende ergänzt. Und genau davon war die Rede. Du 
scheinst es nur noch nicht verstanden zu haben.

Wenn du natürlich im Eröffnungsposting gar nicht deine echten Daten 
gezeigt hast, sondern einen Tippfehler gemacht hast und in Wirklichkeit 
sind da ',' am Zeilende, dann musst DU dich an der Nase nehmen und dich 
fragen, warum du mit falschen Informationen korrekte Auskünfte 
erwartest.

von Hmm (Gast)


Lesenswert?

Ich nehme alles zurück, was ich über das "netter meinen" schrieb.

von Rolf Magnus (Gast)


Lesenswert?

Hmm schrieb:
> @ Rolf
>
>>Hat denn heutzutage keiner mehr einen Editor, bei dem man simples
>>Ersetzen mit regulären Ausdrücken machen kann?
>
> Wer behauptet das?

Ich. Anders kann ich mir die Vorschläge nicht erklären, um aus
1
0x00,0xc3
sowas wie
1
{0x00,0xc3},
zu machen. Hier wurde vorgeschlagen, das in ein 
Tabellenkalulationsprogramm zu laden, sich ein Programm dafür zu 
schreiben oder das zeilenweise von Hand zu machen. Ich würde in meinem 
Editor halt über den gewünschten Bereich einfach sowas wie ein s/^/{/ 
und ein s/$/},/ machen und fertig.

> Da ist so ein Perl- oder Awk-Zweizeiler sicher sinnvoller. Den kann man
> in ein Makefile eintragen.

Kann man natürlich auch machen.

von Hmm (Gast)


Lesenswert?

@ Rolf

>Anders kann ich mir die Vorschläge nicht erklären, ...

Dann hast Du weder den Post des TO noch meinen Beitrag zu Deinem 
Vorschlag gelesen.

Vielleicht klappts ja jetzt.

>Ich hätte nur gerne eine einfache Art die Daten, welche sich gerade in
>der Entwicklungsphase öfters ändern einfach einzulesen.

von Fabian O. (xfr)


Lesenswert?

Rolf Magnus schrieb:
> Ich würde in meinem
> Editor halt über den gewünschten Bereich einfach sowas wie ein s/^/{/
> und ein s/$/},/ machen und fertig.

Ein guter Texteditor hat auch einen Spaltenmodus, dann kann man es 
einfach für alle Zeilen gleichzeitig eintippen ... :-)

Aber offensichtlich war das Problem ja gar nicht die inkompatible 
Syntax, sondern nur die Datei in den Code mit einzubinden.

von Sam P. (Gast)


Lesenswert?

Da versuchen also erfahrene Leute, dem Fragesteller nicht nur sein 
Problem zu lösen, sondern ihm zu zeigen, wie er solche Probleme 
zukünftig selber lösen kann, und dann so eine Schlussbemerkung.

Da fragt man sich ja schon, warum man noch freundlich bleiben soll, bei 
so frechem Verhalten eines Fragestellers. Und das ist in letzter Zeit 
nicht der einzige.

Nebenbei ist die "Lösung" keine Lösung, die zum Problem passt -- was er 
beschrieben hat, würde mit der genannten Lösung nicht funktionieren. Der 
Fragesteller hat seine Fragestellung also schon falsch formuliert. Aber 
hauptsache man kann nochmal den Überlegenen raushängen lassen.

seufz.

von Rolf Magnus (Gast)


Lesenswert?

Hmm schrieb:
> @ Rolf
>
>>Anders kann ich mir die Vorschläge nicht erklären, ...
>
> Dann hast Du weder den Post des TO noch meinen Beitrag zu Deinem
> Vorschlag gelesen.

Nein. Du verstehst nur nicht, worauf ich hinaus will. Aber lass mal gut 
sein. Der TO hat's ja eh besser gewußt als wir alle zusammen.

von Hmm (Gast)


Lesenswert?

Und da beschweren sich hier immer wieder Leute, das Ihre Fragen unnötig 
zerpflückt und hinterfragt werden. Die Leute, die Ahnung haben müssen 
sich noch als Erbsenzähler und Dummköpfe bezeichnen lassen.

Dabei sind selbst Fragen die scheinbar völlig klar und eindeutig sind, 
dann doch unvollständig oder inkorrekt formuliert wie in diesem Fall.

Da verliert man echt jede Lust was zu helfen. Dieses ganze 
Wochenend-Konsum-CopyNPaste-Programmierer-Geschmeiss soll sich auf 
FlitterTwixer gegenseitig einen runterh...n bei der Präsentation der 
abgewetzten v- und c- Tasten.

von Hmm (Gast)


Lesenswert?

>Du verstehst nur nicht, worauf ich hinaus will.

Dann schreib doch klar und deutlich worauf Du hinauswillst. In wie fern 
ist der Einsatz eines Editors mit Regulären Ausdrücken für den 
wiederkehrenden Einsatz auf einer sich unregelmäig ändernden Datei 
hilfreich? Erkläre mir das mal.

Und inwiefern ist der Nutzen grösser als der eines perl-awk-sed-scripts?

Bei einem Editor muss ich jedesmal die Sequenz wieder manuell auslösen. 
Und ich muss immer wieder selbst kontrollieren ob die Änderung nötig 
ist.

Muss man sowas wirklich noch ausdrücklich schreiben? Meine Güte.

von Sam P. (Gast)


Lesenswert?

Hmm schrieb:
> bei der Präsentation der
> abgewetzten v- und c- Tasten.

Warum eigentlich ist der schöne CUA-Standard untergegangen? 
Standardkonform Copyt man mit Strg+Einfg und Pastet man mit ⇧+Einfg.

von Karl H. (kbuchegg)


Lesenswert?

Hmm schrieb:
>>Du verstehst nur nicht, worauf ich hinaus will.
>
> Dann schreib doch klar und deutlich worauf Du hinauswillst. In wie fern
> ist der Einsatz eines Editors mit Regulären Ausdrücken für den
> wiederkehrenden Einsatz auf einer sich unregelmäig ändernden Datei
> hilfreich? Erkläre mir das mal.


Beruhigt euch.
Der springende Punkt ist das Wörtchen 'öfter'.
Was ist 'öfter'? Wenn das alle 3 Tage ist (welches sich im Laufe der 
Entwicklungs-Zeit auf einmal pro Woche ausdehnt), dann kann ich damit 
leben, mir in einem Editor ein paar Makros abzuspeichern und die mal 
schnell über die Daten zu jagen, wenn ich neue kriege. Wenn es aber alle 
2 Stunden ist, dann will ich auch was dauerhafteres, welches in den 
make-Prozess eingebunden wird.
Und sooo viele wechselnde Datensätze hat man ja während der 
Entwicklungszeit dann normalerweise auch wieder nicht.

von Oliver S. (oliverso)


Lesenswert?

Sam P. schrieb:
> Warum eigentlich ist der schöne CUA-Standard untergegangen?
> Standardkonform Copyt man mit Strg+Einfg und Pastet man mit ⇧+Einfg.

Weil es schon immer so war, daß man Standards nicht schreibt, sondern 
einfach setzt.

Oliver

von Leser (Gast)


Lesenswert?

Hmm schrieb:
>>Für Olivers Lösung müsste ich mir dann ein Programm schreiben welches
> die Daten entsprechen verpackt.
>
> Nun, wer erst 14 Tage in dem Geschäft ist, dem ist natürlich nicht
> zuzumuten das er eben mal in Perl ein Drei-Zeilen-Tool selbst schreibt.
> Frag einfach Deinen Fachvorgesetzten. Der wird das für Dich regeln.
> Was machst Du sonst noch gerne? Döner verkaufen?

Müssen diese Beleidigungen hier sein?

Dies ist ein nutzloser mißbräuchlicher Beitrag, der niemandem nützt!

von Hmm (Gast)


Lesenswert?

@ Leser

Du kennst ja nichtmal den Unterschied zwischen Spott und Beleidigung.
Fasse das bitte nicht als Beleidigung auf, nur als Information.

Im übrigen dient der Spott zu nichts Weiterem als dem Zweck, den TO 
darauf aufmerksam zu machen, das er als Programmierer eben einfach auch 
mal Tools schreiben muss. Er hat also auch einen Nutzen.

von Rolf Magnus (Gast)


Lesenswert?

Hmm schrieb:
>>Du verstehst nur nicht, worauf ich hinaus will.
>
> Dann schreib doch klar und deutlich worauf Du hinauswillst. In wie fern
> ist der Einsatz eines Editors mit Regulären Ausdrücken für den
> wiederkehrenden Einsatz auf einer sich unregelmäig ändernden Datei
> hilfreich? Erkläre mir das mal.

Die Anwendung dauert ca. 3 Sekunden.

> Und inwiefern ist der Nutzen grösser als der eines perl-awk-sed-scripts?

Ich hab nirgends behauptet, daß er das sei. Im Gegenteil hab ich dir da 
zugestimmt:

Rolf Magnus schrieb:
>> Da ist so ein Perl- oder Awk-Zweizeiler sicher sinnvoller. Den kann man
>> in ein Makefile eintragen.
>
> Kann man natürlich auch machen.

Wobei das voraussetzt, daß derjenige nicht erst eine Skriptsprache 
lernen muß.
Ich könnte auch im Gegenzug fragen, inwiefern der Nutzen, das in ein 
Tabellenkalkulationsprogramm zu laden und dort anzupasssen, oder das 
manuelle Eintippen sämtlicher Klammern, größer ist. Das hattest zwar 
nicht du geschrieben, aber mein Posting hat sich selbstverständlich 
nicht speziell auf dich bezogen.
Und daß die Datei sich öfter mal ändert, hat der TO auch erst in seinem 
dritten Posting erwähnt.

> Bei einem Editor muss ich jedesmal die Sequenz wieder manuell auslösen.
> Und ich muss immer wieder selbst kontrollieren ob die Änderung nötig
> ist.

Ich gehe einfach mal davon aus, daß nicht irgendwer immer heimlich im 
Hintergrund die Datei austauscht, sondern daß das derjenige macht, der 
sie auch verarbeitet und er das daher nicht kontrollieren muß, sondern 
schon weiß.

von Personalbüro (Gast)


Lesenswert?

Hmm schrieb:
> Im übrigen dient der Spott zu nichts Weiterem als dem Zweck, den TO
> darauf aufmerksam zu machen,

Spott dient in allererster Linie dazu, sich selbst zu erhöhen und besser 
zu fühlen. Warum? Nicht weil es einfach nur Spaß macht, sondern weil man 
es nötig hat, zu kompensieren.

So wird aus der vermeintlichen Schwäche des anderen die eigene 
Schwachheit und Unzulänglichkeit offenbar, über die sich unbeteiligte 
Dritte auch trefflich amüsieren.

von Jörg B. (joerg-sh)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Jörg B. schrieb:
>> Inzwischen hat mir ein befreundeter Programmierer eine wesentlich
>> simplere Lösung gezeigt. Darum ging es mir.
>>
>>
>>
>> unsigned char Data[] = { #include "data.txt" };
>>
>> und ans ende der Datei noch ein ","
>
> Aber nicht mit diesen Eingangsdaten
>
> address,value
> 0x00,0xc3
> 0x01,0x01
> 0x03,0x00
> 0x08,0x00
> 0x0b,0x01
> 0x0e,0x00
> 0x0f,0x00
> 0x10,0x00
>
>
> Dass die Daten über einen #include reingeholt werden war wohl jedem
> schon klar. Das ändert aber nichts daran, dass das Datenfile
> syntaxmässig so aussehen muss, dass es ein C Compiler als
> Initialisierung akzeptiert.
>
> Und
>
1
> unsigned char Data[] = {
2
> 0x00,0xc3
3
> 0x01,0x01
4
> 0x03,0x00
5
> 0x08,0x00
6
> 0x0b,0x01
7
> 0x0e,0x00
8
> 0x0f,0x00
9
> 0x10,0x00
10
> };
11
>
> ist nun mal keine gültige C-Syntax, weil die ',' am Zeilenende fehlen.
> Egal ob das nun direkt im Code steht, oder ob der Datenteil in einer
> eigenen Datei steht und mittels #include eingebunden wird. Letzten Endes
> kriegt der Compiler genau das zuletzt gezeigte zu sehen und das mündet
> in einen Syntax Error. Also muss es einen Mechanismus geben, der die
> fehlenden ',' am Zeilende ergänzt. Und genau davon war die Rede. Du
> scheinst es nur noch nicht verstanden zu haben.
>
> Wenn du natürlich im Eröffnungsposting gar nicht deine echten Daten
> gezeigt hast, sondern einen Tippfehler gemacht hast und in Wirklichkeit
> sind da ',' am Zeilende, dann musst DU dich an der Nase nehmen und dich
> fragen, warum du mit falschen Informationen korrekte Auskünfte
> erwartest.

Karl Heinz, du hast natürlich recht, es fehlt das "," am Ende der Zeile.

Ich habe mir inzwischen ein kurzes Programm geschrieben welches die 
Datei für mich anpasst.

Das mit dem include war mir aber noch nicht klar, sonst hätte ich auch 
nicht nach einer simplen Lösung gefragt.

Ich werde es mir in Zukunft verkneifen hier noch einmal etwas zu fragen.

Hier wird Grundsätzlich aus jeder Frage eine Grundsatzdiskussion gemacht 
und das ist einfach nur nervig.

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.