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



Teraz jest 8 sty 2025, o 09:11


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 24 wrz 2016, o 13:26 
Offline
Użytkownik

Dołączył(a): 09 cze 2015
Posty: 39
Pomógł: 0

Witam.
Chcę, żeby po wciśnięciu i przytrzymaniu przez 10 sekund klawisza na klawiaturze w terminalu wyświetlił się dany napis.


Ale wyrzuca mi błąd.
error: 'PressActive' undeclared (first use in this function)

Jest ktoś w stanie podpowiedzieć jak to rozwiązać?


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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 wrz 2016, o 14:00 
Offline
Użytkownik

Dołączył(a): 08 mar 2015
Posty: 60
Pomógł: 5

Przecież ten błąd wyraźnie mówi, że nie masz zdeklarowanej zmiennej "PressActive". Zdeklaruj ją na początku jako zmienna typu bool i chyba powinno być "PressActive == true" zamiast "PressActive = true"



Ostatnio edytowano 24 wrz 2016, o 14:01 przez anonimg3, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 wrz 2016, o 14:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

kompilator nie wie co to press active. i słusznie bo ja też nie wiem. To zmienna?? funkcja, której nie pokazałeś??

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 wrz 2016, o 14:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 kwi 2014
Posty: 438
Lokalizacja: Zambrów
Pomógł: 22

Jitkino napisał(a):
Ale wyrzuca mi błąd.
error: 'PressActive' undeclared (first use in this function)


Jak sam kompilator Ci podpowiada nie masz zadeklarowanej zmiennej PressActive.

Musisz przed użyciem jej w "if (PressActive = true);" zadeklarować ją, czyli podać jej typ i wartość początkową jeżeli nie jest to zmienna globalna.

Dodatkowo dziwny jest ten warunek PressActive = true bo chce przypisać on wartość true do zmiennej zamiast sprawdzić czy ona się równa true czyli powinien być operator porównania == według mnie.

W część merytoryczną nie zagłębiałem się :)

heh koledzy mnie ubiegli - prędkość światła :P

_________________
.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 wrz 2016, o 14:19 
Offline
Użytkownik

Dołączył(a): 09 cze 2015
Posty: 39
Pomógł: 0

Dzięki za pomoc.

case 'a':
delay(10);
if (PressActive == true);

Chcę, żeby po wciśnięciu a przez 10 sekund, w terminalu wyświetlił się napis.

case 'a': // po wciśnięciu a
delay(10); //przez 10 sekund
if (PressActive == true); // tutaj chcę sprawdzić czy po 10 sekundach klawisza 'a' jest nadal wciśnięty.
i wtedy wysyłać ten napis do terminala
send_string("Wcisnieto klawisz A\r\n");

Dobrze kombinuję?

Czyli bym musiał wpisać coś takiego?
bool PressActive = true;
if(PressActive == true)
{
send_string("Wcisnieto klawisz A\r\n");
}



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 wrz 2016, o 14:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

Troszeczkę w dobrym kierunku ale nie do końca...

co to jest delay(10)?
Pomijając to, że blokujesz procka na 10 czegoś - sekund?? za każdym obiegiem pętli to niemożliwe jest trafić na takt zegara w którym akurat jest sprawdzany warunek press active - nie pokazujesz nawet jak go sprawdzasz i gdzie...

Zastanów się co będzie jak nadusisz klawisz, po sekundzie go puścisz i za np siedem sekund znów przytrzymasz... Będzie nic. Tak jakbyś go cały czas trzymał.

Ale najpierw pokaż więcej kody bo te strzępy to trochę mało... Albo daj jakieś założenia - co ustawia to pressActive, gdzie, kiedy

I pamiętaj -DELAJE TO ZŁOOOOO

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 wrz 2016, o 14:41 
Offline
Użytkownik

Dołączył(a): 09 cze 2015
Posty: 39
Pomógł: 0

Chcę, aby po wciśnięciu klawisza i przytrzymaniu przez 10 sekund wysyłany był napis do terminala.

if(klawisz wcisniety) { delay(10s)} if(klawisz nadal wcisniety ) {wyslij napis();}

Chcę, sprawdzić czy klawisz jest wciśnięty i po 10 sekundach sprawdzić znowu czy klawisza jest nadal wciśnięty, następnie wysłać wtedy napis do terminala.

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 wrz 2016, o 14:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

Nie możesz podejść tak, że sprawdzasz czy klawisz wciśnięty i czekasz 10 sek i sprawdzasz drugi raz. A co jak po sprawdzeniu puścisz klawisz i przed upłynięciem 10 sekund ponownie nadusisz?? program sprawdzi dwa razy że klawisz wduszony i wykona warunek.

sprawdzaj częściej kalwisz, najlepiej cały czas a co na 1sek zwiększasz zmienną pomocniczą. Po dojściu zmiennej do 10 wykonuje się warunek a po każdym puszczeniu klawisza zmienna zostaje wyzerowana i liczy od nowa...

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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