Keresés

Hirdetés

Új hozzászólás Aktív témák

  • daninet

    veterán

    válasz dabadab #4415 üzenetére

    Elvileg C++, igen (70%-ban, 30-ban C). De javíts ki ha nem, átrakom másik topikba. Marlin firmware-t akarom módosítani. Volt már itt téma, akkor te segítettél, de az igényeim alacsonyabbak voltak :DDD , csak újra akartam indítani a sorozatot, működött is.
    Szóval alant a kódban a random(2,10); függvényt használtam, de mint írtátok, ez ugyanazt a sorozatot generálja mindig, nekem ez nem jó.
    Hogy értsétek, erről a homokba rajzolós asztalról van szó. SD kártyán vannak a minták, indításnál az auto0.g fájl tartalmazza a homing sequence-t, a többi auto1.g - auto9.g a mintákat amiket rajzol. Mivel ezek órákig mennek nem poén, ha mindig bekapcsolom és ugyanazzal indul. Jó lenne, ha random választana egy számot 2-10ig (függvényben alul van egy x-1) és akkor valamelyik mintát elkezdené rajzolni.
    Kontextusnak annyi, hogy elkezdi beolvasni az SD kártya tartalmát a program, és ha nincs ott egy fájl amit áramkimaradás esetén akkor kezdi a kód szerint az auto0.g-t

    mod: elég rossz itt a kódformázás, itt egy pastebin link: https://pastebin.com/zFwjc0y9

    #if DISABLED(NO_SD_AUTOSTART)
    /**
    * Run all the auto#.g files. Called:
    * - On boot after successful card init.
    * - From the LCD command to Run Auto Files
    */
    void CardReader::autofile_begin() {
    autofile_index = 1;
    (void)autofile_check();
    }
    /**
    * Run the next auto#.g file. Called:
    * - On boot after successful card init
    * - After finishing the previous auto#.g file
    * - From the LCD command to begin the auto#.g files
    *
    * Return 'true' if an auto file was started
    */
    bool CardReader::autofile_check() {
    if (!autofile_index) return false;

    if (!isMounted())
    mount();
    else if (ENABLED(SDCARD_EEPROM_EMULATION))
    settings.first_load();

    // Don't run auto#.g when a PLR file exists
    if (isMounted() && TERN1(POWER_LOSS_RECOVERY, !recovery.valid())) {
    char autoname[10];
    sprintf_P(autoname, PSTR("/auto%c.g"), '0' + autofile_index - 1);
    if (fileExists(autoname)) {
    cdroot();
    openAndPrintFile(autoname);
    // Generate a random number between 2 and 10
    int randomNumber = random(2,10);
    autofile_index = randomNumber;
    //
    return true;
    }
    }
    autofile_cancel();
    return false;
    }
    #endif

    [ Szerkesztve ]

    Miért vegyem meg, ha 3x annyiért, 3x annyi idő alatt megépíthetem? ´¯`·.¸¸.·´¯`·.¸><(((º>

Új hozzászólás Aktív témák