Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-04-2004, 15:32   #1
NetTitus
Senior Member
 
Iscritto dal: Feb 2004
Messaggi: 443
Acquisizione caratteri da tastiera sotto linux

Salve a tutti!!

Ho un problema nell'acquisizione singola dei tasti premuti da tastiera con il C++ (G++ in ambiente linux).

Mi spiego, in Windows esiste una funzione fgetch() che "legge" un
carattere alla volta senza aspettare che premi invio.

In linux non esiste (non sono riuscito a trovare) una funzione simile che faccia al mio caso (infatti cin inserisce nello stream fino a quando premo invio ).

Cosa posso fare ??


Saluti
NetTitus è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2004, 15:36   #2
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
stdin è line-buffered, devi renderla char-buffered (ed opzionalmente non bloccante). v. man termios, in particolare tcsetattr.
Ho postato del codice su questo argomento diverso tempo fa; se non riesci a trovarlo ti do una mano.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2004, 15:43   #3
NetTitus
Senior Member
 
Iscritto dal: Feb 2004
Messaggi: 443
Grazie per l'aiuto che mi stai dando .

Ho trovato questo a riguardo

tcsetattr() sets the parameters associated with the termi-
nal (unless support is required from the underlying hard-
ware that is not available) from the termios structure
referred to by termios_p. optional_actions specifies when
the changes take effect:

Ma non ho capito bene cosa devo fare (mi sembra un po' complesso)

Saluti
NetTitus è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2004, 15:53   #4
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Codice:
struct termios new_tty;
struct termios old_tty;
tcgetattr(fileno(stdin), &old_tty);
new_tty = old_tty;
new_tty.c_lflag &= ~ICANON;
// Decommenta questa riga se vuoi togliere l'eco dei caratteri
// new_tty.c_lflag &= ~ECHO;
new_tty.c_cc[VMIN] = 1;
new_tty.c_cc[VTIME] = 0;
tcsetattr(fileno(stdin), TCSAFLUSH, &new_tty);
Ora stdin legge un carattere alla volta, ma è sempre bloccante. Se vuoi vedere quanti caratteri ci sono da leggere, esegui
Codice:
int cnt;
ioctl(fileno(stdin), FIONREAD, &cnt);
Per leggere un carattere, puoi usare una normale read (ricorda che se non ci sono caratteri in ingresso, è bloccante):
Codice:
char ch;
read(fileno(stdin), &ch, 1);
Ricorda ti ripristinare old_tty prima di terminare il programma.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2004, 16:43   #5
NetTitus
Senior Member
 
Iscritto dal: Feb 2004
Messaggi: 443
Grazie mille!!

Pero' ho un'altro problema : l'attesa di un carattere.

Es.
Pensa se devi creare un flipper che comandicon la tastiera in Linux se e' bloccante non riesci e gestire altri eventi che devi gestire continuamente (pensa al movimento della pallina) .

Esiste un modo in linux per gestire cio' ??

Come si puo' creare un'interfaccia ad eventi se c'e' una funzione bloccante ??

Saluti !
NetTitus è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2004, 16:54   #6
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
http://forum.hwupgrade.it/showthread...ighlight=getch

Scommetto che eri un utente Borland
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2004, 17:03   #7
NetTitus
Senior Member
 
Iscritto dal: Feb 2004
Messaggi: 443
Esatto !!

Eh la borland fa funzioni veramente efficenti e semplici per il programmatore.

Avresti dell'altro materiale a riguardo ??

Grazie mille per l'aiuto che mi hai dato finora.

Mi piacerebbe specializzarmi di piu' con il C++ in linux con compilatori freeware potenti.

Saluti!
NetTitus è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2004, 17:13   #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
Mi sembra che ci sia già abbastanza materiale...hai guardato nei link ?
Codice:
   #include <curses.h>
   
   int main(){
     WINDOW *w;
     int c;
   
     w = initscr();
   
     cbreak();          /* no line buffering */
     nodelay(w, TRUE);  /* make getch call non blocking */
   
     while(1){
       if((c = getch()) != ERR) break;   /* if(kbhit()) break; */
     }
   
     endwin();
     return 0;
   }
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2004, 19:32   #9
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da NetTitus
Pero' ho un'altro problema : l'attesa di un carattere.

Es.
Pensa se devi creare un flipper che comandicon la tastiera in Linux se e' bloccante non riesci e gestire altri eventi che devi gestire continuamente (pensa al movimento della pallina) .

Esiste un modo in linux per gestire cio' ??
Secondo te la ioctl che te la ho postata a fare?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Space Pioneer starebbe realizzando un pr...
SpaceX ritirerà ''a breve'' il Fa...
La Luna ha un nuovo cratere di grandi di...
ROG Cronox: ASUS alza l'asticella dei ca...
Lenovo annuncia nuovi sistemi per la vir...
M6 e M5 Ultra, i primi benchmark conferm...
La nuova falla della cybersecurity &egra...
The Blood of Dawnwalker, il sequel potre...
Colpiti i data center Amazon: irrecupera...
Google Wallet, nuova interfaccia in arri...
iPhone Duo, problemi di produzione per i...
Firefox diventa più veloce con PDF e JPE...
WhatsApp, arriva su iOS la nuova scorcia...
Snap presenta Specs: realtà aumentata, c...
SteamOS verso un cambiamento epocale: ar...
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: 01:33.


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