hi
manchmal sieht man vor lauter wald den baum nicht mehr,
das passiert die tage eben bei mir daher ganz von unten herauf gefragt:
ich habe:
ein gesamtpaket 50 byte
eine paketmaxsize von 16 byte
einen tag ( 0 oder 1 ) der mir sagt, ob ich ausfüllen soll oder nicht
jetzt will ich paketweise printen
und zum schluss das paket mit den 2 byte
wenn der tag 1 ist, dann wie es ist, also nur 2 byte
wenn der tah 0 ist, dann mit 14 \0 ausfüllen.
es würde mir helfen den ansatz in pasacl / delphi zu haben
wer es mir per c code erklären kann, wäre auch super.
im moment habe ich eine festgefahrene schleife im kopf,
ich bin seit tagen an der schleife dran, bekomm die aber nicht hin
ein ansatz wie dieser ist ein freitagslacher:
unsigned integer gesamtpaket,paketmaxsize=16,tag=1,i;
for (i=0; i< paketmaxsize ; i++ ) {
sprint("%c ", gesamtpaket[i]); // ok bis hier hin die ersten 16
bytes
}
wenn ich jetzt anfange die bytes abzuzählen und dann entsprechende
weitere schleifen einbaue, dann hab ich bei einem 10000er gesamtpaket
ellenlangen code, wie schreibe ich da eine weitere bedinung ein? eine
weitere variable dir mir die (vollen) durchläufe sagt, und den letzten
dann mit einer
else
und die restlichen 2 bytes je nach tag dann mit oder ohne nullen
aufgefüllt printed..
ist das wochenende nóch zu retten?
:)
Musterlösungsservice Nord schrieb:> http://ideone.com/JkF6Vb> Falls das eine Hausaufgabe war, bitte 5€ an eine wohltätige Einrichtung> spenden.
oh danke danke für deine mühen!!
, das hab ich jetzt zu spät gesehen.
nein das war keine hausaufgabe ;-)
ich drück mich schon lange vor c und solchen übungen.
aber habs letztes jahr mit dem esp dann doch anfangen müssen
weil ich den so ins herz geschlossen habe ;-)
manche sachen fallen leichter, wenn ich einen ansatz habe.
jetzt muss ich nur noch den tag einbringen.
danke dir!!!
;-)
Wenn Tag = 1, ist es draussen hell
und bei Tag = 0 nennt man es nennt Nacht ;)
Wenn du das Problem mal richtig formulieren kannst, dann hast du auch
die Lösung.
werde aber trotzdem 5eur jemanden zukommen lassen.
so fair bin ich dann schon. danke!
der ansatz mit dem ausfüllen ( tag ) gefällt mir.
danke dir nochmals für deine mühen!
;-)
Hans-Georg Lehnard schrieb:> und bei Tag = 0 nennt man es nennt Nacht ;)
das ist aber doppelt formuliert ;-)
>> Wenn du das Problem mal richtig formulieren kannst, dann hast du auch> die Lösung.
du hast das gleiche problem wie ich ? ;-)
dann bin ich ja nicht allein ;-)
ich weiss, manchmal liegt in der formulierung schon der lösungsansatz,
es ist nicht leicht, zu formulieren, was man eigentlich will, wenn nicht
weiss, was man will bzw wohin man eigentlich will..siehst, gehts schon
wieder los ;-)
ich schleich mich .. ;-)
danke!!
Im folgenden mal der Entwicklungsprozess mittels
printf-test-driven-development. Immer schrittweise in Test und Lösung
aufgeteilt.
##############################################################
Test 1
Bottom up. Wir fangen mit den Einzelpaketen an.
Aufgabe: ganz simpel, erstmal nur ein Subpaket einer gewissen Länge
ausgeben.
1
#include<stdio.h>
2
#include<inttypes.h>
3
4
// als C-erfahrener wissen wir, dass solche Daten üblicherweise als Adresse + Laenge uebergeben werden.
Jetzt sollte man sich Gedanken machen, was passiert, wenn jemand
print_subpacket() mit falschen Werten aufruft und packet_length größer
als nominal_length ist. Bei printf ist das egal; wenn man in einen
anderen buffer o.ä. schreibt, der nur nominal_length groß ist, oder die
bytes in ein externes Schieberegister schiebt, evtl. etwas schlimmes.
Ich ignoriere das Problem erstmal.
print_subpacket() ist jetzt fertig, getestet und wird nicht mehr
angefasst, solange keine anderen Anforderungen dazukommen.
// endlosschleife, behoben durch erste abfrage in print_packet()
59
60
printf("mal sehen\n");
61
print_packet(bigpacket,0,42);
62
63
return0;
64
}
Der erste Ansatz zum zerlegen sieht schonmal gut aus.
##########################################################
Lösung 3
Weiter geht's. Nächster Schritt: Die Länge der Subpackets ermitteln und
print_subpacket aufrufen.
Robert L. schrieb:> lol, SO programmierst du ??
jetzt würde es mich aber arg interessieren wie du das angehst.
immerhin ist das ja nicht gerade eine unbekannte sache sondern eine
altägliche beispiele wären:
uart buffer
ring buffer
fifo
usw
also?
wie machst du es?
;-)
bin gespannt auf deinen vierzeiler, mehr darfst nicht schreiben mit so
einer 'grossen klappe' ;-)