Newsgroup: it.comp.lang.vo-clipper
Titolo: Codici a barre

ho un annoso problema che adesso è diventato urgente,
creando i codici a barre EAN 13, riesco a stamparli, ma il lettore laser non 
li riconosce.
Per la precisione se faccio leggere un c odice a barre di una scatola di 
pelati lo riconoscere perfettamente, ma se lo stesso codice lo creo da 
programma e lo stampa sta muto comne un pesce.
Il fornitore del lettore mi dice che a creare i codici debbono essere delle 
apposite librerie dll.
qualcuno sa se per vo esiste qualcosa??
grazie a tutti

 apposite librerie dll.
E' una stupidaggine. Basta che le barre siano stampate bene.
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg
The EMG Music page:         
http://www.emagsoftware.it/emgmusic
 

 ha scritto nel 
messaggio news:45e46655$0$10629$4faf...@reader2.news.tin.it...


 ha scritto nel 
messaggio news:45e46655$0$10629$4faf...@reader2.news.tin.it...


 con la fonte del barcode.
E' vero, ma il risultato sarebbe comunque leggibile, anche se, ovviamente, 
darebbe un codice diverso. Invece Francesco non riesce proprio a leggerlo il 
che probabilmente indica un altro problema. In ogni modo, questa è la routine 
di conversione che uso io:
FUNCTION EAN13CNV( cBarCode )
    LOCAL aV1 := { { "a", "b", "c" },;
                   { "d", "e", "f" },;
                   { "g", "h", "i" },;
                   { "j", "k", "l" },;
                   { "m", "n", "o" },;
                   { "p", "q", "r" },;
                   { "s", "t", "u" },;
                   { "v", "w", "x" },;
                   { "y", "z", "A" },;
                   { "B", "C", "D" } }
    LOCAL aV2 := { "000000", "001011", "001101", "001110", "010011", "011001", 
"011100", "010101", "010110", "011010" }
    LOCAL cRes := LEFT( cBarCode, 1 )
    LOCAL cCod := VAL( LEFT( cBarCode, 1 ) )
    LOCAL i
    FOR i = 2 TO 7
        cRes += aV1[ VAL( SUBSTR( cBarCode, i, 1 ) ) + 1, VAL( SUBSTR( aV2[ 
cCod + 1 ], i - 1, 1 ) ) + 1 ]
    NEXT
    cRes += "G"
    FOR i = 8 TO 13
        cRes += aV1[ VAL( SUBSTR( cBarCode, i, 1 ) ) + 1, 3 ]
    NEXT
    cRes += "F"
    RETURN cRes


> E' vero, ma il risultato sarebbe comunque leggibile, anche se, ovviamente,
non non lo leggi se il codice di controllo dell'EAN13 non è calcolato 
correttamente , per il lettore
si tratta solo di barre e spazi larghi/stretti ...
Ciao Alessandro

 correttamente ,
Non ho modo di fare la prova ora e quindi non insisto. Quanto dici comunque 
spiegherebbe senz'altro il problema di Francesco.


se il codice che hai stampato è uguale a quello che è riportato sulla
scatola di pelati il check-digit è corretto e quindi il problema è da
ricercare nella risoluzione di stampa.
Ovviamente si presuppone che la unzione utilizzata per creare il barcode
sia esatta.
ciao bp
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel 
messaggio news:45e46655$0$10629$4faf...@reader2.news.tin.it...


 Quel che non riesco a leggere č il risultato a stampa.
Allora cerca di vedere se ci sono differenze con quello della scatoletta di 
pomodori. Magari quest'ultimo č piů nitido oppure ha le barre o gli spazi piů 
larghi.


ad ogni buon conto effettua meglio il calcolo del check-digit con la
funzione che utilizzo ormai da svariato tempo.
FUNCTION CheckDigit(BarCode,cOpz)
   LOCAL BarOld AS STRING
   LOCAL S1     AS INT
   LOCAL S2 	AS INT
   LOCAL S3 	AS INT
   LOCAL xVal	AS USUAL
   LOCAL S4     AS INT
   *
   Default(@cOpz,'S')
   *
   BarOld := Left(Str(Val(BarCode),13),12)
   S1   := 0
   S2 	:= 0
   S3 	:= 0
   xVal	:=	""
   S4     := Val(Right(BarCode,1))
   *
   S1 += Val(SubStr(Barcode,1,1))
   S2 += Val(SubStr(Barcode,2,1))
   *
   S1 += Val(SubStr(Barcode,3,1))
   S2 += Val(SubStr(Barcode,4,1))
   *
   S1 += Val(SubStr(Barcode,5,1))
   S2 += Val(SubStr(Barcode,6,1))
   *
   S1 += Val(SubStr(Barcode,7,1))
   S2 += Val(SubStr(Barcode,8,1))
   *
   S1 += Val(SubStr(Barcode,9,1))
   S2 += Val(SubStr(Barcode,10,1))
   *
   S1 += Val(SubStr(Barcode,11,1))
   S2 += Val(SubStr(Barcode,12,1))
   *
   S3 := 10-Val(Right(Str(S1+(S2*3)),1))
   *
   IF S3 == 10
      S3 := 0
   ENDIF
   *
   IF cOpz == 'S'
      xVal := BarOld+LTrim(Str(S3))
   ELSE
      xVal := IF(S3==S4,.T.,.F.)
   ENDIF
   *
RETURN xVal
CIAO BP


 ha scritto nel 
messaggio news:45e5a30f$0$17951$4faf...@reader1.news.tin.it...


comunque tieni presente che il font non nulla a che fare perchè lo scanner
decodifica le barre non le cifre che vengono stampate. Quelle servono solo
per essere identificate visivamente.
Il barcode che larghezza ha?
potrebbe essere troppo stretto. Prova ad allargarlo. L'altezza non ha molta
importanza. In passato ho stampato strisce di barcode che stavano su una
sigaretta eppure lo scanner se le beveva tranquillamente.
Solo la larghezza mi dava dei problemi.
 ciao


 li riconosce.
Fai una cosa ... se puoi.
Scannerizza in alta risoluzione l'etichetta che stampi e che non ti 
legge e mandamela per mail (il mio indirizzo e' valido).
Ormai ho fatto molta pratica sui barcode :)
-- 
===============================================================
Alberto Rubinelli - A2 SISTEMI 
news.bbip.it
 ThunderBird 1.5.0.9
Via Costantino Perazzi 22 - 28100 NOVARA - ITALY
Tel 0321 640149   Fax 0321 391769   BBS 0321 392320
Mail: 
alb...@oldcomputers.de
skype: albertorubinelli  ICQ : 49872318
Visita il mio museo di computers: 
http://www.oldcomputers.it
===============================================================