Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
ZPL Render (Yerel DLL) denemesi...
#1
Herkese merhaba.

ZPL Yazıcı olmadan, aşağıda örneğini verdiğim ZPL kodu vb. görselleştirmek için online bir site olan Labelary.com linkinden API ile faydalanıyorum. 
Günlük API limitine hiç yakalanmadım ancak, ticari bir uygulamada görsellik düşünülürse engel olabilir diyerek kolları sıvadım.

OFFLINE bir render kütüphanesi hazırladım. DLL olarak üzerinde çalışıyorum. Şu an çalışır durumda ama emin olmak lazım. Şu anki haliyle herhangi bir kısıtlama yok. Test amaçlı. 


^XA
^CI0
^PW812
^LL1218
^LH0,0

^FX// Ust serit   ^FS
^FO0,0^GB812,80,80^FS
^FO20,20^A0N,40,40^FR^FDKARISIK TEST ETIKETI^FS
^FO520,25^A0N,28,28^FR^FDTarih:^FS
^FO600,25^A0N,28^FR^FC%^FD %a, %d/%m/%Y^FS
^FO685,50^A0N,28^FR^FC%,{,#^FD %H:%M:%S^FS

^FX// Sol panel   ^FS
^FO20,100^A0N,30,30^FDURUN ADI:^FS
^FO20,140^A0N,46,45^FDOrnek Urun A-12345^FS
^FO20,210^A0N,24,24^FDKategori: Elektronik / Aksesuar^FS
^FO20,245^A0N,24,24^FDBatch No: TR-2026-8847-XQ^FS
^FO20,280^A0N,24,24^FDSK Barkod: 8681234567890^FS

^FX// Sag panel   ^FS
^FO420,100^GB372,200,3^FS
^FO440,120^A0N,26,26^FDDURUM:^FS
^FO440,160^A0N,60,55^FDKONTROL^FS
^FO440,230^A0N,22,22^FDOncelik: YUKSEK^FS
^FO700,230^A0N,22,22^FDRev: 3.2^FS

^FX// 1D Barkod   ^FS
^FO20,320^A0N,20,20^FD1D BARKOD (Code 128):^FS
^FO20,350^BY2,3.0,100^BCN,100,Y,N,N^FD12345678901234567890^FS
^FX// ModuleWidth=2 dot, Ratio=3.0, Height=100 dot ^FS

^FX// QR Kod      ^FS
^FO550,320^A0N,20,20^FDQR KOD:^FS
^FO550,350^BQN,2,8^FDQA,https://zebra.com/test/8681234567890^FS

^FX// DataMatrix  ^FS
^FO20,500^A0N,20,20^FDDataMatrix (2D):^FS
^FO20,530^BXN,6,200^FDKARMASIK-TEST-2026-TR-8847^FS

^FX// Dondurulmus metinler  ^FS
^FO190,500^A0N,20,20^FDDondurulmus Bilgi: (N)^FS
^FO250,530^A0N,20,20^FDABC(N)..0^FS
^FO220,550^A0R,20,20^FDABC(R).90^FS
^FO330,550^A0B,20,20^FDABC(B)180^FS
^FO250,630^A0I,20,20^FDABC(I)..0^FS

^FX// Tarih       ^FS
^FO370,540^A0N,20,20^FDTarih :^FS
^FO370,570^A0N,14^FC%,{,#^FD1: %H:%M:%S Civ: %I:%M:%S %p^FS
^FO370,588^A0N,14^FC%,{,#^FD2: {H:{M:{S Civ: {I:{M:{S {p^FS
^FO370,606^A0N,14^FC%,{,#^FD3: #H:#M:#S Civ: #I:#M:#S #p^FS

^FO370,624^A0N,14^FC%,{,#^FD4: %A, %B %d, %Y (%a, %m/%d/%y, %d %b %Y).^FS
^FO370,642^A0N,14^FC%,{,#^FD5: {A, {B {d, {Y ({a, {m/{d/{y, {d {b {Y).^FS
^FO370,660^A0N,14^FC%,{,#^FD6: #A, #B #d, #Y (#a, #m/#d/#y, #d #b #Y).^FS

^FX// Cizgi        ^FS
^FO20,680^GB772,3,3^FS
^FO20,700^A0N,22,22^FDOzel Alanlar:^FS

^FX// Kutucuklar   ^FS
^FO20,740^GB150,80,2^FS
^FO35,755^A0N,18,18^FDKUTU 1^FS
^FO35,785^A0N,28,28^FDAKTIF^FS

^FO190,740^GB150,80,2^FS
^FO205,755^A0N,18,18^FDKUTU 2^FS
^FO205,785^A0N,28,28^FDPASIF^FS

^FO360,740^GB150,80,2^FS
^FO375,755^A0N,18,18^FDKUTU 3^FS
^FO375,785^A0N,28,28^FDBEKLEME^FS

^FO530,740^GB150,80,2^FS
^FO545,755^A0N,18,18^FDKUTU 4^FS
^FO545,785^A0N,28,28^FDTAMAM^FS

^FX// Alt serit      ^FS
^FO0,860^GB812,60,60^FS
^FO20,875^A0N,30,30^FR^FDTest ZPL v1.0 | Uretim Hatti: A-7 | Operator: TEST-KULLANICI^FS

^FX// MaxiCode       ^FS
^FO20,940^A0N,18,18^FDMaxiCode Mode 2 (UPS):^FS
^FO20,970^BD3^FH^FD066826RS19_5B)>_1E01_1D961Z00136111_1DUPSN_1D123X56_1D057_1D_1D001/001_1D011_1DN_1D_1DWEST SWINDON_1D_1E_04^FS

^FX// PDF417         ^FS
^BY2
^FO300,940^A0N,18,18^FDPDF417 (Yuksek Kapasite):^FS
^FO300,970^B7N,10,4,10,10^FDKARMASIK_TEST_VERISI_2026_BATCH_8847_LOT_9912_MUSTERI_4455^FS

^FX// Dipnot         ^FS
^FO20,1190^A0N,16,16^FDNot: Bu etiket test amaclidir. Tum barkodlar ve veriler ornek niteligindedir. | ZPL Karisik Test v1.0 (@) ARMAN^FS

^XZ



Yapay zeka işleri oldukça kolaylaştırıyor ancak DLL'in test edilmesi ve sorunların canlı etiketler ile debug edilmesi gerekiyor. 
Projeye tümüyle kurgusal isim, adres, telefon no, mail adresi vs. ile oluşturulmuş FedEx, UPS, DHL, karışık örnekleri ilave ettim. resource olarak içinde ama kodları açık.

Vakti olup veya ihtiyacı olup denemek isteyenler için DLL dosya, örnek proje kaynak kodları ve bir tane de kendim için hazırladığım, TCP 9100 portunu dinleyebilen bir sanal yazıcı uygulamasının EXE halinide pakete koydum. 

İlave not : Sanal yazıcı uygulaması için bildireyim; RENDER işlemi için kullanılan MENU elemanları olsun BUTTON olsun, normal erişimde YEREL (OFFLINE) render yaparken,  CTRL basılı haldeyken erişimlerde ONLINE Labelary.com API kullanır. 
Dahili veya Online render işlemlerini karşılaştırma yapabilmek için böyle tasarlandı.


Sanal yazıcı uygulamasında aktif olduğunda LPT1 üzerinden gönderilen her etiket, ekran kopyasında göreceğiniz gibi sağdaki tarihçe kısmında aşağıya doğru eklenerek devam ediyor. 

Üzerine tıkladığınızda kodunu yeniden alabilir üzerinde değişiklik yapıp tekrar RENDER ederek, kod halinde olsa da aşinalık oluşur, kendinize özel ZPL etiket tasarımına girebilirsiniz.

Üretilen etiketlerin okunurluğunu online test için dynamsoft barcode-reader linkini kullanabilirsiniz. Okuma konusunda çok başarılı bir site.

ZIP paketi linkini vereyim : buraya tıklayarak indirebilirsiniz.
   
Herkese bol kazançlı günler.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#2
@mrmarman hocamdan elinize sağlık.
Cevapla
#3
Bende Zebra etiket yazıcılarını sıklıkla kullanıyorum. Ben "ZebraDesigner 3" yazılımı ile etiketi dizayn ettikten sonra PrintToFile seçeneği ile komut dosyasını ZPL kodları olarak kayıt ediyorum. Kendi yazılımım içinden de gerekli değişken alanları değiştirip TCP protokolü üzerinden 9100 porta göndererek yazdırıyorum.
Cevapla
#4
@enigma

Bir şablon oluşturana kadar labelary.com gibi bir yerde deneme yanılma yapıyor olabilir, değişken alanlarının da en geniş ve en dar hallerini biliyor ve ona göre dinamik çözümler üretebiliyor olabilirsiniz.
Hatta ilave olarak şablonu hazırladığınız bir etiketi RESIM çıktısını alarak projenizde bulundurup, dinamik alanları resim üzerinde boşluk doldurma şeklinde son kullanıcıya da gösteriyor olabilirsiniz. Bu takdir edilecek bir çalışma düzeni.

Burada eksikliğini duyduğum ve ilgilendiğim konu, sizin çalışma şeklinizdeki ZPL kodunun gerçek çıktı ön izlemesi ve ötesidir. Yani harici bir kaynaktan gelen ZPL içeriğin görselleştirilmesi ağırlıklıdır.

Örneğin farklı kargo firmaları ile çalışıyor ve etiketi siz basıyorsunuz. Mesela ZIP içerisinde verdiğim ZPL örneklerinden DHL firması örneğinde; gönderici bilgilerini GFA^ şeklinde resim olarak ZPL koduna gömüyor. Metin olara göremiyor, müdahale edemiyorsunuz. Sadece alıcı bilgilerini barcode ve açık text olarak bildiriyor.

Uzun lafın kısası, bu gibi durumlarda bir bitmap ZPL render aracına ihtiyaç duydum. Sonucun doğru olup olmadığının yargılanması mümkün oldu. Tabii "yazıcıdan çıktı alır orada hata görürsem vaz geçerim" de denebilir. Bu tümüyle kullanıcı takdiridir.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#5
ZPL Yazıcısı olup benim için bir test yapacak kimse var mıdır ?

Aşağıdaki ZPL kodunu Labelary ile çıktısını aldığımda bizimkinden farklı görünüyor. Gerçek bir ZPL yazıcı nasıl davranıyor bu konuda test edebilen olursa sevinirim.

^XA
^CI0
^PW812
^LL1218
^LH0,0

^FX// Ust serit   ^FS
^FO0,0^GB812,80,80^FS
^FO20,20^A0N,40,40^FR^FDKARISIK TEST ETIKETI^FS
^FO520,25^A0N,28,28^FR^FDTarih:^FS
^FO600,25^A0N,28^FR^FC%^FD %a, %d/%m/%Y^FS
^FO685,50^A0N,28^FR^FC%,{,#^FD %H:%M:%S^FS

^FX// Sol panel   ^FS
^FO20,100^A0N,30,30^FDURUN ADI:^FS
^FO20,140^A0N,46,45^FDOrnek Urun A-12345^FS
^FO20,210^A0N,24,24^FDKategori: Elektronik / Aksesuar^FS
^FO20,245^A0N,24,24^FDBatch No: TR-2026-8847-XQ^FS
^FO20,280^A0N,24,24^FDSK Barkod: 8681234567890^FS

^FX// Sag panel   ^FS
^FO420,100^GB372,200,3^FS
^FO440,120^A0N,26,26^FDDURUM:^FS
^FO440,160^A0N,60,55^FDKONTROL^FS
^FO440,230^A0N,22,22^FDOncelik: YUKSEK^FS
^FO700,230^A0N,22,22^FDRev: 3.2^FS

^FX// 1D Barkod   ^FS
^FO20,320^A0N,20,20^FD1D BARKOD (Code 128):^FS
^FO20,350^BY2,3.0,100^BCN,100,Y,N,N^FD12345678901234567890^FS
^FX// ModuleWidth=2 dot, Ratio=3.0, Height=100 dot ^FS

^FX// QR Kod      ^FS
^FO550,320^A0N,20,20^FDQR KOD:^FS
^FO550,350^BQN,2,8^FDQA,https://zebra.com/test/8681234567890^FS

^FX// DataMatrix  ^FS
^FO20,500^A0N,20,20^FDDataMatrix (2D):^FS
^FO20,530^BXN,6,200^FDKARMASIK-TEST-2026-TR-8847^FS

^FX// Dondurulmus metinler  ^FS
^FO190,500^A0N,20,20^FDDondurulmus Bilgi: (N)^FS
^FO250,530^A0N,20,20^FDABC(N)..0^FS
^FO220,550^A0R,20,20^FDABC(R).90^FS
^FO330,550^A0B,20,20^FDABC(B)180^FS
^FO250,630^A0I,20,20^FDABC(I)..0^FS

^FX// Tarih       ^FS
^FO370,540^A0N,20,20^FDTarih :^FS
^FO370,570^A0N,14^FC%,{,#^FD1: %H:%M:%S Civ: %I:%M:%S %p^FS
^FO370,588^A0N,14^FC%,{,#^FD2: {H:{M:{S Civ: {I:{M:{S {p^FS
^FO370,606^A0N,14^FC%,{,#^FD3: #H:#M:#S Civ: #I:#M:#S #p^FS

^FO370,624^A0N,14^FC%,{,#^FD4: %A, %B %d, %Y (%a, %m/%d/%y, %d %b %Y).^FS
^FO370,642^A0N,14^FC%,{,#^FD5: {A, {B {d, {Y ({a, {m/{d/{y, {d {b {Y).^FS
^FO370,660^A0N,14^FC%,{,#^FD6: #A, #B #d, #Y (#a, #m/#d/#y, #d #b #Y).^FS

^FX// Cizgi        ^FS
^FO20,680^GB772,3,3^FS
^FO20,700^A0N,22,22^FDOzel Alanlar:^FS

^FX// Kutucuklar   ^FS
^FO20,740^GB150,80,2^FS
^FO35,755^A0N,18,18^FDKUTU 1^FS
^FO35,785^A0N,28,28^FDAKTIF^FS

^FO190,740^GB150,80,2^FS
^FO205,755^A0N,18,18^FDKUTU 2^FS
^FO205,785^A0N,28,28^FDPASIF^FS

^FO360,740^GB150,80,2^FS
^FO375,755^A0N,18,18^FDKUTU 3^FS
^FO375,785^A0N,28,28^FDBEKLEME^FS

^FO530,740^GB150,80,2^FS
^FO545,755^A0N,18,18^FDKUTU 4^FS
^FO545,785^A0N,28,28^FDTAMAM^FS

^FX// Alt serit      ^FS
^FO0,860^GB812,60,60^FS
^FO20,875^A0N,30,30^FR^FDTest ZPL v1.0 | Uretim Hatti: A-7 | Operator: TEST-KULLANICI^FS

^FX// MaxiCode       ^FS
^FO20,940^A0N,18,18^FDMaxiCode Mode 2 (UPS):^FS
^FO20,970^BD3^FH^FD066826RS19_5B)>_1E01_1D961Z00136111_1DUPSN_1D123X56_1D057_1D_1D001/001_1D011_1DN_1D_1DWEST SWINDON_1D_1E_04^FS

^FX// PDF417         ^FS
^BY2
^FO300,940^A0N,18,18^FDPDF417 (Yuksek Kapasite):^FS
^FO300,970^B7N,10,4,10,10^FDKARMASIK_TEST_VERISI_2026_BATCH_8847_LOT_9912_MUSTERI_4455^FS

^FX// Dipnot         ^FS
^FO20,1190^A0N,16,16^FDNot: Bu etiket test amaclidir. Tum barkodlar ve veriler ornek niteligindedir. | ZPL Karisik Test v1.0 (@) ARMAN^FS

^XZ

Labelary Online RENDER işleminde QRCode aşağı kayık görünüyor. Bizimkinde planlanan yerinde görünüyor.
Koddaki Offset değerlerine göre yerinde diyorum, pozitif ayrımcılık yok  Smile

Normali
Alıntı:^FX// QR Kod      ^FS
^FO550,320^A0N,20,20^FDQR KOD:^FS
^FO550,350^BQN,2,8^FDQA,https://zebra.com/test/8681234567890^FS

kısmında 

Normali
QRCode başlığı offset X,Y değerleri : 550, 320
QRCode grafik  offset X,Y değerleri : 550, 350  

Y değerlerine (dikey) bakarsanız 
  • Normalde     : Başlık yazısına göre 30 pixel / inch daha pozitif ilave ile aşağıda iken 
  • Labelary'de   : Başlık yazısına göre 100 pixel/inch negatif eksiltme ile geri çekmek gerekiyor. (garip). Sanki QRCode standardında 100 ilave var mış gibi.. Bu olabilir mi teste muhtaç

Labelary'de doğru görünsün istersek : 
QRCode başlığı offset X,Y değerleri : 550, 320
QRCode grafik  offset X,Y değerleri : 550, 250  

Bu durumda normal hallerde beklediğim, grafik başlık yazısının üzerine binecek şekilde olmasıdır.  

Labelary uyumlusu :


Alıntı:^FX// QR Kod      ^FS
^FO550,320^A0N,20,20^FDQR KOD:^FS
^FO550,250^BQN,2,8^FDQA,https://zebra.com/test/8681234567890^FS



yapm4xfo9pcf8nakuap1.png                    m4tf63x5cdocnedc4npw.bmp
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#6
Sorunu buldum.

Sorun ZPL kod içerisinde kalan ^BY kodu imiş.
PERSIST ( kalıcı ) değişim oluşturuyormuş.

1D barcode için hemen altına text yazmak için aşağıya kaydırma yapmak üzere ^BY ilave edilmesine karşın, orada verilen 100 birim kaydırma kalıcı olarak bir sonraki QRCode için de değerlendirmeye alınıyormuş...

ZPL Kodu içinden 1D barcode içindeki ^BY kısmı kaldırılınca sorun çözülüyor oldu.

Merak edenlere cevabımız özetle bu şekilde
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla




Konuyu Okuyanlar: 1 Ziyaretçi