Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 10 mar 2026, o 09:19


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 10 wrz 2013, o 21:57 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 68
Pomógł: 0

Tworze projekt w ktorych chcialbym cos wyswietlac na lcd. W pierwszej lini caly czas wyswietla mi sie aktualny czas oraz zamiennie temp z 2 czujnikow(tak sobie zalozylem). Calosc dziala poprawnie na timerach bez uzycia ani jednego _deley_ms. Druga linia lcd sluzy do wyswietlania jakiegos tekstu. Wszystko dziala ok jezeli przeslany z telefonu tekst jest krotki (do 16 znakow). Chcialbym opracowac taki 'ficzer' ktory sprawdza, jezeli wyslany tekst na lcd jest dluzszy niz 16 znakow bedzie go przewijal co 1 sek w lewo. Zaczynajac realizacje powyzszego zalozenia napisalem funkcje jak ponizej
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Do funkcji przekazuje pierwszy element tablicy. Niezaleznie od tego jak dlugi jest tekst caly czas pokazuje sie on na lcd. Dlaczego przy zdaniu wiekszym niz 16 znakow pokazuje sie tylko jego poczatek zamiast napisu "duza wiadomosc" ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 wrz 2013, o 22:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lut 2013
Posty: 223
Zbananowany użytkownik

Pomógł: 21

sizeof zwraca wielkość zmiennej, a mes jest wskaźnikiem na zmienną typu char. Dlatego też sizeof(mes) da Ci zawsze 2 (bo taki jest rozmiar wskaźnika). Jest to jednak wskaźnik na string (w tym przypadku), więc możesz obliczyć ilość znaków stringa funkcją "strlen".

_________________
Nie pisz komentarzy - dobry kod komentuje się sam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 wrz 2013, o 23:07 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 68
Pomógł: 0

Z testow wyszlo dokladnie jak piszesz. Przypomnialem sobie cos o tablicach i zrobilem tak
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Obecnie prawie dziala jak powinno - tekst co 1 sek przesuwa sie w lewo obojetnie jak dlugi zostal wpisany. Po 9 sek calosc jest czyszczona (inna funkcja sprawdza modulo z sek_10). Jedynie co zostalo do zrobienia to pozbyc sie while i zastosowac int0_flag do przesuwania co 1 sek aby glowna petla nie byla blokowana. Tylko tutaj mam problem bo poczatkowo zakladalem, ze message_to_lcd bedzie wywolywana tylko jednorazowo przy wysylaniu czegos na lcd a teraz chciac pozbyc sie while bede musial ta funkcje caly czas wywolywac w glownej petli programu. Macie jakies lepsze na to rozwiazanie ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO