SOYER Napisano Luty 1, 2021 Udostępnij Napisano Luty 1, 2021 (edytowany) Cześć, podsuncie jakiś pomysł... Uczepiłem się tego dfplayerem to mam😭, chcę by mój dfp wygrał mi aktualną datę, godzinę i dzień tygodnia. Wszystkie te dane, tzn. dzień tygodnia, miesiąca, miesiąc, rok i oczywiście godziny mam w formie liczbowej (int). Do każdej tej liczby muszę przyporządkować konkretny numer pliku wav. Teraz, zrobienie tego na if... kupa pisania... Zrobienie na switchu nie lepiej... 31dni, 12 miesięcy, rok, 24 godziny, 60 minut... 127szt case... Pętla for? Jeszcze inaczej? Ale jak? Pomożecie? Edytowano Luty 1, 2021 przez SOYER Cytuj Link do komentarza Share on other sites More sharing options...
bjrk Luty 1, 2021 Udostępnij Luty 1, 2021 (edytowany) Cześć! A gdyby nie nr pliku a nazwę pliku? Co zawierają, (lub mają zawierać) te pliki? Jeśli masz numer dnia to ustaw nazwę pliku np na nazwa_aktualnego_pliku_dnia = "dzien_" + str(nr_dnia) + ".vav" ; // to dzień, miesiąc, rok, godzina, mnuta, sekunda analogicznie Jeśli pliki masz sensownie ponumerowane to możesz numer uzyskać np dodając nr pierwszej pozycji zawierającej dzień do numeru dnia minus jeden. Edytowano Luty 1, 2021 przez bjrk Nowy pomysł Cytuj Link do komentarza Share on other sites More sharing options...
SOYER Luty 1, 2021 Autor tematu Udostępnij Luty 1, 2021 (edytowany) Nie bardzo łapię... Nazwa pliku to 01, 02,03,04...11,12,13,...256. Takiego nazewnictwa wymaga dfp. Pliki to sample dźwiękowe, "czwarty", "szesnasty", "lipca"... Pliki z dniami miesiąca są nazywane kolejnymi numerami, podobnie dni tygodnia, miesiące... Np. dni tygodnia to int od "0" do "6", a pliki z samplami to numery od "55" do "61" Podobnie reszta... Edit: Poprawcie mnie jeśli się mylę,ale rozwiązanie jest chyba banalne, robię 6 krótkich funkcji, dla minuty, godziny, dnia tygodnia, dnia miesiąca, miesiąca, roku. W argument funkcji daję int-a z pobranej godziny, miesiąca itd. W funkcji tylko dfp.play(argument funkcji); Ok? Czy da się prościej? Edytowano Luty 1, 2021 przez SOYER Cytuj Link do komentarza Share on other sites More sharing options...
bjrk Luty 1, 2021 Udostępnij Luty 1, 2021 (edytowany) Czyli nazwa pliku dla 26 dnia to numer pierwszego pliku z serii (np 5) plus nr wewnątrz serii czyli 26. jeśli styczeń ma nr 35, luty 36 itd to numer marca to 34+3, numer maja 34+5 itd Nie pisałem o dniach tygodnia, bo tu jeszcze zależy jak je numerujesz czyli nr_pliku = pierwszy_z_serii + nr_wewnątrz_serii ; nr_pliku_dnia_tygodnia = 55 + nr_dnia_tygodnia; To odpowiedź na Twój post, ale mi połączyło: Pewnie tak, wtedy nr pierwszego pliku z serii masz w środku funkcji. Edytowano Luty 1, 2021 przez bjrk połaczenie postów 1 Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
SOYER Luty 1, 2021 Autor tematu Udostępnij Luty 1, 2021 18 minut temu, SOYER napisał: Edit: Poprawcie mnie jeśli się mylę,ale rozwiązanie jest chyba banalne, robię 6 krótkich funkcji, dla minuty, godziny, dnia tygodnia, dnia miesiąca, miesiąca, roku. W argument funkcji daję int-a z pobranej godziny, miesiąca itd. W funkcji tylko dfp.play(argument funkcji); Ok? Czy da się prościej? Prościej znaczy krócej, jedna funkcja z 6 argumentami... Prościej chyba się nie da...?? Cytuj Link do komentarza Share on other sites More sharing options...
bjrk Luty 1, 2021 Udostępnij Luty 1, 2021 Prościej zawsze jakoś się da, ale czy będzie lepiej to nie wiem.😉 Ja myślałem ewentualnie o jednej funkcji z dwoma argumentami: numer_pierwszego, numer_aktualnego. Obliczasz pozycję i wywołujesz co tam chcesz, a pierwszy parametr to stała, może predefiniowana (#define) Cytuj Link do komentarza Share on other sites More sharing options...
SOYER Luty 1, 2021 Autor tematu Udostępnij Luty 1, 2021 Idę spać bo już głupoty plotę, oczywiście mój pomysł nijak nie rozwiązuje postawionego problemu... Cytuj Link do komentarza Share on other sites More sharing options...
bjrk Luty 1, 2021 Udostępnij Luty 1, 2021 Moim zdaniem rozwiązuje, ale dobranoc. Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Luty 1, 2021 Udostępnij Luty 1, 2021 A na przykład dla godziny (czas w minutach) coś w rodzaju: int pliki[4]; int nr = 0; static const int godziny = 10; // arbitralnie - od numeru 10 zaczną się godziny static int minuty = 31; // minuty od 0 do 19 static int minuty_d = 41; // dziesiątki minut od 20 hour = time / 60; // time to aktualny czas w minutach od zera do 1440 mins = time % 60; if (hour <= 20) pliki[nr++] = godziny + hour; // dla godzin do dwudziestej else { // składamy z dwóch, np. "dwudziesta" i "pierwsza" pliki[nr++] = godziny + 20; pliki[nr++] = godziny + (hour - 20); } if (mins < 10) { pliki[nr++] = minuty; // zero if (mins) pliki[nr++] = minuty + mins; } else if (mins < 20) { pliki[nr++] = minuty + mins; // dziesięć i naście } else { pliki[nr++] = minuty_d + mins/10 - 2; // dwadzieścia i dalej if (mins % 10) pliki[nr++] = minuty + mins % 10; } // w tablicy plik masz numery plików, a w nr ile ich trzeba zagrać. Masz 21 + 20 + 5 = 46 plików na powiedzenie godziny. Ech, kiedyś to ćwiczyłem na Symbianie 🙂 1 Cytuj Link do komentarza Share on other sites More sharing options...
SOYER Luty 1, 2021 Autor tematu Udostępnij Luty 1, 2021 20 minut temu, bjrk napisał: nr_pliku = pierwszy_z_serii + nr_wewnątrz_serii ; Dzięki, dobry pomysł, ale mała poprawka: nr_pliku = (pierwszy_z_serii-1)+ nr_wewnątrz_serii ; a właściwie nr_pliku = (pierwszy_z_serii-1)+ nr_dnia_ew.tyg_ew.godzinaitd; Cytuj Link do komentarza Share on other sites More sharing options...
bjrk Luty 1, 2021 Udostępnij Luty 1, 2021 Pisałeś,że numerujesz od zera? Przynajmniej dni tygodnia Cytuj Link do komentarza Share on other sites More sharing options...
SOYER Luty 1, 2021 Autor tematu Udostępnij Luty 1, 2021 3 minuty temu, bjrk napisał: Moim zdaniem rozwiązuje, ale dobranoc. Rozwiązuje dopiero połączenie Twojego pomysłu z moim... Pomysłowi @ethanak muszę się przyjrzeć na spokojnie... Ja to widzę tak: int godzina=get.hour(); Int plikGodzina=79+godzina; int miesiac=get.month(); Int plikMiesiac=123+month; I tak jeszcze 4 razy... gadajCzas(plikMinuta, plikGodzina,plikdzien,plikMiesiac,plikDzienTygodnia); gadajCzas(int min, int godz, int dzień,int miesiac,int dzienT){ dfp.play(min); delay(3000); dfp.play(godz); delay(3000); Itd.itp. } Cytuj Link do komentarza Share on other sites More sharing options...
bjrk Luty 1, 2021 Udostępnij Luty 1, 2021 W nawiązaniu do tego co pokazał @ethanak. Ja założyłem, że zawsze jest jeden plik na jeden kawałek komunikatu (godzina, minuta), co trochę upraszcza. 1 Cytuj Link do komentarza Share on other sites More sharing options...
SOYER Luty 1, 2021 Autor tematu Udostępnij Luty 1, 2021 Tak dokładnie jest, jeden plik na każdy dzień i miesiąc, godzin i minut nie nagrywałem jeszcze. Tutaj właśnie przyda się pomysł @ethanak bo nie będę musiał nagrywać tyłu plików. Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Luty 1, 2021 Udostępnij Luty 1, 2021 No wiesz - ja w Nokii chciałem oszczędzić miejsca (zegarek to była część playera do audiobooków, i wolałem wsadzić na kartę jedną książkę więcej niż za dużo komunikatów). Ale po prostu chciałem pokazać jeden ze sposobów. Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!