On 08.12.2012 09:40, thomas.m.kai...@web.de wrote:
> Hallo,
>
> Imho könnte man doch temp2text nutzen, da sind doch alle Fälle behandelt?
>
> Gesendet mit meinem HTC
>
> ----- Reply message -----
> Von: "Volker" <derklaut...@web.de>
> An: <ethersex-devel@list.zerties.org>
> Betreff: [ethersex-devel] 1w - DS18S20 - Problem negative Temperaturen
> Datum: Sa., Dez. 8, 2012 08:13
>
>
> On 05.12.2012 00:16, Daniel wrote:
> > Hallo,
> >
> > ich habe mir den entsprechenden Code jetzt mal angeguckt. Die Übergabe
> > wird anders gemacht, daher tritt der besagte Fehler von 0 bis -1°C nicht
> > auf.
> >
> > Der Fehler lässt sich einfach lösen. In ./hardware/onewire/ecmd.c in der
> > function parse_cmd_onewire_get folgendes ändern:
> > alt:
> > ret = snprintf_P(output, len, PSTR("%d.%1d"), res.quot, res.rem);
> >
> > neu:
> > ret = snprintf_P(output, len, PSTR("%d.%1d"), res.quot, abs(res.rem));
> >
> > Irgendwie kann ich keinen neuen pull request senden, weil der alte noch
> > offen ist. In meinem fork ist der Fehler korrigiert. Ich gucke mir das
> > morgen mal an, wie ich nen zweiten pull request stellen kann.
> >
> > Auch wenn bei so einer kleinen Änderung eigentlich keine Fehler
> > auftreten sollten; da ich keinen Sensor habe, kann ich nicht testen, ob
> > das jetzt richtig funktioniert.
> >
> > Viele Grüße
> > Daniel
> >
>
> ret = snprintf_P(output, len, PSTR("%d.%1d"), res.quot, abs(res.rem));
>
> funktioniert aber zwischen -0.1 und -0.9 Grad auch nicht, da das
> Minuszeichen nur in Abhängigkeit von res.quot gesetzt wird. Für res.quot
> = 0 ist das immer positiv auch wenn res.rem != 0.
>
>
> Volker
>
>
> _______________________________________________
> Ethersex-devel mailing list
> Ethersex-devel@list.zerties.org
> https://list.zerties.org/cgi-bin/mailman/listinfo/ethersex-devel

Ich dachte eher an so etwas:

      /* found it */
      int16_t temp = sensor->temp;
      char m_flag = 0;
      if (temp < 0)
      {
        temp = -temp;
        m_flag = 1;
      }
      div_t res = div(temp, 10);
      ret = snprintf_P(output, len, PSTR("%s%d.%1u"), m_flag?"-":"",
res.quot, res.rem);
      return ECMD_FINAL(ret);


_______________________________________________
Ethersex-devel mailing list
Ethersex-devel@list.zerties.org
https://list.zerties.org/cgi-bin/mailman/listinfo/ethersex-devel

Reply via email to