Torna indietro   Hardware Upgrade Forum > Software > Programmazione

PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è
La PNY GeForce RTX 5080 Slim OC si distingue nel panorama delle GPU di fascia alta per il design compatto a due slot, ispirato alla NVIDIA GeForce RTX 5080 Founders Edition. In questo test analizziamo comportamento termico e prestazioni in gioco, valutando se il formato ridotto comprometta o meno l'esperienza complessiva rispetto alle soluzioni più ingombranti presenti sul mercato.
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
HUAWEI WiFi Mesh X3 Pro Suite è probabilmente il router mesh più fotogenico che si possa acquistare oggi in Italia, ma dietro il guscio in acrilico trasparente e le luci LED dinamiche c'è una macchina tecnica costruita attorno allo standard Wi-Fi 7, con velocità teoriche Dual-Band fino a 3,6 Gbps e una copertura fino a 120 m² una volta abbinato il router principale all'extender incluso nel kit
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte
Abbiamo provato le nuove CPU Intel Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: più core e ottimizzazioni al funzionamento interno migliorano le prestazioni, anche in virtù di prezzi annunciati interessanti. A questo si aggiungono nuove ottimizzazioni software. Purtroppo, a fronte di prestazioni di calcolo elevate, il quadro rimane incerto nel gaming, dove l'andamento rimane altalenante. Infine, rimane il problema della piattaforma a fine vita.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-02-2007, 12:01   #1
HexDEF6
Senior Member
 
L'Avatar di HexDEF6
 
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
[C] conversione da byte ad intero e stampa

Sto programmando un PIC che fa alcune acquisizioni (campionamenti a 10 bit) e trasmette i dati sulla seriale, e fin qui tutto bene.
Adesso dovrei fare un programma lato pc che legga dalla seriale e mi scriva i dati in un file (o a schermo).
I dati trasmessi dal pic sono fatti da 2 byte alla volta e sono di due tipi:
il primo contiene:
2 bit per l'intestazione (per dirmi che tipo di dato sta arrivando), 4 bit che identificano il valore di un moltiplicatore (un multiplexer analogico... comunque non e' importante cosa sia al fine del programma), 2 bit di dato (i 2 bit meno significativi dell'acquisizione)
e il secondo byte contiene gli altri 8 bit del dato.

il secondo tipo di dato e' strutturato cosi:
2 bit per l'intestazione 6 bit di contatore e il secondo byte sono 8 bit di contatore (quindi i 6+8 bit sono un UNICO contatore a 14bit non 2 diversi!)

ho gia adattato un programma per poter leggere da seriale e stampare a video, ma ovviamente in questa maniera, vengono stampati i caratteri ascii del byte...
io vorrei avere a video qualcosa di un po piu' leggibile!
esempio:
al posto dei due bit di intestazione sapere se e' un dato o un contatore... e questo l'ho fatto.
il problema e' per i bit successivi se arriva 0000 per il moltiplicatore, mi piacerebbe stampasse 0, se arriva 0110 mi piacerebbe stampasse 6, e la cosa si fa ancora piu' complicata per gli altri 10 bit di dato o per i 14 bit di contatore, che dovrei mettere assieme e poi stampare.

La base che ho usato per programmare e' catty:
http://sourceforge.net/projects/catty/

e se volete dare un occhio (e non mi prendete troppo in giro per le schifezze che ho scritto ) vi allego pure le modifiche che ho fatto:
per ora il programma stampa i dati in binario (sempre meglio che il codice ASCII )...
il tutto sotto linux.

Domanda:
quando leggo il dato dalla seriale lo metto in un char, se questo char lo casto ad un unsigned int, e stampo l'int potrebbe funzionare?

Grazie e ciao!

P.S. lo so che il discorso e' tutto incasinato
P.P.S. le modifiche iniziano attorno alla riga 480 (nel processo figlio)
Allegati
File Type: gz catty.c.gz (7.1 KB, 1 visite)
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++.
HOWTO: SSH Firewall e DMZ
ɐɹdosoʇʇos oʇuǝs ıɯ
HexDEF6 è offline   Rispondi citando il messaggio o parte di esso
Old 05-02-2007, 12:57   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da HexDEF6
Domanda:
quando leggo il dato dalla seriale lo metto in un char, se questo char lo casto ad un unsigned int, e stampo l'int potrebbe funzionare?
Se hai bisogno di estrarre dei bit-field (campi di bit) da un valore, puoi usare questa semplice macro (che ho fatto io ):

#define BITFIELD(v,h,l) ((v) >> (l) & ((1 << (h)-(l)) - 1 | 1 << (h)-(l)))

Dove 'v' è il valore, e 'h' e 'l' sono rispettivamente il bit alto e basso (compresi) del campo di bit.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 05-02-2007, 12:58   #3
yorkeiser
Senior Member
 
L'Avatar di yorkeiser
 
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
Non c'ho capito nulla
Da cosa (1 byte, 2 bytes...) devi convertire e in cosa (un numero, una lettera) e cosa vuoi stampare a video? Prova a fare un esempio numerico magari. Se casti un char in un unsigned int hai il codice ASCII nell'unsigned int (tra l'altro il cast njon è neanche necessario)
__________________
Il sole è giallo
yorkeiser è offline   Rispondi citando il messaggio o parte di esso
Old 05-02-2007, 13:55   #4
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
ti consiglio una struttura a bit:
per il primo tipo di dato
Codice:
struct S1
{
   unsigned int Intest  : 2;
   unsigned int ValMolt : 4;
   unsigned int Dato1   : 2;
   unsigned int Dato2   : 8;
};
per il secondo:
Codice:
struct S2
{
   unsigned int Intest  : 2;
   unsigned int Cont    : 14;
};
quando hai l'indirizzo del dato di 2 bytes copi la memoria:
Codice:
   memcpy( &S1, &dato, sizeof(dato) );
per stampare usi
Codice:
   printf( "Intestazione: <%du>\n", S1.Intest );
SE ho capito bene quello che vuoi fare (hai ragione, il discorso é incasinato ) e se ho scritto giusto, ovviamente non ho testato
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 05-02-2007, 14:54   #5
HexDEF6
Senior Member
 
L'Avatar di HexDEF6
 
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
Intanto vi ringrazio per le risposte e per la pazienza di aver letto il groviglio di messaggio!


Quote:
Originariamente inviato da andbin
Se hai bisogno di estrarre dei bit-field (campi di bit) da un valore, puoi usare questa semplice macro (che ho fatto io ):

#define BITFIELD(v,h,l) ((v) >> (l) & ((1 << (h)-(l)) - 1 | 1 << (h)-(l)))

Dove 'v' è il valore, e 'h' e 'l' sono rispettivamente il bit alto e basso (compresi) del campo di bit.
Bella!, ma alla fine sono riuscito ad estrarre tutti i valori senza problemi con qualche shift e and....

Quote:
Originariamente inviato da yorkeiser
Non c'ho capito nulla
lo so sono un disastro nel farmi capire!

Quote:
Originariamente inviato da yorkeiser
Da cosa (1 byte, 2 bytes...) devi convertire e in cosa (un numero, una lettera) e cosa vuoi stampare a video? Prova a fare un esempio numerico magari. Se casti un char in un unsigned int hai il codice ASCII nell'unsigned int (tra l'altro il cast njon è neanche necessario)
esempio:

io lato seriale ricevo 2 byte, che possono essere formati in queste maniere:

11MMMMXX XXXXXXXX
00CCCCCC CCCCCCCC

se ha 11 come intestazione, il byte contiene 4 bit che identificano il moltiplicatore M e gli altri 10 bit X (2bit che sono i meno significativi + 1byte) che contengono il dato campionato;

se ha come intestazione 00, il resto dei dati contengono 16 bit di contatore C.

Supponiamo che mi arrivi questo:

11010001 00000000

Vuol dire, visto che i primi 2 bit di intestazione sono 11, che e' un dato contenente moltiplicatore (0100 = 4) + valore (0000000001 = 1). Quello che vorrei stampato a video è:

moltiplicatore = 4;
dato = 1.

Se il dato è del tipo:

00100000 00000000

ho solo un valore del contatore (10000000000000 = 32768) e quello che voglio a video è:

contatore = 32768.

Quote:
Originariamente inviato da trallallero
ti consiglio una struttura a bit:
per il primo tipo di dato
La struct mi sembra interessante, la provo subito.

Quote:
Originariamente inviato da trallallero
per stampare usi
Codice:
   printf( "Intestazione: <%du>\n", S1.Intest );
SE ho capito bene quello che vuoi fare (hai ragione, il discorso é incasinato ) e se ho scritto giusto, ovviamente non ho testato
Purtroppo non posso usare la printf perché siamo in un processo figlio e lo stdout è stato chiuso. Uso una write per scrivere sull'dup dello stdout.
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++.
HOWTO: SSH Firewall e DMZ
ɐɹdosoʇʇos oʇuǝs ıɯ
HexDEF6 è offline   Rispondi citando il messaggio o parte di esso
Old 05-02-2007, 16:34   #6
yorkeiser
Senior Member
 
L'Avatar di yorkeiser
 
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
Ah ecco, allora - nel caso riesci a tirare fuori solo i singoli bit e non li riesci a raggruppare, ad esempio in esadecimali - quello che ti serve è un convertitore binario->decimale; nel caso tu non abbia idea di come farlo, te ne illustro uno al volo:

Codice:
int esponente = 0;
int base = 2;
unsigned int numero_decimale = 0;
Parti dal bit meno significativo del numero binario
while (ci sono ancora bits)
{
numero_dec += (int)bit * (base^esponente);
Salta al bit successivo (da destra a sinistra del numero binario per intenderci);
esponente+=1; 
}
in uscita dal ciclo, ti trovi il binario convertito in decimale (nella variabile numero_decimale). Puoi sostituire base con qualsiasi numero vuoi, per ottenere un convertitore generico al posto del decimale
oops volevo dire binario
__________________
Il sole è giallo
yorkeiser è offline   Rispondi citando il messaggio o parte di esso
Old 05-02-2007, 18:34   #7
HexDEF6
Senior Member
 
L'Avatar di HexDEF6
 
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
alla fine ho risolto "banalmente" usando una sprintf
Codice:
sprintf (stampa, "%d", (unsigned int)moltiplicatore);
lunghezza = strlen (stampa);
write (oldstdout,stampa,lunghezza);
Grazie a tutti per le idee!
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++.
HOWTO: SSH Firewall e DMZ
ɐɹdosoʇʇos oʇuǝs ıɯ
HexDEF6 è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 08:01   #8
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da HexDEF6
alla fine ho risolto "banalmente" usando una sprintf
Codice:
sprintf (stampa, "%d", (unsigned int)moltiplicatore);
lunghezza = strlen (stampa);
write (oldstdout,stampa,lunghezza);
Grazie a tutti per le idee!
shiftature di bit, strutture a bit, conversioni binarie ... e tu alla fine fai una sprintf
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2007, 14:36   #9
HexDEF6
Senior Member
 
L'Avatar di HexDEF6
 
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
Quote:
Originariamente inviato da trallallero
shiftature di bit, strutture a bit, conversioni binarie ... e tu alla fine fai una sprintf

mi arrangio come posso!
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++.
HOWTO: SSH Firewall e DMZ
ɐɹdosoʇʇos oʇuǝs ıɯ
HexDEF6 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è PNY RTX 5080 Slim OC, sembra una Founders Editio...
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei Wi-Fi 7 con il design di una vetta innevata: ecc...
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte Core Ultra 7 270K Plus e Core Ultra 7 250K Plus:...
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu PC Specialist Lafité 14 AI AMD: assemblat...
Recensione Nothing Phone 4(a): sempre iconico ma ora più concreto Recensione Nothing Phone 4(a): sempre iconico ma...
L'AI agentica potrebbe trasformare Inter...
Qualcomm lancerà due chip per sma...
Xiaomi dà i numeri: ecco come &eg...
AMD annuncia Ryzen 9 9950X3D2 Dual Editi...
CyrusOne avvia la costruzione del suo pr...
Cloud in crescita, ma l’adozione dell’IA...
OpenAI cancella l'adult mode di ChatGPT:...
Google Search Live arriva in Italia: la ...
MacBook Air 15'' con chip M4 (2025) crol...
Ora è possibile trasferire file t...
Apple domina con il MacBook Neo: i lapto...
Arriva la nuova gamma di PC Dell Pro per...
DJI Avata 360: la recensione del primo d...
Il browser di Samsung arriva su Windows,...
I satelliti AI Sat Mini per i datacenter...
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: 02:28.


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