FAQ | Points | Add... | Recent posts | Search | Register | Log in


Linlamp - DS18B20 dla linuksa


Post new topic  Reply to topic      Main Page -> Forum Index -> DIY Structures -> Linlamp - DS18B20 dla linuksa
Author
Message
_tad_
Poziom 8
Poziom 8


Joined: 07 Jun 2006
Posts: 27

Post#1 Post from the author of the topic 15 Feb 2009 20:16   

Linlamp - DS18B20 dla linuksa


Linlamp - DS18B20 dla linuksa

Jako miłośnikowi Jedynego Słusznego Systemu Operacyjnego nie dawało mi spokoju, że dla Windowsa jest Lampomittari

http://www.elektroniikka.org/thermometer/?page=screenshots

a pod Linuksem pozostaje digitemp. Mając więc kilka dni wolnego i chęć poznania Gtk napisałem programik, który wizualizuje dane odczytywane z czujników na magistrali 1-wire poprzez owfs http://www.owfs.org

Program realizuje następujące zadania:

1. Odczyt czujników co zadany czas. Każdemu fizycznemu czujnikowi w systemie można przyporządkować wiele wirtualnych nazw w programie, a z każdą wirtualną nazwą można związać różne parametry (np. rozdzielczość czy przerwa pomiędzy kolejnymi odczytami).

2. Zapis wszystkich odczytanych danych do plików o formacie prawie zgodnym z formatem Lampomittari. Zapis jest przeprowadzany co ściśle określony czas lub przy wyjściu z programu. Ustawianie przerw pomiędzy kolejnymi zapisami na dysk powstało przede wszystkim po to, aby ułatwić instalowanie programu na komputerach z kartami CF (compact flash) zamiast dysku.

3. Wizualizacja odczytanych danych na wyświetlaczach. W tej chwili obsługiwane są dwa typy wyświetlaczy:
- graficzny rysujący wykresy z ręcznie ustawianą podziałką czasu i temperatury oraz legendą
- alfanumeryczny podający ostatnią odczytaną temperaturę

4. Pozwala na zapisanie ustawień do pliku config.txt w katalogu bieżącym. Ustawienia są automatycznie ładowane przy starcie programu i obejmują zarówno wygląd wszystkich wyświetlaczy, parametry programu (katalog, do którego zapisywane są dane z czujników), jak konfigurację czujników.


Program korzysta z bibliotek gtk, libconfig i gthread. Pod Ubuntu 7.10 libconfig musiałem skompilować ręcznie ze źródeł.

Aby go uruchomić należy:

1. Podłączyć czujniki DS18B20 do komputera - ja używam przejściowki ze strony Lampomittari
2. Zainstalować owfs i podmontować magistralę 1-wire w jakimś katalogu, np.:
Code:
opt/owfs/bin/owfs -d /dev/ttyS0 -m /var/1-Wire/

3. Po uruchomieniu programu należy ustawić ścieżki do katalogu, w którym podmontowana jest magistrala 1-wire oraz do katalogu na dane z czujników. Następnie w ustawieniach programu dodać czujniki, później dodać wyświetlacze i ma działać. Poniżej kilka obrazków w odpowiedniej kolejności:

Linlamp - DS18B20 dla linuksa


BARDZO WAŻNE JEST POPRAWNE USTAWIENIE ŚCIEŻEK !

Linlamp - DS18B20 dla linuksa Linlamp - DS18B20 dla linuksa Linlamp - DS18B20 dla linuksa Linlamp - DS18B20 dla linuksa Linlamp - DS18B20 dla linuksa Linlamp - DS18B20 dla linuksa


Kod ten jest na razie w wersji beta i napisany trochę po amatorsku, co oznacza tyle, że sam silnik odpowiedzialny za odczyt, zapis i wizualizację danych działa (czasami niezbyt wydajnie, ale wystarcza), ale mogą być jakieś drobne usterki w interfejsie użytkownika. Udostępnię go na jakiejś wersji licencji GPL, dlatego wszelkie uwagi/modyfikacje mile widziane. Sądzę, że przez kilka najbliższych tygodni będę miał mało czasu, a szkoda, żeby się zmarnował. Jeśli komuś się przyda, to życzę smacznego :)

W załączniku kod źródłowy pod Anjutę.



linlamp.zip
 Filename:  linlamp.zip
Download
 Contents:  
 Filesize:  207.1 KB
 Punkty:  0

Back to top
   
lechoo
Poziom 24
Poziom 24


Joined: 17 Sep 2002
Posts: 4763
Location: łódzkie

Post#2 15 Feb 2009 20:31   

Re: Linlamp - DS18B20 dla linuksa


_tad_ wrote:
a pod Linuksem pozostaje digitemp.

Przecież nie jest taki zły... a przynajmniej działa na większości platform linuksowych - systemy wbudowane itp.
Back to top
   
Google

Google Adsense


Post# 15 Feb 2009 20:31   





Back to top
   
_tad_
Poziom 8
Poziom 8


Joined: 07 Jun 2006
Posts: 27

Post#3 Post from the author of the topic 15 Feb 2009 20:49   

Re: Linlamp - DS18B20 dla linuksa


nie wiem, nigdy nie stosowałem :)
Przede wszystkim to zupełnie inna klasa rozwiązań - digitemp generuje obrazki statyczne, a tu mam klikane narzędzie w czasie rzeczywistym.
Do digitempa musiałbym jeszcze dorobić jakąś wizualizację...
No i nie wiem, jak z buforowaniem wyników w digitempie - docelowo to ma chodzić na karcie CF i zapisy co sekunde na dysk nie są dobrym pomysłem.
Back to top
   
mikal7
Poziom 3
Poziom 3


Joined: 02 Apr 2006
Posts: 5

Post#4 16 Feb 2009 10:46   

Re: Linlamp - DS18B20 dla linuksa


Witam,

O ile chcesz opublikować swój program myśle że dobrze było by (i wyglądałoby to profesjonalnie):
- zrezygnować z tabulatorów, na rzecz spacji (wcięcia nie formatują się ładnie i kod jest mniej czytelny gdy są tabulatory)
- zdecydować sie na jakiś jeden język, polski albo angielski (zmienne , komentarze).
Back to top
   
_tad_
Poziom 8
Poziom 8


Joined: 07 Jun 2006
Posts: 27

Post#5 Post from the author of the topic 16 Feb 2009 12:15   

Re: Linlamp - DS18B20 dla linuksa


mikal7 wrote:
Witam,

O ile chcesz opublikować swój program myśle że dobrze było by (i wyglądałoby to profesjonalnie):
- zrezygnować z tabulatorów, na rzecz spacji (wcięcia nie formatują się ładnie i kod jest mniej czytelny gdy są tabulatory)


o tym rzeczywiście nie pomyślałem, dzięki :)

Quote:
- zdecydować sie na jakiś jeden język, polski albo angielski (zmienne , komentarze).


tu zgadzam sie w całej rozciągłości :)
Angielskie nazwy zmiennych zacząłem wprowadzać po podjęciu decyzji o ewentualnej publikacji, wcześniej po prostu sprawdzałem różne drobiazgi. Wiem, że to karygodny grzech zakładać, że kod nie będzie rozwijany, ale od wiedzy do wykonania daleka droga ;-)
Kod na razie jest prototypem - zastanawiam się nawet, czy go zrefaktoryzować, czy po prostu wyrzucić i napisać od nowa. Niestety, chwilowo mam mało czasu, a to, co napisałem działa i na dodatek chyba dość stabilnie (parę dni chodzi bez zająknięcia). Pomyślałem więc, że może z tego ktoś oprócz mnie skorzystać :)
Back to top
   
arturromarr
Poziom 15
Poziom 15


Joined: 05 Jan 2006
Posts: 225
Location: Łódź

Post#6 16 Feb 2009 14:20   

Re: Linlamp - DS18B20 dla linuksa


Nie pisz od nowa skoro działa bo tak nigdy nie skończysz.
Opublikuj kod jako wolny i przyłącz się w ten sposób do społeczności rozwijającej oprogramowanie do systemu.

Całkiem miły programik, kiedyś sporo pisałem w gtk.
Back to top
   
greg45
Poziom 7
Poziom 7


Joined: 08 Feb 2005
Posts: 23

Post#7 16 Feb 2009 19:35   

Re: Linlamp - DS18B20 dla linuksa


Tak nawiasem, Lampomittari chodzi pod Wine.
Back to top
   
_tad_
Poziom 8
Poziom 8


Joined: 07 Jun 2006
Posts: 27

Post#8 Post from the author of the topic 16 Feb 2009 22:04   

Re: Linlamp - DS18B20 dla linuksa


arturromarr wrote:
Nie pisz od nowa skoro działa bo tak nigdy nie skończysz.


rozsądne podejście...

Quote:

Opublikuj kod jako wolny i przyłącz się w ten sposób do społeczności rozwijającej oprogramowanie do systemu.


Tak chyba zrobię, tylko zastanawiam się nad platformą. Na szybko przychodzi mi do głowy developer.berlios.de albo sourceforge. Są jakieś inne sposoby rozpropagowania kodu?

Quote:

Całkiem miły programik, kiedyś sporo pisałem w gtk.


dzięki, starałem się, żeby był funkcjonalny :)


greg45 wrote:

Tak nawiasem, Lampomittari chodzi pod Wine.


Tak, tylko miałem problemy z dostępem do czujników - pewnie źle ustawiłem opcje RS-a. No a poza tym docelowo to ma chodzić na maszynie z procesorem 200 MHz, 128/256 MB RAMu i kartą CF zamiast dysku....
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 16 Feb 2009 22:04   





Back to top
   
pmichniewski
Poziom 15
Poziom 15


Joined: 16 Aug 2005
Posts: 254
Location: Starachowice / Warszawa

Post#9 17 Feb 2009 12:13   

Re: Linlamp - DS18B20 dla linuksa


mikal7 wrote:
Witam,

O ile chcesz opublikować swój program myśle że dobrze było by (i wyglądałoby to profesjonalnie):
- zrezygnować z tabulatorów, na rzecz spacji (wcięcia nie formatują się ładnie i kod jest mniej czytelny gdy są tabulatory)


Z tym, to bym nie przeginał. Szerokość tabulacji można zmniejszyć w edytorze i wtedy samo się ładnie formatuje. Wszelkie narzędzia w różnych edytorach (m.in. Eclipse) stosują tabulacje przy autoformatowaniu. W wielu poradnikach dla programistów również poleca się tabulatory. Wszystko ma jeden prosty powód: jedni wolą jedną spację, inni dwie, a inni 4. Wyobraź sobie, gdyby kod pisały 3 osoby, każda o innych upodobaniach. Wystarczy stawiać tabulatory i ustawić w edytorze ich szerokość.
Back to top
   
mikal7
Poziom 3
Poziom 3


Joined: 02 Apr 2006
Posts: 5

Post#10 17 Feb 2009 15:40   

Re: Linlamp - DS18B20 dla linuksa


pmichniewski wrote:
... Szerokość tabulacji można zmniejszyć w edytorze i wtedy samo się ładnie formatuje. Wszelkie narzędzia w różnych edytorach (m.in. Eclipse) stosują tabulacje przy autoformatowaniu. ...


Owszem zgadzam sie z Tobą, że można sobie ustawić rozmiar tabulacji ale:
- po pierwsze nie zawsze to pomaga w formatowaniu kodu:
tabsize=2:
Code:
GtkDialog         *display_add_plot_dialog ;
GtkColorButton    *add_plot_input_color ;
GtkEntry          *add_plot_entry_name ;   
GtkTable          *display_add_plot_table ;
GtkComboBox        *add_plot_name_combo = NULL ;
GtkCheckButton    *add_plot_visible_button ;
GtkSpinButton      *add_plot_n_average_spin ;
GtkRadioButton    *add_plot_lines_button ;
GtkRadioButton    *add_plot_points_button ;
GtkRadioButton    *add_plot_diamonds_button ;

tabsize=4
Code:
GtkDialog                 *display_add_plot_dialog ;
GtkColorButton        *add_plot_input_color ;
GtkEntry                    *add_plot_entry_name ;       
GtkTable                    *display_add_plot_table ;
GtkComboBox                *add_plot_name_combo = NULL ;
GtkCheckButton        *add_plot_visible_button ;
GtkSpinButton            *add_plot_n_average_spin ;
GtkRadioButton        *add_plot_lines_button ;
GtkRadioButton        *add_plot_points_button ;
GtkRadioButton        *add_plot_diamonds_button ;

tabsize=8
Code:
GtkDialog                                 *display_add_plot_dialog ;
GtkColorButton                *add_plot_input_color ;
GtkEntry                                        *add_plot_entry_name ;               
GtkTable                                        *display_add_plot_table ;
GtkComboBox                                *add_plot_name_combo = NULL ;
GtkCheckButton                *add_plot_visible_button ;
GtkSpinButton                        *add_plot_n_average_spin ;
GtkRadioButton                *add_plot_lines_button ;
GtkRadioButton                *add_plot_points_button ;
GtkRadioButton                *add_plot_diamonds_button ;


- po drugie nie zawsze jest wymagane użycie edytora do przeglądania kodu, można użyć programu less albo po prostu cat.

pmichniewski wrote:
Wszystko ma jeden prosty powód: jedni wolą jedną spację, inni dwie, a inni 4. Wyobraź sobie, gdyby kod pisały 3 osoby, każda o innych upodobaniach. Wystarczy stawiać tabulatory i ustawić w edytorze ich szerokość.

Nie muszę sobie wyobrażać, ja to znam z autopsji, pracuje na kodzie redagowanym przez znacznie więcej niż 3 osoby.

Moje uwagi wynikały z dobrej woli i doświadczenia, myśle że tym przydługim postem możemy zakończyć dyskusję o standardy kodowania. polecam : Link , albo Link (a tu jest cześć dotycząca tabulatorów ;-) Link).

Oczywiście nikt nikomu nie zabrania używać tabulatorów.
Back to top
   
_tad_
Poziom 8
Poziom 8


Joined: 07 Jun 2006
Posts: 27

Post#11 Post from the author of the topic 17 Feb 2009 21:03   

Re: Linlamp - DS18B20 dla linuksa


Ponieważ sprowokowałem trochę tę dyskusję, to dorzucę swoje trzy grosze :))
Myślę, że z formatowaniem kodu jest jak z d.. uuups, wieloma innymi rzeczami - co kraj, to obyczaj. Inaczej będzie formatował kod ktoś, kto całe życie pisał pod Visualem, a inaczej uczestnik wielu projektów Open Source. Oczywiście jeśli w jakimś środowisku panują jakieś przyjęte standardy, to zdrowy rozsądek i dobre maniery nakazują się ich trzymać, chyba że są BARDZO POWAŻNE powody, żeby robić inaczej ;-)

Mój kod nie trzyma żadnych standardów i doskonale zdaję sobie z tego sprawę. Jedynie architektura systemu pozwala na razie w stosunkowo prosty sposób go rozwijać, ale też nie wszędzie (np.: plik t_display.c zaczął się trochę komplikować...). Z tego powodu myślę, że jeśli ten program miałby być rozwijany, to być może trzeba go jednak przynajmniej zrefaktoryzować, a może nawet przepisać. Należy go traktować jako działający prototyp, a miejsce prototypów po wykazaniu słuszności tezy jest na śmietniku bądź w najlepszym razie w przepastnych archiwach, do których zagląda co najwyżej sprzątaczka, i to raz w roku ;-)
Z drugiej strony, można do niego szybko dodać jeszcze parę drobiazgów i mieć bardzo przydatne narzędzie, które zwykłym użytkownikom (takim, co nie czytają kodu i nie debatują nad wyższością spacji na tabulatorami lub niejscem nawiasu otwierającego definicję funkcji ;-) będzie długo i dobrze służyć :)

Na swoje usprawiedliwienie mam tylko tyle, że przypadkiem wyszło mi coś na tyle użytecznego i prostego, że żal mi to było wyrzucić :) Programik jest króciutki i prościutki, średnio zaawansowany programista powinien go bez większych problemów zrozumieć, nawet biorąc pod uwagę moje błędy wynikające z niedostatecznej znajomości gtk. Kod ten powstał w ciągu kilku dni w trakcie zabaw z gtk i w założeniu nie miał być publikowany. Na forum wysłałem go w niedzielę, bo od poniedziałku musiałem się zająć innymi sprawami.

I jeszcze jedno - nie wiem, co robi edytor w Anjucie, ale u mnie akurat ten fragment:

mikal7 wrote:

- po pierwsze nie zawsze to pomaga w formatowaniu kodu:
tabsize=2:
[code]GtkDialog *display_add_plot_dialog ;
GtkColorButton *add_plot_input_color ;


wygląda całkiem znośnie dla tabulatorów dwuspacjowych

Linlamp - DS18B20 dla linuksa

Oczywiście jest wiele innych fragmentów, o których już dobrego słowa nie dam powiedzieć :))))
Back to top
   
mikal7
Poziom 3
Poziom 3


Joined: 02 Apr 2006
Posts: 5

Post#12 18 Feb 2009 09:51   

Re: Linlamp - DS18B20 dla linuksa


Dyskusja ma charakter ogólny i nie dotyczy stylu akurat tego programu.
Cos na kształt przewagi emacs-a nad vim-em i vice wersal' ;-) o eclipse już nie wspomnę.

Przykładów użyłem bo akurat te miałem pod ręką.

Znacznie lepszy jest program który działa niż nie wiem jak ładnie napisany który działa o tyle o ile. np. wingroza ( kij w mrowisko :-D)
Back to top
   
_tad_
Poziom 8
Poziom 8


Joined: 07 Jun 2006
Posts: 27

Post#13 Post from the author of the topic 19 Feb 2009 18:54   

Re: Linlamp - DS18B20 dla linuksa


mikal7 wrote:
Dyskusja ma charakter ogólny i nie dotyczy stylu akurat tego programu.
Cos na kształt przewagi emacs-a nad vim-em i vice wersal' ;-) o eclipse już nie wspomnę.


Nie miałem zamiaru wywoływać wrażenia zbytniego zaangażowania w tę dyskusję :) Jeśli takie wrażenie jednak powstało, to przepraszam - było późno :):):). Czasami lubię ekumeniczne dyskusje na przeróżne tematy, ważne, żeby wiedzieć, kiedy skończyć. Starałem się na podstawie swojego kodu pokazać parę różnych punktów widzenia. Wniosek jest taki, że nawet szybko napisany prototyp może być w pewnych warunkach użyteczny, ale wyprodukowanie czegoś poważniejszego wymaga już dyscypliny i ustalenia standardów.

Teraz z innej beczki - zarejestrowałem projekt pod nazwą GTemp1w na serwerze berlios.de

https://developer.berlios.de/projects/gtemp1w/

Dostęp na razie tylko przez cvs, może w przyszłym tygodniu trochę to rozwinę. A nawiązując do dyskusji o formatowaniu - chciałem zachować chociaż pozory, dlatego cały kod ponownie sformatowałem indentem z opcjami jak dla kodu GNU :) Niestety, na poprawienie komentarzy chwilowo nie znajdę czasu, tak że ewentualny zespół developerów ;-) będzie musiał znać język polski, przynajmniej w piśmie...

I jeszcze jeden drobiazg - w ciągu kilku tygodni przeprowadzę prawdopodobnie testy wydajnościowe i jeśli na maszynie docelowej program będzie za wolny (w końcu to gtk+ nie jest demonem szybkości), to zastanowię się nad migracją na FLTK. Dodatkową zaletą byłby całkowicie obiektowy interfejs :)
Back to top
   
pietrek345
Poziom 14
Poziom 14


Joined: 30 Jun 2005
Posts: 155
Location: Przemyśl

Post#14 27 Mar 2009 18:06   

Re: Linlamp - DS18B20 dla linuksa


Witam,
Mam takie pytanie czy istnieje możliwość uruchomienia tego programu pod jakieś mini distro? jak by się dało jeszcze to zmieścić na jednej dyskietce to było by po prostu lepiej niż wspaniale :D
Back to top
   
_tad_
Poziom 8
Poziom 8


Joined: 07 Jun 2006
Posts: 27

Post#15 Post from the author of the topic 30 Mar 2009 05:59   

Re: Linlamp - DS18B20 dla linuksa


pietrek345 wrote:
Witam,
Mam takie pytanie czy istnieje możliwość uruchomienia tego programu pod jakieś mini distro? jak by się dało jeszcze to zmieścić na jednej dyskietce to było by po prostu lepiej niż wspaniale :D


Dzięki za zainteresowanie, myślałem, że już temat umarł :)
Pomyślę nad tym, ale na jednej dyskietce to się chyba nie da - potrzebny jest serwer X i Gtk....
Jest to kolejny argument za przejściem na FLTK lub cos podobnego, albo jeszcze mniejszego.
Zastanowię się nad możliwościami napisania tego bez użycia Xów :) - może FLTK + directfb ?
Nie wiem tylko, czy port FLTK na directfb dobrze działa i daje te same możliwości co podstawowa wersja....
Back to top
   
pietrek345
Poziom 14
Poziom 14


Joined: 30 Jun 2005
Posts: 155
Location: Przemyśl

Post#16 30 Mar 2009 10:27   

Re: Linlamp - DS18B20 dla linuksa


niestety nie znam się na programowaniu i nic nie doradzę :cry:

a dało by się tak zrobić np: na 2~3? dyskietkach które wkładało by się po kolei i ładowały się do pamięci ram? coś jak np: muLinux
Back to top
   
Google

Google Adsense


Post# 30 Mar 2009 10:27   





Back to top
   
_tad_
Poziom 8
Poziom 8


Joined: 07 Jun 2006
Posts: 27

Post#17 Post from the author of the topic 30 Mar 2009 22:20   

Re: Linlamp - DS18B20 dla linuksa


muLinux wygląda obiecująco :)
Nie spodziewałem się linuxa z X-ami na dyskietce ;-)
Mimo wszystko Gtk na dyskietkę się nie zmieści, co wymusza przepisanie tego programu na FLTK.
Przepisanie wymaga prawdopodobnie około jednego roboczotygodnia....
Poza tym niektóre operacje mogą być trudne do zaimplementowania (np. nie wiem, czy w FLTK jest jakiś widget do wyboru koloru)
Od pewnego czasu zastanawiam się nad tym krokiem (przejście na FLTK), ale po pierwsze jeszcze długo nie będę miał wolnego roboczotygodnia, a po drugie w Gtk łatwiej taki program napisać ze względu na większą liczbę widgetów.
Myślę, że dzięki FLTK program mógłby być bardziej użyteczny i dodaję to zadanie do listy zadań do zrobienia, ale lista jest długa, a moje możliwości niewielkie :)
A mam jeszcze dwie listy: zadania do zrobienia na dziś i na wczoraj ;-)
Back to top
   
madar50
Poziom 9
Poziom 9


Joined: 12 Dec 2004
Posts: 33
Location: Białystok

Post#18 04 Nov 2009 14:19   

Re: Linlamp - DS18B20 dla linuksa


Witam
Już kilka razy przymierzałem się do linuxa, i za każdym razem coś mi nie pasowało z programami jakie obsługuje linux, a między innymi Lämpömittari, który to jest moim podstawowym programem do odczytu temperatur. Jak widzę, jest nadzieja, że to się zmienia i będę mógł korzystać z Linuxa. Wpadł mi w ręce Ubuntu 11, i uruchomiłem go z płytki. Miłe zaskoczenie. Od razu, bez konfiguracji zadziałał internet. Teraz widzę, że Lämpömittari będzie działał w Linuxie i to jest jak dla mnie dobra wiadomość. Jeśli można, to proszę o szczegółowe wskazówki (na dzień dzisiejszy), bo jestem laikiem w tych sprawach.
_tad_, dziękuję za zainteresowanie się tym tematem.

Pozdrawiam
Back to top
   
Post new topic  Reply to topic      Main Page -> Forum Index -> DIY Structures -> Linlamp - DS18B20 dla linuksa
Statement for Wykop Statement for Facebook Statement for Delicious Statement for Digg Statement for Google Statement for Twitter Statement for Blip
Page 1 of 1
Similar topics
Sezen - nowy menadżer plików dla Linuksa (5)
Analizator logiczny 8- kanałowy dla linuksa i Windowsa (2)
Czy Canon nie chciał napisać sterowników dla Linuksa? (4)
Sterownik dla PIC18F4550 pod linuksa (2)

Page generation time: 0.939 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed