Pages: 1 [2] 3 4 5   Go Down
Author Topic: Librerie per il calcolo del CRC16 e CRC32  (Read 3966 times)
0 Members and 1 Guest are viewing this topic.
Roma (RM)
Offline Offline
God Member
*****
Karma: 3
Posts: 634
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok compila anche per attiny85, non l'ho ancora provato.
Logged


Switzerland
Online Online
Faraday Member
**
Karma: 111
Posts: 5883
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok compila anche per attiny85, non l'ho ancora provato.

Mah ... sai, l'unico problema è sulle piattaforme dove NON è (ancora) rilasciata la avr/pgmspace.h , perché, per il resto, è C puro ... smiley-wink

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

Roma (RM)
Offline Offline
God Member
*****
Karma: 3
Posts: 634
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Un paio di domande.

Inserendo questa libreria nel mio sketch mi sono sorti un paio di dubbi:

  • Il primo è un pò OT, ho scoperto, forse copiato involontariamente, che utilizzavo un tipo di dato "unsigned char", e per questo non compilava, ma che differenza c'è tra un "unsigned char" ed un "char", lo capisco con i tipi di dato numerici ma con i char...;
  • Il secondo invece riguarda questa libreria, ma come mai gli devo dare la lunghezza come secondo parametro? Di che lunghezza parliamo?
« Last Edit: April 18, 2013, 01:06:57 pm by erpomata » Logged


Switzerland
Online Online
Faraday Member
**
Karma: 111
Posts: 5883
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

1. Bé, come dice il nome, il "char" è segnato e va da -128 a +127, mentre l' "unsigned char" non è segnato e va da 0 a 255, comunque ... sempre un byte occupa smiley-wink

2. Il primo parametro è il puntatore a ciò di cui vuoi calcolare il CRC, il secondo indica quanti bytes è lungo ciò di cui vuoi calcolare il CRC ... semplice no ? smiley

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

Roma (RM)
Offline Offline
God Member
*****
Karma: 3
Posts: 634
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok grazie.
Ma la lunghezza non può ricavarsela dalla stringa passata in ingresso?
Logged


Switzerland
Online Online
Faraday Member
**
Karma: 111
Posts: 5883
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

... smiley ... e mica serve solo a calcolare CRC di stringhe ... le funzioni vedono solo sfilze di bytes, che poi siano array di char[], byte[], di int[], di double[] o di float[] ... "nun glié ne po' fregà de meno" ... basta che gli dici quanti bytes sono e quella calcola smiley-grin
Logged

Search is Your friend ... or I am Your enemy !

Roma (RM)
Offline Offline
God Member
*****
Karma: 3
Posts: 634
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ottimo  smiley-grin ma mi ci vorrà un pò per capirlo  smiley-eek-blue
Logged


Switzerland
Online Online
Faraday Member
**
Karma: 111
Posts: 5883
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ma guarda è semplice ... immaginalo come una "firma" di un qualche cosa che un blocco di byte. Se tu vuoi essere sicuro che quel blocco di dati è proprio lui, confronti il CRC prima e dopo ... se è uguale, e sicuramente (... va bé ... diciamo con molta, molta probabilità) lui.

Esistono ovviamente algoritmi molto più complessi e sicuri (es. MD5), ma sono molto più pesanti e il CRC32 è già una bella sicurezza smiley
Logged

Search is Your friend ... or I am Your enemy !

Roma (RM)
Offline Offline
God Member
*****
Karma: 3
Posts: 634
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ahah si scusa non ci siamo capiti.
Lo so cosa è il crc(16/32) o l'md5, quello che mi rimane difficile è capire quanti byte occupa ciò di cui  voglio il crc.

Ancora qualche domanda:
ma per la lunghezza non si potrebbe usare la funzione "sizeof"?
se volessi continuare ad usare gli "unsigned char" dovrei riscrivermi le funzioni? o sbaglio qualcosa?
Logged


Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 110
Posts: 6974
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si è possibile, ma poi per ogni tipo passato dovresti crearti una funzione apposita con overloading o utilizzare un template.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Switzerland
Online Online
Faraday Member
**
Karma: 111
Posts: 5883
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

... si, forse si potrebbe anche usare il sizeof() ... ma così al volo ... non ricordo se è applicabile a tutti, tutti i casi (comprese le strutture e quant'altro) ...  smiley-roll

Per gli unsigned char ... usali pure e passali con un bel cast davanti  smiley-lol

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

Roma (RM)
Offline Offline
God Member
*****
Karma: 3
Posts: 634
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok grazie per ora basta domande e domani all'opera.
Preparatevi  smiley-grin
Logged


0
Offline Offline
Newbie
*
Karma: 0
Posts: 38
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao scusate, ma da dove scarico la libreria e gli esempi?

Ho l'ide 1.0.5 e non la trovo!  smiley-cry
Logged

Switzerland
Online Online
Faraday Member
**
Karma: 111
Posts: 5883
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

... i due moduli sono in uno zip allegato al primo post di questo thread smiley-wink

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

0
Offline Offline
Newbie
*
Karma: 0
Posts: 38
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok, trovata.
Ho copiato la cartella in arduino/libraries ma quando vado a compilare l'esempio mi da tanti warning? Dove sbaglio?
Logged

Pages: 1 [2] 3 4 5   Go Up
Jump to: