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
Was meinst du mit "verarbeiten" ? Einlesen, ein Feld im Quellcode damit initialisieren, als Datenfeld dem Programm hinzulinken, ... ? Oliver
Ich muss die Daten via SPI an die entsprechende Adresse schicken. Die Daten an sich werden nicht verändert im Programm.
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
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.
@ 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?
>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?
Hat denn heutzutage keiner mehr einen Editor, bei dem man simples Ersetzen mit regulären Ausdrücken machen kann?
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.
@ 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.
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.
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.
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.
@ 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.
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.
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.
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.
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.
>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.
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.
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.
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
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!
@ 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.
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ß.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.