Gdy zero staj e się nieskończonością
W ostatnim poście wspominałem o moich zmaganiach z kompilacją i plikiem binarnym.
Co prawda utknąłem trochę, zgłębiając tajniki konfiguracji, pliku startowego oraz linkera, ale obiecuję – jak tylko zgłębię tę "tajemną wiedzę" i stworzę Makefile'a, który ułatwi mi życie, o wszystkim napiszę!
Dzisiaj jednak przychodzę z nowinkami prosto z pracy, a mianowicie z "problemem nieskończoności".
Aktualnie pracuję przy bateriach do wózków widłowych. Obsługuję infrastrukturę pomiaru napięcia, temperatury oraz poziomu cieczy.
Nasi klienci nie zawsze mają kontrolery podpięte do sieci, więc raz na jakiś czas musimy zgrać dane ręcznie, aby mieć wgląd w historię używania danej baterii.
Ostatnio podczas importu niektóre pliki z niewiadomego powodu nie chciały przejść.
Okazało się, że podczas zapisu w niektórych miejscach program zamiast "0" podał liczbę tak wielką, że ostatecznie zinterpretował ją jako nieskończoność i wpisał w plik tekstowy "inf".
Program zbierający te dane widząc "inf" zamiast liczby, uznawał to za błąd typu zmiennej i wyrzucał cały plik do kosza.
Udało mi się już uratować te pliki CSV, jednak zastanawia mnie, co stoi za tą niewinną, a jednak destrukcyjną usterką w kodzie ESP8266.
ak tylko znajdę chwilę, wezmę na warsztat program tego kontrolera i sprawdzę, gdzie leży błąd.
Macie jakieś pomysły, co może powodować takie "matematyczne anomalie"?
Dajcie znać w komentarzu!
Osobiście obstawiam dzielenie przez zero spowodowane przerwaniem w odczycie wartości porównawczej bądź zakłócenie spowodowane wysokimi prądami podczas pracy owej baterii.
Jeżeli macie inne pomysły będę wdzięczny za każdą podpowiedź!