Forum
Merhaba
Barkod yazdırma programlarında oluşturulan değişkenlere el terminalinden nasıl değer gönderebilirim ?
İyi Günler
Merhabalar;
Biraz daha detay verebilirmisiniz? Hangi etiket programını kullanıyorsunuz? Örneğin ben nicelabel ile çalışıyorum, fakat nicelabel'da oluşturulan etiket dosyasıyla çalışabilmek, değişkenlere değer atayabilmek için kendi SDK'sını kullanmak durumundasınız.
El terminali için SDK desteği veren bir program kullandığınızdan emin olmalısınız.
Ayrıca başka bir yöntemde tasarımı yaparak yazıcıya özel hazırlanmış .prn olarak çıktı almaktır. Bu dosya içerisinde belirlediğiniz değişkenleri belirli bir formata oluşturursunuz örneğin @degisken1@, @degisken2@ gibi her yazdırma işlemi sırasında bu dosyayı okuyarak ilgili değişkenleri replace ederek oluşturduğunuz yeni dosyayı yazıcıya göndererek etiket çıktısı alabilirsiniz.
Merhaba Ali Bey
El terminali olarak m3 kullanıyorum.
Youtube da perkon yazılıma baktığım zaman
https://www.youtube.com/watch?reload=9&v=eBV0Li17jP4
böyle bir etiket yazdırma yapıyorlar. Ben aynısını deniyorum. ZebraDesigner programında lbl dosyasının içeriğinde null yazan siyah ifadeler falan geliyor. Değişkenli yapabiliyorum orada barkodu ama sadece o program üzerinden değişkenlere değer atayabiliyorum. El terminali üzerinden bunu (yukarıdaki youtube linkinde de olduğu gibi) nasıl yapabilirim ?
Teşekkürler
Söylediğim gibi buradaki örnekte prn kullanılmış, uzatısının lbl olduğuna bakmayın sizin ZebraDesignerde prn oluşturmanız gerekiyor nasıl oluşturacağınıza gelirsek aşağıda sıralıyor olacağım.
1- Öncelikle yeni bir etiket tasarım projesi oluşturun, bu projede kullanılacak yazıcı olarak mutlaka yazdırma yapacağınız yazıcıyı seçin, burada oluşturacağınız dosya ile başka model yazıcılarda yazdırma yapamazsınız.
2- Etiket tasarımınızı yapın, fakat burada dikkat etmeniz gereken eklediğiniz text alanlarında mutlaka printer fontunu kullanmanız , font alanında başında printer iconu bulunan fontları kullanabilirsiniz, Arial vs. gibi PC fontları kullanmayacaksınız, bu fontları kullanırsanız oluşturacağınız dosya içerisinde anlamsız karakterler oluşur değişkeni bulamazsınız.
3- Tasarım tamamlandıktan sonra, CTRL+P yapın açılan ekrandan "Print to File" seçeneğini işaretleyin ve Yazdıra basın. Size bir dosya verecek bu dosya ile yazdırma işlemi yapacaksınız.
4- Alacağınız dosya aşağıdaki gibi olacak, bu dosya sizin tasarım dosyanız olarak kabul edebilirsiniz. Şimdi yapmanız gereken her yazdırma işleminden önce bu dosya içeriğini el terminalinde okumak ve ve string değişkenine almak, sonra içerisindeki <DEGISKEN1> <DEGISKEN2> gibi yazdığımız değişkenleri replace ederek sizdeki değerlerle değiştirmek sonrasında el ettiğiniz stringi doğrudan veya yine bir dosya içerisine kaydederek dosyayı barkod yazıcıya send etmek.
Python ile yapılmış bir örneğini aşağıda paylaşıyorum, mantık olarak yardımcı olacaktır.
s = open("Etiket_Sablon.prn").read() //Etiket prn dosyası okunuyor ve s değişkenine alınıyor
s = s.replace('@OPERATOR@', self.operator_lineEdit.text())
s = s.replace('@URUN@', self.urun_lineEdit.text())
s = s.replace('@PARTI@', self.parti_lineEdit.text())
s = s.replace('@TARIH@', date)
s = s.replace('@SAAT@', time)
s = s.replace('@AGIRLIK@', self.dinamicscale_label.text())
s = s.replace('@EAGIRLIK@', self.dinamicscale_label.text().replace(" kg", ""))
s = s.replace('ı', 'i')
s = s.replace('ğ', 'g')
s = s.replace('ü', 'u')
s = s.replace('ş', 's')
s = s.replace('İ', 'I')
s = s.replace('ö', 'o')
s = s.replace('ç', 'c')
s = s.replace('Ğ', 'G')
s = s.replace('Ü', 'U')
s = s.replace('Ş', 'S')
s = s.replace('Ö', 'O')
s = s.replace('Ç', 'C')
f = open("Etiket.txt", 'w') //Yapılan replace sonrası el ettiğimiz string bir dosyaya yazdırılıyor
f.write(s)
f.close()
printer_returns = conn.printFile('SBARCO_T4ep2', 'Etiket.txt', '', {'document-format':'application/vnd.cups-raw'}) // Etiket.txt dosyası yazıcıya gönderiliyor.
Merhaba Ali Bey
Ben bunu dediğiniz gibi yapıyorum.
Dosyaya yazdırdığım zaman
I8,A,001
Q203,024
q831
rN
S3
D7
ZT
JF
O
R90,0
f100
N
B641,9,1,1,2,6,25,B,"1231231231"
P1
çıktısını alıyorum. Yani sizdeki gibi değişken1, değişken2 falan diye yazdımıyor.
Neden acaba ?
tasarımı öyle yapmamışsınızdır.
siz 1231231231 yazmışsınız tasarım yaparken.
benim manüel girdiğim birşey değişken1 vs.
Yazdırmak için kodlar böyle
// Instantiate connection for ZPL Serial port on COM1. ZebraPrinterConnection thePrinterConn = new SerialPrinterConnection("COM1", 9600, 8, Parity.None, StopBits.One, Handshake.None); // Open the connection - physical connection is established here. thePrinterConn.Open(); // This example prints "This is a ZPL test." near the top of the label. String zplData = "^XA^FO20,20^A0N,25,25^FDThis is a ZPL test.^FS^XZ"; // Send the data to printer as a byte array. thePrinterConn.Write(Encoding.Default.GetBytes(zplData)); // Close the connection to release resources. thePrinterConn.Close(); } catch (ZebraPrinterConnectionException e) { // Handle communications error here. Console.Write(e.StackTrace); }
benim dosyamdaki yazılar ise
I8,A,001
Q203,024
q831
rN
S3
D7
ZT
JF
O
R90,0
f100
N
B641,9,1,1,2,6,25,B,"DEGISKEN1"
B576,18,1,1,1,3,17,B,"DEGISKEN2"
P1
böyle bu şekilde bir sorun olur mu
1. zplData diye test yazdırmaya çalışıyorsunuz
2. seriporttan yazdırıyorsunuz mobil bluetooth yazıcımı var?
3. öyleyse serial baudrate ayarlarını kontrol edin 9600 mü yazıcı iletişimi