Czas druku na LCD
Re: Czas druku na LCD
Na Repetier 0.92.9 działa doskonale.
Re: Czas druku na LCD
syntetyczny pisze:A na marlinie chyba działać to nie będzie, co?
Marlin ma w standardzie wszystko co Miś dodał do Repetier, tj. zliczanie czasu druku, wyświetlanie % ukończenia i podsumowanie czasu po zakończeniu druku.
- syntetyczny
- Posty: 2390
- Rejestracja: 08 lut 2013, 23:26
- Lokalizacja: Elbląg
- Kontaktowanie:
Re: Czas druku na LCD
A widzisz
No to nie wiedziałem ;P

eppure si muove
sklep z akcesoriami RepRap http://www.byq3d.eu
sklep z akcesoriami RepRap http://www.byq3d.eu
Re: Czas druku na LCD
Pull-request na githubie repetiera by się przydał ... by tego typu zmiany włączyli do wersji głównej.
X3D XL
Re: Czas druku na LCD
Dodałem od siebie licznik sekund bo lubię widzieć jak pykają 
Mój kod bazuje ne kodzie Misia z pewnymi zmianami.
Zaprezentuję tu komplet zmian od czystego Repetiera.
W pliku ui.cpp
Z początku pliku (pierwsze linijka już istnieje)
To pozostaje bez zmian tak jak w kodzie Misia.
Tutaj zmiana w wyliczaniu prtim oraz dodane sekundy do wyświetlania w trakcie druku.
I na koniec status po wydruku:
Na koniec pozostaje skrócić delikatnie napis "Printing..." i w Polskim tłumaczeniu "Drukowanie..."
W pliku uilang.h szukamy linii:
i podmieniamy na
i następnie jeżeli ktoś używa języka polskiego to:
zmieniamy na przykład na:
bez tych zmian czas wyświetlany na ekranie będzie ucięty.
EDIT
Dopatrzyłem sie jeszcze jednej rzeczy.
W obecnej formie licznik obsłuży maksymalnie 18 godzinny wydruk.
Jeżeli ktoś wstawia dłuższe wydruki, to musi zmienić typy danych dla zmiennej prtim z uint16_t na uint32_t.
To samo dla zmiennej tim w wyświetlaniu czasu podczas druku.

Mój kod bazuje ne kodzie Misia z pewnymi zmianami.
Zaprezentuję tu komplet zmian od czystego Repetiera.
W pliku ui.cpp
Z początku pliku (pierwsze linijka już istnieje)
Kod: Zaznacz cały
static TemperatureController *currHeaterForSetup; // pointer to extruder or heatbed temperature controller
uint16_t prtim; // printing time counter
To pozostaje bez zmian tak jak w kodzie Misia.
Tutaj zmiana w wyliczaniu prtim oraz dodane sekundy do wyświetlania w trakcie druku.
Kod: Zaznacz cały
if(c2 == 's')
{
#if SDSUPPORT
if(sd.sdactive && sd.sdmode)
{
addStringP(Com::translatedF(UI_TEXT_PRINT_POS_ID));
float percent;
if(sd.filesize < 2000000) percent = sd.sdpos * 100.0 / sd.filesize;
else percent = (sd.sdpos >> 8) * 100.0 / (sd.filesize >> 8);
addFloat(percent, 3, 1);
uint16_t tim = (HAL::timeInMilliseconds() - Printer::msecondsPrinting) / 1000L; // printing time in seconds
if(tim > prtim) prtim = tim;
if(Printer::filamentPrinted == 0) prtim = 0;
if(col < MAX_COLS)
uid.printCols[col++] = '%';
if(col < MAX_COLS-6)
{
uid.printCols[col++] = ' ';
addInt(prtim / 3600, 2, '0'); // hours
uid.printCols[col++] = ':';
addInt((prtim / 60) % 60, 2, '0'); // minutes
}
if(col < MAX_COLS-3){
uid.printCols[col++] = ':';
addInt(prtim % 60, 2, '0'); //seconds
}
}
else
#endif
parse(statusMsg, true);
break;
}
I na koniec status po wydruku:
Kod: Zaznacz cały
#if SDSUPPORT
//SD Card
if(sd.sdactive && u8g_IsBBXIntersection(&u8g, 66, 52 - UI_FONT_SMALL_HEIGHT, 1, UI_FONT_SMALL_HEIGHT))
{
if(sd.sdmode || prtim == 0)
{
printU8GRow(66,52,const_cast<char *>("SD"));
drawHProgressBar(79,46, 46, 6, sdPercent);
}
else
{
col = 0;
addStringP(PSTR("Tm: "));
addInt(prtim / 3600, 2, '0'); // hours
uid.printCols[col++] = ':';
addInt((prtim / 60) % 60, 2, '0'); // minutes
uid.printCols[col++] = ':';
addInt(prtim % 60, 2, '0'); // seconds
uid.printCols[col++] = 0;
printU8GRow(66,52,uid.printCols); // Printing time instead SD progressbar
}
}
#endif
Na koniec pozostaje skrócić delikatnie napis "Printing..." i w Polskim tłumaczeniu "Drukowanie..."
W pliku uilang.h szukamy linii:
Kod: Zaznacz cały
#define UI_TEXT_PRINT_POS_EN "Printing..."
i podmieniamy na
Kod: Zaznacz cały
#define UI_TEXT_PRINT_POS_EN "Printing:"
i następnie jeżeli ktoś używa języka polskiego to:
Kod: Zaznacz cały
#define UI_TEXT_PRINT_POS_PL "Drukowanie..."
zmieniamy na przykład na:
Kod: Zaznacz cały
#define UI_TEXT_PRINT_POS_PL "Wydruk..."
bez tych zmian czas wyświetlany na ekranie będzie ucięty.
EDIT
Dopatrzyłem sie jeszcze jednej rzeczy.
W obecnej formie licznik obsłuży maksymalnie 18 godzinny wydruk.
Jeżeli ktoś wstawia dłuższe wydruki, to musi zmienić typy danych dla zmiennej prtim z uint16_t na uint32_t.
To samo dla zmiennej tim w wyświetlaniu czasu podczas druku.
Re: Czas druku na LCD
ale zaspałem 
dziekuje bardzo za zainteresowanie temat. Przy wolnej drukarce wrzucam kod
Piwo dla Misia naszego

dziekuje bardzo za zainteresowanie temat. Przy wolnej drukarce wrzucam kod

Piwo dla Misia naszego

Re: Czas druku na LCD
Mógłby ktoś podesłać swój plik ui.cpp
Mam problem, na wyświetlaczu pojawia się 00:00:00 jednak mimo druku zegar nie startuje, to samo przy zakończeniu druku, pokazuje komunikat "silniki wyłączone" a nie czas druku...
Firmware repetier 92.9
Jeszcze jedno pytanko. bo teostowałem na zimnym przebiegu - to jest gcode bez faktycznego wydruku (głowica zimna, filament nie leci tylko silniki XYZ sie przemieszczają - i licznik nie rusza...
Tez nie po zakończeniu wydruku odrazu jest komunikat "silniki wylaczone" zamiast pokazania statystyki druku
Mam problem, na wyświetlaczu pojawia się 00:00:00 jednak mimo druku zegar nie startuje, to samo przy zakończeniu druku, pokazuje komunikat "silniki wyłączone" a nie czas druku...
Firmware repetier 92.9
Jeszcze jedno pytanko. bo teostowałem na zimnym przebiegu - to jest gcode bez faktycznego wydruku (głowica zimna, filament nie leci tylko silniki XYZ sie przemieszczają - i licznik nie rusza...
Tez nie po zakończeniu wydruku odrazu jest komunikat "silniki wylaczone" zamiast pokazania statystyki druku
Re: Czas druku na LCD
No i tak ma być. Licznik czasu ruszy dopiero jak licznik zużytego filamentu przestanie pokazywać 0. A więc przy wydruku na sucho tego nie przetestujesz.
Re: Czas druku na LCD
a co końcem wydruku tj. zamiast komunikatu "silniki wyłączone" ?
Re: Czas druku na LCD
Elegancko działa. przetestowane. Super hiper mega świetnie 
Dzięki Miś

Dzięki Miś

Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość