Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Google ha appena rinnovato la sua celebre serie A con il Pixel 10a, lo smartphone della serie più conveniente se consideriamo il rapporto tra costo e prestazioni. Con il chip Tensor G4, un design raffinato soprattutto sul retro e l'integrazione profonda di Gemini, il colosso di Mountain View promette un'esperienza premium a un prezzo accessibile. E il retro non ha nessuno scalino
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026
Al MWC Qualcomm annuncia una coalizione industriale per lanciare il 6G entro il 2029 e introduce agenti IA per la gestione autonoma della RAN. Ericsson, presente sul palco, conferma la direzione: le reti del futuro saranno IA-native fin dalla progettazione
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air è un ultraleggero da 1 kg con Ryzen 5 6600H, display 14" 16:10 e 16 GB LPDDR5. Offre buona portabilità, autonomia discreta e costruzione in alluminio, ma storage PCIe 3.0 e RAM saldata limitano l'espandibilità. A 549 euro sfida brand più noti nella stessa fascia di mercato.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-04-2004, 11:13   #1
Stobby
Member
 
Iscritto dal: May 2003
Città: Monza
Messaggi: 175
Come catturare gli interrupt da tastiera con C?

Ciao a tutti!
Ultimamente sto scrivendo un programmino in C che, tra le tante funzioni, ha la necessità di catturare un Interrupt dato da tastiera (es la pressione di un determinato tasto) in Run Time (ad esempio, per fermare un conto alla rovescia)
E' possibile? Che funzioni posso invocare? A che librerie devo fare riferimento?

Ciao!
__________________
Ciao!
Stobby è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2004, 11:17   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Sotto Windows non puoi accedere direttamente a queste cose (a meno che tu non stia programmando per DOS)... L'unica cosa è usare le API ed intercettare un messaggio WM_KEYDOWN e dopo verificare il tasto premuto...
Per effettuare il countdown puoi inizializzare un timer che ti controlla l'orologio di sistema ogni decimo di secondo (mettere un timer ogni secondo è probabilemnte meno preciso (non c'è garanzia di esecuzione entro quell'intervallo preciso, quindi dopo 100 conteggi potrebbero anche essere passati 101 secondi )...

Ultima modifica di cionci : 18-04-2004 alle 11:20.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2004, 11:20   #3
Stobby
Member
 
Iscritto dal: May 2003
Città: Monza
Messaggi: 175
e sotto LInux?
__________________
Ciao!
Stobby è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2004, 11:44   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Se lo dicevi prima

Con le ncurses:
http://vlsm.org/linux-archive/i6/msg00210.html

Guarda il ciclo (quel while(1))...
Esce quando c (il carattere letto) è un carattere valido (ovviamente la parte importante che ti permette di fare così è quella sopra, altrimenti la getch sarebbe bloccante)...
In pratica tu farai un ciclo del genere:
Codice:
time_t told, tnew;
time(&told);
while(conteggio < MAX)
{
   sleep(10); /*oppure fai lavorare la tua appplicazione*/
   time(&tnew);
   conteggio += (int)difftime(tnew, told);
   told = tnew;
   if((c = getch()) != ERR) break; /*se è un tasto valido esco dal ciclo*/
}
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2004, 11:46   #5
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Altro link utile:
http://www.linuxquestions.org/questi...threadid=34027

Questa è una cosa diversa...disattiva il line buffering dello stdin...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2004, 14:21   #6
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
Sotto linux potresti anche usare le syscall kill e signal
man 2 kill
man signal
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 19-04-2004, 01:48   #7
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Re: Come catturare gli interrupt da tastiera con C?

Quote:
Originariamente inviato da Stobby
Ultimamente sto scrivendo un programmino in C che, tra le tante funzioni, ha la necessità di catturare un Interrupt dato da tastiera (es la pressione di un determinato tasto) in Run Time (ad esempio, per fermare un conto alla rovescia)
E' possibile? Che funzioni posso invocare? A che librerie devo fare riferimento?
In C standard, non è possibile.
Questo semplicemente perché gli interrupt e la loro cattura dipendono dall'architettura hardware della macchina su cui gira il programma.
Consulta il manuale del compilatore.
Se stai lavorando sotto Windows o sotto Linux, segui anche i consigli degli altri utenti.

P.S.: Una cosa che si può fare in C standard, invece, è rilevare la pressione del tasto Invio.
Non è proprio così, in realtà, ma l'effetto del codice:
Codice:
while (getchar() != '\n')
    ;
è proprio quello di non fare niente finché non viene inserita da tastiera una sequenza di caratteri terminata da Invio, e poi scartarli tutti: il che è una simulazione accettabile della rilevazione della pressione del tasto Invio.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 19-04-2004, 03:18   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Re: Re: Come catturare gli interrupt da tastiera con C?

Quote:
Originariamente inviato da Ziosilvio
è proprio quello di non fare niente finché non viene inserita da tastiera una sequenza di caratteri terminata da Invio, e poi scartarli tutti: il che è una simulazione accettabile della rilevazione della pressione del tasto Invio.
L'attesa attiva (cioè quella in cui il processo che attende occupa inutilmente la CPU) non è mai accettabile
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-04-2004, 21:03   #9
Stobby
Member
 
Iscritto dal: May 2003
Città: Monza
Messaggi: 175
Qualche cosa di buono l'ho comunque trovata sfruttando le librerie non standard curses incluse in Linux... svolgono egregiamente (per quello che mi servono ora) il loro dovere

Grazie ragazzi!
__________________
Ciao!
Stobby è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta Recensione Google Pixel 10a, si migliora poco ma...
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026 6G, da rete che trasporta dati a rete intelligen...
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso CHUWI CoreBook Air alla prova: design premium, b...
Roborock Saros 20: il robot preciso e molto sottile Roborock Saros 20: il robot preciso e molto sott...
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm ASUS ROG Kithara: quando HIFIMAN incontra il gam...
Ray-Ban Meta, video privati visionati da...
Epic Games fa causa a un ex collaborator...
BYD Blade Battery di seconda generazione...
Pop Mart vs Bambu Lab: la battaglia lega...
Control Resonant entra nella fase alpha ...
1.040 Hz e tecnologia Mini LED: TCL sfid...
Smart retail: arrivano le soluzioni di H...
MOVA, guida all'acquisto per scegliere i...
Roborock Saros 20 X, arriva in Italia l'...
Mese nuovo e offerte di primavera: Amazo...
Amazon Warehouse e Seconda Mano: con le ...
Sony LinkBuds Clip sono le cuffie in ear...
Xbox, addio guide online? Microsoft vuol...
MindsEye sta morendo? Solo 19 giocatori ...
Collegare 10.000 GPU con la luce: la sco...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:08.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v