Les datamatrix
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Les datamatrix



  1. #1
    invitec6325482

    Les datamatrix


    ------

    Bonjour !

    j'ai un soucis avce les datamatrix alors pour ceux qui ne connaitraient pas ce sont des codes barres bidimensionnels.
    Je donc fais des recherches afin de comprendre comment coder un datamatrix.
    POur cela je me suis aider de ce document
    http://www.dilec.fr/document/Guide%2...x%20ECC200.pdf

    A la page 51 de ce document se trouve un exemple pour encoder un datamatrix.
    J'ai compris comment coder les données que l'on souhaite coder mais mon problème viens lorsqu'il s'agit de coder les codewords d'erreur. ils disent d'utiliser l'algoritme de reed solomon comme indiquer dans cette norme http://www.openbio.fr/pdf/iso16022.pdf
    page 61.
    J'ai utilisé ce code mais il ne marche (ou plutôt je n'arrive pas à le faire fonctionner).
    Vous pourriez m'aider ?

    Sinon j'ai également vu que l'on pouvait faire cette méthode pour obtenir les codewords d'erreur :

    u(x) = 142x^2 + 164x + 186 (ces 3 nombre sont ce que l'on veut encoder)
    x^5 * u(x) = 142x^7 + 164x^6 + 186^5 (on multiplie par x^5 car on souhaite trouver 5 codewords)

    g(x) est le polynôme "associé à la situation" (voir page 58 de la norme)
    g(x) = x^5 + 62x^4 + 111x^3 + 15x^2 + 48x + 228

    ensuite il est dit qu'il fau faire l'opération suivante

    x^5 * u(x) / g(x) = q(x) + r(x)
    avec q(x) le quotient de la division x^5 * u(x) / g(x) et r(x) le reste de cette même division et obtenir r(x) de la forme r(x) = r4 x^4 + r3 x^3 + r2 x^2 + r1 x + r0


    J'ai donc fais ce calcul

    x^5 * u(x) / g(x) =

    142x^7 + 164x^6 + 186^5
    ----------------------------------------
    x^5 + 62x^4 + 111x^3 + 15x^2 + 48x + 228

    après une longue division je tombe sur le résultat suivant
    q(x) = 142x^2 - 8640x + 1520104
    r(x) = -31289538x^4 - 57608760x^3 - 7419216x^2 - 22995072x - 118583712

    les coefficient de r(x) sont sensés me donner mes codewords d'erreurs hélàs, ils ne me donnent pas du tous les bons (la réponse attendue étant 114 25 5 88 102)


    Voilà j'espère avoir été assez clair mais si vous avez des questions n'hésitez pas.
    Merci d'avance.

    -----

  2. #2
    Zozo_MP

    Re : Les datamatrix

    Bonjour

    Votre sujet me semble plus proche de l'algorithmique que de la technologie pour le problème que vous décrivez.

    Je vous change de forum pour que vous ayez peut être de meilleurs réponses.

    Des modérateurs bienveillants vous réorienterons peut être encore.

    Cordialement

  3. #3
    invitec6325482

    Re : Les datamatrix

    Bonjour !

    je fais un petit up en vous mettant mon programme. si jamais vous appercevez des erreurs faites le moi savoir !

    en attendant vos réponses
    merci d'avance.

    Code:
     <Code>
    
    //int prod(int x, int y, int *log, int *alog, int gf);
    void ReedSolomon(int *wd, int nd, int nc, int gf, int pp);
    
    void main (void)
    {
    	int wd[3] ={7,8};
    	ReedSolomon(wd,3,5,28,301);
    }
    
    
    /* "prod(x,y,log,alog,gf)" returns the product "x" times "y" */
    
    int prod(int x, int y, int *log, int *alog, int gf) 
    {
    	if (!x || !y) return 0;
    	else return alog[(log[x] + log[y]) % (gf-1)];
    }
    /* "ReedSolomon(wd,nd,nc,gf.pp)" takes "nd" data codeword values in wd[] */
    /* and adds on "nc" check codewords, all within GF(gf) where "gf" is a */
    /* power of 2 and "pp" is the value of its prime modulus polynomial */
    void ReedSolomon(int *wd, int nd, int nc, int gf, int pp) 
    {
    	int i, j, k, *log,*alog,*c;
    	/* allocate, then generate the log & antilog arrays: */
    	log = malloc(sizeof(int) * gf);
    	alog = malloc(sizeof(int) * gf);
    	log[0] = 1-gf; alog[0] = 1;
    	for (i = 1; i < gf; i++) 
    	{
    		alog[i] = alog[i-1] * 2;
    		if (alog[i] >= gf) alog[i] ^= pp;
    		else log[alog[i]] = i;
    	}
    /* allocate, then generate the generator polynomial coefficients: */
    	c = malloc(sizeof(int) * (nc+1));
    	for (i=1; i<=nc; i++) c[i] = 0; c[0] = 1;
    	for (i=1; i<=nc; i++) 
    	{
    		c[i] = c[i-1];
    		for (j=i-1; j>=1; j--) 
    		{
    			c[j] = c[j-1] ^ prod(c[j],alog[i],log,alog,gf);
    		}
    		c[0] = prod(c[0],alog[i],log,alog,gf);
    	}
    /* clear, then generate "nc" checkwords in the array wd[] : */
    	for (i=nd; i<=(nd+nc); i++) wd[i] = 0;
    	for (i=0; i<nd; i++) 
    	{
    		k = wd[nd] ^ wd[i] ;
    		for (j=0; j<nc; j++) 
    		{
    			wd[nd+j] = wd[nd+j+1] ^ prod(k,c[nc-j-1],log, alog,gf);
    		}
    	}
    	free(c);
    	free(alog);
    	free(log);
    }
    Dernière modification par JPL ; 11/05/2011 à 17h41. Motif: Ajout de la balise Code pour la lisibilité

  4. #4
    invite7bf0abd9

    Re : Les datamatrix

    Bonjour,

    Avez-vous eu une réponse a votre question?
    Car je suis moi même dans le même problème.

    Bien à vous

  5. A voir en vidéo sur Futura
  6. #5
    invite4492c379

    Re : Les datamatrix

    hello,

    à propos du code ?
    Il contient effectivement une erreur. Je suppose que c'est une erreur d'utilisation d'un code non compris.
    On ajoute nc entiers à la fin du tableau wd ... la main déclare un tableau bien trop petit. Il aurait au minimum fallut déclarer int wd[8].

  7. #6
    invitecfb2b759

    Re : Les datamatrix

    Citation Envoyé par Galuin Voir le message
    Bonjour !

    j'ai un soucis avce les datamatrix alors pour ceux qui ne connaitraient pas ce sont des codes barres bidimensionnels.
    Je donc fais des recherches afin de comprendre comment
    coder un datamatrix.
    POur cela je me suis aider de ce document
    http://www.dilec.fr/document/Guide%2...x%20ECC200.pdf
    Car je suis moi même dans le même problème

Discussions similaires

  1. Vous connaissez les mûres, les céléri-raves, les pousses de bambou, ....
    Par Tropique dans le forum Science ludique : la science en s'amusant
    Réponses: 4
    Dernier message: 19/02/2011, 08h45
  2. Demande d'aide pour les TPE de première S: les séismes comment les prévenir et s'en protéger
    Par invite7999f2e2 dans le forum TPE / TIPE et autres travaux
    Réponses: 3
    Dernier message: 23/01/2009, 11h02
  3. Comment les gènes interragissent-ils les uns avec les autres ?
    Par invitef31b56f9 dans le forum Biologie
    Réponses: 19
    Dernier message: 26/02/2005, 11h48