EAN13 hazırlanan barkodun okuyucu tarafından tanınmaması

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

EAN13 hazırlanan barkodun okuyucu tarafından tanınmaması

Mesaj gönderen Biltes »

Arkadaşlar öncelikle herkese merhaba,

Son derece ciddi ilginç bir sorun ile karşı karşıya geldim ve kaldım. Sorunum şu; EAN 13 tipindeki barkod etiketlerinin okunmaması, Kullandığım cihaz okuyucu olarak ZEBEX 6070 2400 çözünürlükle okuyor, şimdi deceksiniz bu okuyucudan kaynaklanır ama hayır arkdaşlar kesinlikle deil. Sorun şu ürünlerin kendi üzerindeki gerçek barkod numaralarını gayet güzel okuyor problemsiz ama benim aşağıdaki kod ile barkodu olmayan ürünlere oluşturduğum barkodları okumuyor.

Kod: Tümünü seç

var
 s : string;
 i : integer;
begin
 s:='';
  for i:=1 to 13 do
  s:=s+inttostr(random(10));
  dxEdit5.Text := s;
Yani oluşturulan EAN 13 barkod tipinde bir sorun oluyor yada bunun gerçek mantığına uymuyor üretilen rakam. Amacım bu sorunu çözebilmek. Daha önceden forumda bunla ilgili bir fonksiyon hazırlanmış ama fonksiyonun nasıl kullanılabileceğini çözemedim. Gerek bu fonksiyon ile gerekse dyukarıdaki kod ile bu sorunu nasıl çözebilirim.

Bahsettiğin konu link aşağıdadır.
viewtopic.php?t=12630&start=0&postdays= ... +okuyamama

Yardımlarınız için çok tşk ederim. Kolay gelsin arkadaşlar...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

rastgele sayıdan oluşturduğunuz barkod barkod olmaz, numarayı check ettirmeniz yani geçerli olup olmadığını kontrol ettirmeniz lazım.
Bunun için fastreportun barkod nesnesinde numarayı yazıp kontrol ettirebilirsiniz.
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Evet hocam onu anladım rastgeleden barkod numarası olmaz ama bunu müşteri her seferinde yapamaz ki bu butonun altına yazdığımız kod üreticisinin nasıl doğru barkod üretmesini sağlarız. Yada bu barkod numarasını oluşturan kod bloğu nedir?

İlginiz için tşk ederim.
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

size ipucu olur
http://gs1.tobb.org.tr/gtin13.php
http://barkod.8m.com/

Formül ise şöyle;
1-) İlk 12 rakamı sırasıyla 1 ve 3 ile çarpıyorsunuz,
2-) Çıkan sayıları topluyorsunuz,
3-) Topladığınız sayıyı 10'a bölüyorsunuz,
4-) Bölümden kalan ondalık kısım 0 ise bunu 0 olarak alıyorsunuz 0'dan büyükse 10' dan çıkartarak kalan kısmı alıyorsunuız işte bu digit 13. digit olan kontrol numarasıdır.
Kolay gelsin
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@White Rose yazdı:Formül ise şöyle;
1-) İlk 12 rakamı sırasıyla 1 ve 3 ile çarpıyorsunuz,
- Burada yanlış anlaşılma olabilir diye bir ekleme yapayım...

EAN13 için
12 hane rakamdan tek hane numaralı rakamların toplamları, çift hane numaralı rakamların her birnin 3 katının toplamı ayrı ayrı değerlendirilir.

Kod: Tümünü seç

Function Calculate_EAN13( Bar12Hane:String ):String;
Var
  tek_toplam,
  cift_toplam,
  tum_toplam,
  i : Integer;
begin
  tek_toplam  := 0;
  cift_toplam := 0;
  tum_toplam  := 0;
  For i := 1 to Length(Bar12Hane) do begin
     If i mod 2 <> 0
       then tek_toplam  := tek_toplam  + (StrToInt(Bar12Hane[i])*1)
       else cift_toplam := cift_toplam + (StrToInt(Bar12Hane[i])*3);
  end;
  tum_toplam    := 10 - ((tek_toplam+cift_toplam) mod 10);
  If  tum_toplam = 10 then tum_toplam := 0;
  Result := Format('%d', [tum_toplam]);
end;
Resim
Resim ....Resim
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Hocam çok afedersiniz ama inanın kafam durmuş durumda halen daha barkod numarasını oluşturabileceğim bir kod yazamadım :(

İlginiz için çok tşk ederim...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Kısaca 12 haneli bir kod oluşturacaksın en sonuna bu fonksiyonun ürettiği tek haneli kodu ekleyeceksin, EAN13 uyumlu barcode'un olmuş olacak
Resim
Resim ....Resim
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

hocam bu fonskiyonun kullanımı doğrumu? Bu derece acaip hassaslaştık artık sorun çıkması die sürekli sorma ihtiyacı duyar oldum.

Kod: Tümünü seç

  Edit1.Text :=  Calculate_EAN13(Edit1.Text);
Buraya 1 yazarsam 9 geliyor, 3 yazarsam 7 geliyo doğrumudur hocam.

Yardımlarınız için çok tşk ederim. Hakkınızı ödeyemem bu konuda.
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Hocam aşağıdaki gibi olacak...

Kod: Tümünü seç

Var
  Kod : String;
begin
  Kod := '123456789012';
  Kod := Kod + Calculate_EAN13( Kod );
  Showmessage('Barkod : ' + Kod );
end;
şeklinde...
Resim
Resim ....Resim
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Hocam aynen dediğiniz gibi yaptım ve oldu. İnanın nasıl tşk edeceğimi bilmiyorum. İlginiz için çok tşk ederim.

Allah işlerinizi rast getirsin. Hoşçakalın...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Cevapla