Barkod Printer, Seri Port, USB, C# üzerine… – 1

Herhangi bir uygulama içinde barkod basmak gerektiğinde, ilk akla gelen yöntem, ihtiyaca uygun bir barkod yazıcı kullanmaktır.

Barkod yazıcı kullanarak barkod basmak gerektiğinde kullanılabilecek 2 ana yöntem vardır

  1. Yazıcıyı windows sürücüleri ile yüklemek ve herhangi bir windows yazıcısı gibi kullanmak
  2. Yazıcının desteklediği PPLA, PPLB, ZPL gibi barkod basma komut setlerini kullanarak yazıcı ile konuşmak

1. yöntem, yazıcıyı windowsa herhangi bir yazıcı gibi tanıtmaktır. Yazıcı ile beraber gelen CD vb. ortamdan sürücüleri yüklenir. Muhtemelen yardımcı programlar ve belki birkaç barkod hazırlama utility si de yüklenecektir. Genelde tek başına çalışacak şekilde tasarlanmış tüm bu programlar, programcının direk olarak işine yaramaz. Programcı, kendi programından barkod basma ihtiyacı hissettiğinde, zaten windows tarafından tanınmış olan barkod yazıcıya windows yazdırma yöneticisini kullanarak erişir. Bu yöntem, her ne kadar jenerik bir yöntem olsa da, dezavantajları vardır. Bunlara değinirsek;

Windows yazıcısı olarak kullanılan barkod yazıcı, barkod basma yeteneğini kaybeder. Herhangi bir lazer ya da inkjet yazıcı nasıl davranırsa o da öyle davranır. Tek farkı, normal yazıcılardan farklı olarak sensörleri olduğundan, barkod bitimi, sağ – sol boşlukları, etiket uzunluğu gibi değerleri hala işlevsel olmaya devam edecektir. Fakat asıl farklılık katan yeteneğini, yani barkod basma işlevini yitirmemiş olsa bile kullanamaz duruma gelmiştir. Bu durumda yapılabilecek en kolay yöntem, bir True Type Barkod fontu kulanmaktır. Parayla satılan ya da ücretsiz dağıtılan Code39 fontu internette aratılarak kolayca bulunabilir. (Bulamayanlar ya da test edilmiş bir tanesi ile çalışmak isteyenler bize mail atabilir – info@mavis.com.tr) Bundan sonrası programcının çıktı alacağı form üzerine Code39 fontu ile oluşturulmuş label (etiket) vb. koyması ve bunların çıktısını almaya kalıyor. (Bu yazının konusu olmadığından ve de oldukça basit bir iş olduğundan ayrıntıya girmeye burada son veriyorum.)

Windows yazıcısı olarak kullanmanın diğer bir dezavantajı, basit bir etiket basmak için bile, araya windows sürücülerini sokmak, grafik ya da form tasarımı yapmak (ya da kod ile runtime anında oluşturmak)  ve basılacak barkodu windows yazdırma yöneticisine teslim etmektir. Basit bir barkod için, (tasarıma göre değişmekle birlikte) çok fazla raw data yazdırma yöneticisine gönderilir. Yazdırma yöneticisi o an meşgulse, bunları kuyruğa atar  ki çoğu kez hızlı bir işlem olması beklenen barkod basma işi, duruma göre bir sonraki bahara kalabilir.

Diğer bir sorun, barkod yazıcının verdiği mesajları alamamaktır. Barkod yazıcı normalde, etiket başarıyla basıldı, etiket sonu, etiket bitti, ribbon bitti vb. gibi bir çok hata mesajını anlık olarak döndürür. Fakat araya windows sürücü modeli girdiğinden, programcı bu bilgilerin hiçbirine erişemez. Belirli bir süre sonra, windows görev çubuğunda bir ünlem işareti görebilir (eğer şansı varsa). Otomasyon projeleri gibi, çok hızlı, realtime çalışan uygulamalarda bu model akla bile getirilmemelidir.

Yazı dizisinin 2. bölümünde, barkod tasarlama ve tasarlanmış bu barkodu C# içinden dinamik olarak değiştirip yazıcıya gönderme konusuna yer verdim. (http://www.mavis.com.tr/blog/?p=412)

Makalenin son bölümünde ise, USB yazıcılara direk erişim ve tıpkı seri/paralel port ile erişimlerde olduğu gibi direk veri gönderme teknikleri anlatılacaktır.

Mavis VYP, tüm barkod yazıcılarla çalışabilen son derece güçlü bir barkod sınıfına sahiptir. USB, Seri, Paralel herhangi bir porttan, tüm printerlar ile çalışan uygulamamızın, USB printer arabirimini burada sunmuş olacağım. Böylece Mavis VYP nin engine kısmına ve dolayısıyla teknolojik altyapısına daha detaylı bakmış olacağız.