Barkod okuyucu bip diyor. Ekranda bir şeyler beliriyor. Ama gelen veri beklediğiniz gibi değil: tireler yıldıza dönmüş, iki alan birbirine yapışmış, ya da Excel'de baştaki sıfır kaybolmuş.
Bu, barkodun okunmamasından tamamen farklı bir problem sınıfı. Orada sorun optikte — baskı, kontrast, sessiz bölge. Burada ise kod kusursuz okundu; bozulma, verinin okuyucudan uygulamaya giderken geçtiği katmanlarda oldu.
Bu yazıda o katmanları tek tek açıyoruz: veri hangi yollardan gidiyor, nerede bozuluyor, nasıl teşhis edilir ve nasıl düzeltilir.
Veri Okuyucudan Uygulamaya Nasıl Gider?

Üç yol var ve üçünün kırılma noktaları farklı:
- Klavye emülasyonu (HID) — cihaz kendini klavye gibi tanıtır, veri imlecin bulunduğu yere yazılır. En yaygın ve en kolay yol; bu yazıdaki sorunların çoğu da buradan çıkar.
- Seri port (COM emülasyonu) — cihaz sanal bir port üzerinden ham bayt gönderir. Klavye düzeninden etkilenmez, kontrol karakterleri olduğu gibi taşınır.
- SDK / doğrudan entegrasyon — cihaz uygulamaya olay olarak veri gönderir; ayrıştırma uygulama tarafında yapılır.
Bu seçimin satın alma tarafındaki karşılığını barkod okuyucu seçimi yazımızda ele almıştık. Burada odağımız cihaz alındıktan sonrası.
1. Noktalama İşaretleri Değişiyor: Klavye Düzeni Uyuşmazlığı

Bu, Türkiye'de en sık karşılaşılan ve en çok kafa karıştıran durum. Sebebi şu:
Okuyucu size karakter göndermez, tuş kodu gönderir. Klavye emülasyonu modunda cihaz "şu tuşa basıldı" bilgisini iletir; o tuşun hangi karaktere karşılık geldiğine işletim sisteminin klavye düzeni karar verir.
Okuyucular fabrika ayarında genellikle US klavye düzenine göre yapılandırılmış gelir. Bilgisayarınız Türkçe Q düzenindeyse, aynı fiziksel tuş farklı bir karakter üretir:
- US
-tuşu → Türkçe Q'da* - US
.tuşu → Türkçe Q'daç - US
,tuşu → Türkçe Q'daö - US
/tuşu → Türkçe Q'da. - US
;tuşu → Türkçe Q'daş
Yani 02-15-B-01 raf kodunu okuttuğunuzda ekrana 02*15*B*01 düşer.
Neden bazı barkodlarda sorun yok?
Çünkü rakamlar (0-9) ve harfler (A-Z) her düzende aynı kalır. Kaymayı yaşayan yalnızca noktalama işaretleridir.
Bu, sahada çok kafa karıştıran bir asimetri yaratır: EAN-13 ürün barkodlarınız kusursuz çalışır (sadece rakam), ama içinde tire olan raf lokasyon kodlarınız ya da seri numaralarınız bozuk gelir. "Okuyucu bazı barkodları okuyor, bazılarını okumuyor" diye tarif edilen durumun altında çoğu zaman bu vardır — oysa okuyucu hepsini okuyor, sadece bazılarının verisi bozuluyor.
Çözüm
Okuyucunun ülke/klavye düzeni ayarını bilgisayarınkiyle eşleyin. Bu ayar yazılımdan değil, cihazın kılavuzundaki konfigürasyon barkodunu okutarak yapılır — kılavuzda genellikle "Keyboard Country" ya da "Klavye Ülkesi" başlığı altındadır.
Alternatif olarak bilgisayarı US düzenine alabilirsiniz, ama bu Türkçe yazan bir operatör için pratik değildir. Doğru yer cihazdır.
2. Alanlar Birbirine Yapışıyor: Kaybolan GS Karakteri

GS1-128 ve GS1 DataMatrix gibi uygulama tanımlayıcılı kodlarda, değişken uzunluklu alanlardan sonra bir ayırıcı bulunur. Okuyucu bunu GS (Group Separator, ASCII 29) olarak gönderir.
Sorun şu: GS görünmez bir kontrol karakteridir. Klavyede karşılığı olan bir tuş yoktur, dolayısıyla klavye emülasyonu onu yazamaz. Ya hiç gelmez ya da beklenmedik bir karaktere dönüşür.
Sonuç: parti numarası ile seri numarası birbirine yapışır ve uygulama alanları ayıramaz.
Bir ayrıntı daha: okuyucular ilk FNC1 karakterini genellikle ]C1 şeklinde üç metin karakteri olarak gönderir. Bu bir hata değil, sembolojiyi bildiren standart bir önektir — ayrıştırma yaparken bunu da hesaba katın.
İki çözüm
- GS'i görünür bir karakterle değiştirin. Çoğu okuyucuda GS yerine seçtiğiniz bir ASCII karakterin (örneğin
|) gönderilmesi ayarlanabilir. Uygulamanız alanları o karakterden böler. Sorun gidermeyi de kolaylaştırır, çünkü ayırıcıyı gözle görürsünüz. - Seri port moduna geçin. COM emülasyonunda ham bayt aktarıldığı için GS olduğu gibi taşınır. Uygulamanız portu dinliyorsa en temiz çözüm budur.
İlaç karekodunda da aynı yapı geçerlidir; ayrıntısı İTS ve ilaç karekodu yazımızda.
3. Excel'de Barkod Numarası Bozuluyor

Burada okuyucunun hiçbir suçu yok. Doğru veriyi gönderiyor; Excel onu sayı sanıp biçimlendiriyor.
Üç tipik bozulma:
- Baştaki sıfır siliniyor.
08691234567807olarak okuttuğunuz GTIN-14, hücrede8691234567807olur. Sıfır sayısal değeri değiştirmediği için atılır. - Bilimsel gösterime dönüyor. 13 haneli bir EAN, sütun darsa
8,69123E+12gibi görünür. - 15. haneden sonrası sıfırlanıyor. Excel sayılarda 15 anlamlı hane hassasiyetiyle çalışır. 18 haneli bir SSCC girdiğinizde son haneler sıfıra döner — ve bu geri alınamaz, çünkü veri artık hücrede yoktur.
Üçüncüsü en tehlikelisidir: ilk ikisi gözle fark edilir, bu ise sessizce olur ve fark edildiğinde kaynak veri çoktan kaybolmuştur.
Ne yapmalı
- Sütunu veri girmeden önce METİN biçimine alın. Sonradan biçim değiştirmek kaybolan haneleri geri getirmez.
- Tek hücre için: değerin başına kesme işareti (
') koyun. - Dosya içe aktarıyorsanız sihirbazda ilgili sütunu "metin" olarak işaretleyin.
- Kalıcı çözüm: barkod numarasını hiçbir yerde sayı olarak tutmayın. Barkod bir kimliktir, üzerinde aritmetik yapılmaz — metin alanı doğru veri tipidir. Bu, veri tabanı tasarımı için de geçerli.
GTIN'in neden 14 haneye tamamlandığı ve baştaki sıfırların neden anlamlı olduğu için GTIN nedir yazımıza bakabilirsiniz.
4. Hepsi Tek Satıra Yazılıyor: Suffix Ayarı
Okutulan kodlar art arda aynı satıra diziliyorsa, okuyucu okuma sonunda Enter göndermiyordur.
Bu bir arıza değil, eksik bir ayardır. Çoğu cihaz fabrika ayarında suffix göndermez; kılavuzdaki konfigürasyon barkodunu okutarak CR (Enter) ya da TAB eklersiniz. Hangisini seçeceğiniz uygulamanıza bağlıdır: form alanları arasında geçiş isteniyorsa TAB, satır tamamlanacaksa Enter.
Aynı mantıkla prefix de eklenebilir — verinin başına konan sabit bir karakter, uygulamanın "bu veri okuyucudan geldi" ayrımını yapmasını sağlar.
5. Veri Sonu Kırpılıyor
Uzun kodlarda son birkaç karakterin düştüğünü görüyorsanız, uygulama karakterleri okuyucunun gönderme hızında alamıyor olabilir. Web tabanlı arayüzlerde ve uzak masaüstü oturumlarında daha sık görülür.
Cihaz kılavuzlarında bunun için genellikle karakterler arası gecikme (inter-character delay / transmit delay) adında bir ayar bulunur; değeri kademeli yükselterek test edin. Gecikmeyi gereğinden fazla artırmak okutma hızını düşürür, o yüzden çalışan en düşük değerde bırakın.
Bu davranışın cihaza ve uygulamaya göre değiştiğini not edelim; kesin bir eşik vermek mümkün değil, deneyerek bulunur.
Teşhis: Belirtiden Sebebe

Teşhisin ilk adımı her zaman aynı: boş bir Not Defteri açın, imleci içine koyun ve bilinen bir barkodu okutun.
Bu tek hareket sorunu ikiye böler:
- Not Defteri'nde de bozuksa sorun cihazda ya da klavye katmanındadır. Uygulamanızı kurcalamayın.
- Not Defteri'nde doğruysa cihaz sağlamdır; sorun uygulamanın alan biçiminde, odağında ya da veriyi işleyişindedir.
Yukarıdaki tablo, belirtiden sebebe giden kısayolu veriyor. Sırayla denemek yerine belirtiye bakıp doğrudan ilgili katmana gidin.
Sık Yapılan Dört Hata
- Cihazı arızalı sanmak. "Bazı barkodları okumuyor" diye değiştirilen okuyucuların çoğunda sorun sembolojinin kapalı olması ya da klavye düzenidir. Yeni cihaz da aynı davranır.
- Uygulamada düzeltmeye çalışmak. Gelen
*karakterlerini kod içinde-ile değiştirmek işe yarar gibi görünür, ama başka bir makinede düzen farklıysa bu sefer doğru veriyi bozarsınız. Düzeltme cihazda yapılmalı. - Excel'de sonradan biçim değiştirmek. Hücre metne çevrildiğinde kaybolan haneler geri gelmez. Biçim veri girmeden önce ayarlanır.
- Konfigürasyon barkodlarını saklamamak. Cihaz sıfırlandığında ya da yenisi alındığında aynı ayarları tekrar yapmanız gerekir. Kullandığınız konfigürasyon barkodlarını çıktı alıp cihazın yanında tutun.
Sıkça Sorulan Sorular
Okuyucu bazı barkodları okuyor, bazılarını okumuyor. Arızalı mı?
Büyük ihtimalle hayır. İki yaygın sebep var: ilgili semboloji cihazda kapalı olabilir (Code 39, ITF ve DataMatrix sıklıkla fabrika ayarında kapalı gelir), ya da kod okunuyor ama içindeki noktalama klavye düzeni yüzünden bozulduğu için uygulama reddediyordur. İkisi de konfigürasyon barkoduyla çözülür.
Aynı okuyucu bir bilgisayarda doğru, diğerinde yanlış çalışıyor.
Bu neredeyse kesin olarak klavye düzeni farkıdır. İki makinenin düzen ayarını karşılaştırın; okuyucuyu doğru çalıştığı makinenin düzenine göre değil, her ikisinde de kullanılacak düzene göre ayarlayın.
Verinin okuyucudan mı klavyeden mi geldiğini nasıl anlarım?
Klavye emülasyonunda uygulama bunu doğal olarak ayırt edemez. Pratik yöntem, okuyucuya bir prefix karakteri ekleyip uygulamada onu kontrol etmektir. Kesin ayrım gerekiyorsa seri port ya da SDK moduna geçmelisiniz.
Kodun içinde Türkçe karakter kullanabilir miyim?
Kullanmayın. Code 128 ve benzeri sembolojiler ASCII tabanlıdır; Türkçe karakterler ya kodlanamaz ya da okuyucudan geçerken bambaşka bir şeye dönüşür. Barkod içeriğini rakam, İngiliz alfabesi harfleri ve tire gibi temel işaretlerle sınırlayın.
Telefon uygulamasıyla okuttuğumda da aynı sorun olur mu?
Klavye düzeni sorunu olmaz, çünkü arada klavye katmanı yoktur — uygulama veriyi doğrudan alır. Ama kontrol karakterleri ve alan ayrıştırma sorunları orada da geçerlidir. Telefonla barkod okuma yazımıza bakabilirsiniz.
Okuttuğum kodun gerçekten doğru olup olmadığını nasıl kontrol ederim?
EAN-13 ve GTIN gibi kodlarda kontrol hanesi vardır; hesabı tutuyorsa veri sağlam gelmiştir. Yöntemi EAN-13 kontrol hanesi nasıl hesaplanır yazımızda anlattık. Bu, veri bütünlüğünü doğrulamanın en pratik yoludur.
Sonuç
Barkod verisi, okuyucudan uygulamaya giderken en az üç katmandan geçer ve her katmanın kendine göre bozma biçimi vardır. Teşhisin tamamı tek bir soruya dayanır: bozulma nerede başlıyor?
Not Defteri testi bu soruyu iki adımda cevaplar. Oradan sonrası kısadır: noktalama bozuksa klavye düzeni, alanlar yapışıksa GS karakteri, sayı kırpılmışsa hücre biçimi, hepsi tek satırdaysa suffix.
Ve en önemli alışkanlık: düzeltmeyi verinin bozulduğu katmanda yapın. Uygulama içinde yazılan telafi kodu, sorunu taşınabilir bir hataya çevirmekten başka işe yaramaz.
Okuma tarafındaki fiziksel sorunlar için barkod neden okunmuyor, cihaz seçimi için barkod okuyucu seçimi yazılarımıza göz atabilirsiniz.
Yorum Yok
Yorum Yap