Naja, Althirsch, weiß nicht, wo du da hängenbleibst ?
Ist die Grundform. wenn "bufsize" ein vielfaches von 3 ist, kann man auch ein bißchen sparenCode:const bufsize = nn DIM buffer(bufsize] as byte DIM Wrindex AS BYTE DIM Rdindex AS BYTE Wrindex = 1 Rdindex = 1 reinschreiben: buffer(Wrindex) = 1.byte gosub Incr_wrindex buffer(Wrindex) = 2.byte gosub Incr_wrindex buffer(Wrindex) = 3.byte gosub Incr_wrindex return Incr_wrindex: incr Wrindex if Wrindex > bufsize then wrindex = 1 end if return rauslesen: if Rdindex = Wrindex then is_nix_da else 1.byte = buffer(Rdindex) gosub Incr_rdindex 2.byte = buffer(Rdindex) gosub Incr_rdindex 3.byte = buffer(Rdindex) gosub Incr_rdindex end if return Incr_rdindex: incr rdindex if rdindex > bufsize then rdindex = 1 end if return
Zu klären ist beim reinschreiben, ob überhaupt Platz ist und beim lesen, was is, wenn nix da ist.
Kommt auf die Anwendung an.
In C ist das genauso, nur daß Wrindex und Rdindex von 0 beginnen.
Für C gibts beispiele in unserer Wiki
https://www.roboternetz.de/wissen/in...FO_mit_avr-gcc
Lesezeichen