Aktív témák

  • TheVeryGuest

    senior tag

    válasz Blackmate #3 üzenetére

    Veszel egy sima unsigned char tömböt, mondjuk 10x512byte-osat. Fogsz egy pointert, ami a buffer kezdetét fogja mutatni, meg egyet, ami a végét. Kezdetben mindkettő a tömböd elejére mutat. Szükslég lesz még egy változóra a felhasznált bufferhossznak. Evidens, hogy egyszerre, csak teljes méret (10x512) - felhasznált méret bájtot tudsz csak beleírni. Mikor beírsz valamit, mindig az aktuális végmutató utáni helyre írod. Csak arra kell figyelni, hogy ne lógj túl a tömbön. Ha túllógnál, akkor kiírod azt a részt, ami még kifér, a maradékot, meg a tömb elejétől, a buffer kezdetetét mutató pointerig lehet írni.
    Tehát körbe-körbe haladsz a buffer használata során, ettől ringbuffer.
    Miután beleírtál valamit fogod megnézed, hogy a felhasznált méret > 512 byte, ha nagyobb akkor kiírhatsz egy csomagot az USB-n keresztül. Majd lépteted a buffer elejét mutató pointert 512byte-tal. Ha eléred a tömb végét, akkor folytatod a léptetést, az elejétől.
    Nem tom mennyire világosan írtam le, ehhez inkáb rajzolni kellene, de talán az ötletet megérted, és akkor csak a megvalósítással kell pöcsölni. Már ha jól értettem a problémát.

    “Perfection is attained not when there is nothing more to add, but when there is nothing more to remove” Antoine de Saint-Exupéry

Aktív témák