Skocz do zawartości

Wyświetlanie liczby na wyświetlaczu z pliku tekstowego


Pomocna odpowiedź

Napisano

Witam

Czym powinienem się zainteresować, co poczytać aby wykonać taki projekt:

Raspberry PI np. co 1 minutę odczytuje plik tekstowy z sieci lokalnej w którym jest liczba trzy cyfrowa. Po odczytaniu wyświetla tą wartość na:

1. Monitorze w trybie pełno ekranowym,

lub

2. Wyświetlaczu led segmentowym trzy cyfrowy.

W zależności co będzie łatwiejsze, monitor w trybie pełno ekranowym czy wyświetlacz LED.

Czym powinienem się zainteresować, ktoś coś podpowie?

 

Obydwa projekty nie wydają się trudne. Do wyświetlania na ekranie możesz użyć biblioteki GTK lub QT.

Zdecydowanie jednak wybrałbym wyświetlacz siedmiosegmentowy ze względu na mniejszy pobór prądu. Do tego zastosowałbym ESP8266 zamiast Raspberry. Oprócz znacznie niższej prądożerności zyskasz nieco większą niezawodność (brak karty SD i konieczności dbania o poprawne zamknięcie systemu operacyjnego).

Też skłaniał bym się ku wyświetlaczowi segmentowemu... Zostaje raczej Raspberry, ze względy na przyszłe dodatkowe projekty. 

Do wyświetlania na ekranie proponujesz użyć biblioteki GTK lub QT... a na wyświetlaczu segmentowym?

No właśnie o tym wczoraj czytałem tak na szybko TU. MAX7219 obsłuży wyświetlacz segmentowy. 

Załóżmy, że mam już gotowy zestaw Raspberry + wyświetlacz segmentowy ze sterownikiem MAX7219. Odpalam rożne pliki testowe i demonstracyjne - działa.

Kolejne pytanie to jak odczytać wartość z pliku tekstowego i pokazać ją na wyświetlaczu, sprawdzając wartość np. co 10 min?

(edytowany)
11 godzin temu, dippaolo napisał:

Kolejne pytanie to jak odczytać wartość z pliku tekstowego i pokazać ją na wyświetlaczu, sprawdzając wartość np. co 10 min?

Zależy od języka, ale prawdopodobnie użyjesz Pythona. W jaki sposób dostępny będzie ten plik w sieci lokalnej? Protokół SMB? Najwygodniej postawić mikroserwer www i na nim hostować ten plik.

https://docs.python.org/3/howto/urllib2.html

https://pypi.org/project/TaskScheduler/

W C++ też się da.

https://curl.haxx.se/libcurl/competitors.html

https://whoshuu.github.io/cpr/

https://www.geeksforgeeks.org/socket-programming-cc/

Edytowano przez rziomber
  • Pomogłeś! 1

Dzięki za linki @rziomber. 

Wydaje mi się, że nie będzie problemu z samym dostępem do pliku tekstowego. Mogę nawet coś zrobić w cronie u nas na serwerze aby kopiował do RP czy RP będzie automatycznie go sobie kopiował tak aby był w określonym katalogu już na karcie SD czy na pendrive USB na RP...

Bardziej zależy mi na informacji jak wrzucić odczytany plik TXT, w moim przypadku z trzema cyframi (ile liczb to chyba nie istotne) na wyświetlacz. Tak jak pisałem wyżej, załóżmy że mam RP z działającym wyświetlaczem, jakieś odpalone demo z danej wtyczki działa poprawnie. 

19 minut temu, dippaolo napisał:

Bardziej zależy mi na informacji jak wrzucić odczytany plik TXT, w moim przypadku z trzema cyframi (ile liczb to chyba nie istotne) na wyświetlacz.

Odczytujesz plik w Pythonie i przekazujesz uzyskaną wartość do funkcji showvalue()

Wszystko do znalezienia na Google w kilka sekund.

  • Pomogłeś! 1

I to już jakaś wskazówka 🙂 Jak dojdzie wyświetlacz, podłączę, odpalę demo, to później spróbuję pokombinować. Pewnie wrócę tu z jakimś pytaniem 🙂

ps. Jak się wie jak zapytać google to tak. Ja jestem amatorem, młodzikiem, przedszkolakiem ipt, itd. 🤪

Więc jestem z powrotem 🙂

Już podłączony wyświetlacz 7 segmentowy ze sterownikiem MAX7219.

Już program odczytuje plik tekstowy. Coś co wyświetla wygląda tak, nie wiem czy to najlepsze rozwiązanie ale działa:

    print('Simple text...')
    f= open('test.txt', 'r')
    file_contents = f.read()
    seg.text = (file_contents)
    time.sleep(5)
    f.close()

Teraz kolejne pytanie...

Nie chcę aby wyświetlało się to tylko przez 5 sekund. Jak zrobić aby po wykonaniu skryptu na wyświetlaczu pozostała wartość odczytana z pliku TXT? Dlaczego? dlatego że np. za 10min znów wykona się ten sam skrypt i odczyta nową wartość... i tak w kółko 🙂

Chyba zabiję proces w cronie komendą KILL i uruchomię skrypt ponownie w cronie

  • 2 tygodnie później...

Jest mały problem. Koniec końców, użyłem jeszcze komendy "while" aby skrypt wykonywał się w pętli. problem jest taki że po pewnym czasie skrypt się zatrzymuje i wywala błąd 

OSError: [Errno 24] Too many open files: /home/pi/txt/txt.txt

Obecnie kod wygląda tak:

def main():
    while True:
        # create seven segment device
        serial = spi(port=0, device=0, gpio=noop())
        device = max7219(serial, cascaded=1)
        seg = sevensegment(device)
        print('Test tekstu...')
        f= open('/home/pi/txt/txt.txt', 'r')
        file_contents = f.read()
        seg.text = (file_contents)
        f.close()
        time.sleep(5)

Widać, że plik otwieram i go na końcu zamykam, mimo to pojawia się info po pewnym czasie, że zbyt wiele otwartych plików...
Ktoś coś widzi złego w tym kodzie?

print test tekst jedla abym w konsoli widzial ze skrypt leci

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...