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



Teraz jest 14 gru 2024, o 00:48


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
Autor Wiadomość
PostNapisane: 22 kwi 2015, o 18:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 lut 2014
Posty: 123
Lokalizacja: Świętokrzyskie
Pomógł: 0

Witam

Mam skonfigurowaną komunikację RS232 przez bluetooth. Od strony technicznej wszystko działa - mogę wyświetlać napisy na lcd i z procka na konsoli Putty.

Uczę się transmisji, więc proszę o wyrozumiałość.

Stworzyłem mały programik w Bascomie do wyświetlania czasu z PCF8583. Chciałem zmieniać np. godzinę wpisując ją w konsoli.

Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


I teraz wygląda to tak, że mogę wprowadzić wartość godziny od 0 do 9, a jak chcę wpisać np. godzinę 22, to wpisuje się 02.
Pewnie coś źle robię, tylko co?

Z góry dziękuję za wszystkie porady.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2015, o 18:27 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Nie widzę w tym kodzie dołączania drugiego znaku do stringa. A wprowadzanie danych najlepiej kończyć klawiszem Enter:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2015, o 18:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 lut 2014
Posty: 123
Lokalizacja: Świętokrzyskie
Pomógł: 0

Niestety nie wpisuje się poprawna wartość. Np. wpisując 23, na lcd wyświetla się 71.
Ale da się już wpisywać liczbę 2-cyfrową.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2015, o 19:38 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Wykorzystaj Print do debugowania jak w tym poprawionym (mam nadzieję) fragmencie:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2015, o 20:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 lut 2014
Posty: 123
Lokalizacja: Świętokrzyskie
Pomógł: 0

Teraz działa:)

A gdybym chciał zmienić godziny i minuty, to jak rozdzielić te dane?

I powiedz mi jeszcze co oznacza ten zapis: H_str = H_str + Chr(Bufor)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2015, o 20:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 gru 2011
Posty: 186
Lokalizacja: Dublin
Pomógł: 8

Użyj split do rozdzielania.
koniecznie dodaj bufor odbiorczy bo widzę że go nie ma.
Zerknij na forum topic10798.html tam jest wszytko opisane

H_str = H_str + Chr(Bufor) to budowanie bufora (nie myl z buforem config Serialin = Buffered , Size = 20)

------------------------------------edit
zobacz tu topic10798.html#p122380


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2015, o 21:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 lut 2014
Posty: 123
Lokalizacja: Świętokrzyskie
Pomógł: 0

Będę musiał na spokojnie usiąść i poczytać to co jest w tych linkach i próbować coś napisać.
Myślałem, że to będzie łatwiejsze do zrozumienia.

Przecież jest zrobiony bufor odbiorczy w procedurze odczytaj_uart



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2015, o 21:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 gru 2011
Posty: 186
Lokalizacja: Dublin
Pomógł: 8

To jest łatwe.
Czego nie rozumiesz ?
Tak jest to bufor ale nie ten co trzeba na początku.
Bo uart odbiera zawsze nawet jak ty go nie sprawdzasz a sprawdzasz go dopiero przez ischarwating -co znaczy znak czeka wiec jak cos przyjdzie a nie będzie bufora to pójdzie w siną dal i procek nawet nie zareaguje.
Dlatego ustawiasz Config Serialin = Buffered , Size = 20 , tym 20 nie sugeruj się ta wartość jest troszkę mała.

pudełko_na_klocki = Waitkey()
If pudełko_na_klocki = 13 Then Exit Do 'jak enter wyjdź
H_str = H_str + Chr(Bufor)
wierza_z_klocków=wierza_z_klocków+Chr(pudełko_na_klocki)
Czyli tak jak byś budował wierze z klocków dodając kolejno klocek za klockiem ale tylko z pudełka.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2015, o 21:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 lut 2014
Posty: 123
Lokalizacja: Świętokrzyskie
Pomógł: 0

Chyba z przemęczenia mi się wszystko miesza. Będę próbował na spokojnie zrobić zapis godziny i minuty.
Mam nadzieję, że mogę liczyć na pomoc, bo jak znam siebie to na bank nie zadziała coś.

Czy muszę używać select case do zapisu najpierw godziny a potem minuty?
A w konsoli mam wpisywać: godzina spacja minuta i enter?



Ostatnio edytowano 22 kwi 2015, o 21:59 przez michał6201, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2015, o 21:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 gru 2011
Posty: 186
Lokalizacja: Dublin
Pomógł: 8

Pewnie że możesz liczyć na pomoc przeczytaj cały wątek do którego podałem link.
Dziś już idę spać ale jutro chętnie Ci pomogę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 kwi 2015, o 22:22 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

michał6201 napisał(a):
Czy muszę używać select case do zapisu najpierw godziny a potem minuty?
A w konsoli mam wpisywać: godzina spacja minuta i enter?

Możesz wpisać całość i rozdzielić czym chcesz, a potem rozbić to na kawałki:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Tak to można zrobić:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 kwi 2015, o 19:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 lut 2014
Posty: 123
Lokalizacja: Świętokrzyskie
Pomógł: 0

Zrobiłem to w ten sposób i działa:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 kwi 2015, o 20:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 gru 2011
Posty: 186
Lokalizacja: Dublin
Pomógł: 8

michał6201 To jest jeszcze źle nie mam jak przesłać filmu ale jak odpalisz symulator i zaczniesz wpisywać dane z teminala to zobaczysz że cała pamięć zapełnia się danymi z bufora
Musisz dodać kilka ważnych elementów na początek
HW stack
SW stack

Config Serialin = Buffered , Size = 20

jeszcze if stara sekunda <> nowa sekunda then
LCD .......
To po to żeby w nie wyświetlać za każdym obiegiem pętli Do ... loop bo będzie migać na wyświetlaczu.

Koniecznie trzeba czyścić bufor tzn te tab(1) ,(2),(3) bo to wypełnia cała pamięć aż do restartu procka

---------------------------------edit ------------------------
Dla zrozumienia buforowania zobacz na ten mały program jest on w helpie bascoma i demonstruje działanie bufora
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Uruchom to w symulacji bez $sim i z zaremowana linia Config Serialin = Buffered , Size = 20
Wciskaj szybki klawisze na klawiaturze w oknie terminala
Później dodaj ta linie
Config Serialin = Buffered , Size = 20
Teraz uruchom ponownie w symulacji tez bez $sim i wklepuj jakieś znaki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 kwi 2015, o 22:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 gru 2011
Posty: 186
Lokalizacja: Dublin
Pomógł: 8

Sprawdź to
Tylko prawdo podobnie jest tam błąd przy przypisywaniu S_temp do S ale to sobie sprawdzisz na żywym układzie.
Niestety dziś już nie mam więcej czasu więc sprawdź to co jest

Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



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: 14 ] 

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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO