<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p><font face="Arial">Přesně tak to cítím a proto jsem se snažil
udělat tu formátovací funkci, kterou ale wek napsal ještě mnohem
líp. Už ji mám v programu ještě upravenou o umístění textů ve
flash a s drobnou úpravou, která má nyní dva formátovací znaky: </font></p>
<p><font face="Arial">@ = číslice</font></p>
<p><font face="Arial"># = číslice, pokud je nenulová nebo mezera,
pokud je nulová</font></p>
<p><font face="Arial">A dodělal jsem přetížení pro všechny typy
proměnných, protože jinak kompilátor všechno převádí na int32_t
a kód volání je zbytečně delší.<br>
</font></p>
<pre class="moz-signature" cols="72">Martin Záruba</pre>
<div class="moz-cite-prefix">Dne 22.4.2024 v 15:34 Petr Labaj
napsal(a):<br>
</div>
<blockquote type="cite"
cite="mid:9eeedb94-3c69-b13d-138b-6102e9578e25@volny.cz">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Já už jsem se v tomto vlákně dávno ztratil a tak už jsem mimo.<br>
<br>
Ale když teď píšete o double - já myslel, že cílem, že všechno
floatové<br>
eliminovat a používat čistě integer, třeba s posunutou bází.<br>
Takže mít proměnné třeba v desetitisícinách voltů a tyhle
formátované<br>
tisky použít pro výpis v lidském formátu.<br>
Takže to se asi pletu, žejo.<br>
<br>
Já jsem to vždy na MCU bral tak, že float se použije opravdu jen
když už<br>
to opravdu jinak nejde. A protože to skoro vždy nějak jde, tak se
raději<br>
nepoužije vůbec nikdy.<br>
<br>
PL<br>
<br>
******************<br>
<br>
<div class="moz-cite-prefix">Dne 22.4.2024 v 11:13 Pavel Hudeček
napsal(a):<br>
</div>
<blockquote type="cite"
cite="mid:443eff26-6a0d-4dcd-8070-60dcdd02a963@seznam.cz">
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8">
Zajímavé je, jak různé konstrukce můžou vést k různé délce kódu.<br>
<br>
Rozdíl 500 B trochu překvapil, ale OK. Použito je long a double.<br>
Vlastně bych to čekal spíš naopak, když se u té delší verze
nepředává val. Ale chápu, že tohle asi snadno sežere nějaká
optimalizace, když se v val nic nedělá.<br>
<br>
Nějaké nápady na další konstrukce, které by mohly být menší?<br>
<br>
Dost ale překvapilo 30 B u <b>nepoužitých funkcí</b> test.<br>
WTF?<br>
<br>
PH<br>
<br>
<br>
<font face="monospace">template <typename T> class
clDetTyp { // ===========================<br>
public:<br>
//const char det() const;<br>
char det(unsigned int x) {return 'u';}<br>
char det(int x) {return 'i';}<br>
char det(unsigned long x) {return 'U';}<br>
char det(long x) {return 'L';}<br>
char det(float x) {return 'f';}<br>
char det(double x) {return 'd';}<br>
};<br>
<br>
/*// tohle bylo delsi o ~500B, const nemají vliv<br>
template <> const char clDetTyp<unsigned
int>::det() const { return 'u';}<br>
template <> const char clDetTyp<int>::det() const
{ return 'i';}<br>
template <> const char clDetTyp<long>::det() const
{ return 'L';}<br>
template <> const char clDetTyp<float>::det()
const { return 'f';}<br>
template <> const char clDetTyp<double>::det()
const { return 'd';}*/<br>
<br>
template<typename T><br>
void uartSendF(const char *t, T val, uint8_t mist) { //
=============<br>
clDetTyp<T> d;<br>
if (d.det(val)=='f' || d.det(val)=='d') {<br>
float m = 1.0;<br>
for (uint8_t n=0; n<mist; n++) m*=10.0;<br>
uartSendF_(t, static_cast<long>(val*m), mist);<br>
} else if (d.det(val)=='L') uartSendF_(t, val, mist);<br>
else uartSendF_(t, static_cast<long>(val), mist);<br>
}<br>
<br>
</font><font face="monospace">/*// tyhhle funkce nejsou použitý,
ale zakomentování ušetří 30B (</font><font face="monospace">uartSendF
s jedním PSTR se používá i jinde)<br>
// Změna délky PSTR v nich nevede ke změně rozdílu zabrané
flash<br>
</font><font face="monospace">const void test(int x) {<br>
uartSendF(PSTR("test: int\r\n"));<br>
}<br>
void test(char x) {<br>
uartSendF(PSTR("test: char\r\n"));<br>
}*/</font><br>
</blockquote>
<br>
<br>
<fieldset class="moz-mime-attachment-header"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
HW-list mailing list - sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
</blockquote>
</body>
</html>