C# Socket barkod print zpl

Selamlar,

Bir projemizde barkod yazıcısından çıktı almamız gerekti, bunun için zpl formatında (yazıcının anlayacağı dil de) tasarımı yapıp yazıcıya TCP üzerinden BYTE olarak print ettirme yoluna gittik, aşağıdaki dehşet verici kodu yazdık. lazım olacak meslektaşlarımıza hayırlı olsun.

http://labelary.com/viewer.html bu adresten online olarak zpl kodlarınızı tasarlayabilirsiniz.

Ek bilgi: ZPL kodundaki ^XA ve ^XZ kodları birinci barkod kağıdına yazılacakları temsil ediyor. Başlangıç ve bitiş. ikinci barkoda geçmesi isteniyor ise bu kodlardan tekrar açıp kapatmak gerekir. (html kodları gibi düşünebilirsiniz) kargo bilgisi 1. barkodda tahslilatlı ödeme bilgisi 2. barkodda özel çıksın istendiği durumda lazım olabiliyor vs.

Kullanım:

string zplData = @"^XA
^FT101,59^A0N,31,30^FH\^CI28^FDGS1-128 : ^FS^CI27
^FT101,174^A0N,31,30^FH\^CI28^FDGS1-DataMatrix : ^FS^CI27
^FT548,174^A0N,31,30^FH\^CI28^FDGS1-QR: ^FS^CI27
^BY2,3,54^FT110,134^ BCN ,,N,N
^FH\^FD>;>8011234567890123121123456^FS
^FT185,324^BXN,6,200,0,0,1,_,1
^FH\^FD_1011234567890123121123456^FS
^FO642,206^ BQN ,2,5
^FH\^FD>;>8011234567890123121123456^FS
^PQ1,0,1,Y
^XZ";

Socket socket = ConnectSocket("10.57.80.99", 9100);
byte[] bytes = ASCIIEncoding.UTF8.GetBytes(zplData);
socket.Send(bytes, bytes.Length, SocketFlags.None);
socket.Close();

Metod:

public static Socket ConnectSocket(string server, int port)
{
	Socket socket = null;
	try
	{
		Socket socket1 = null;
		IPEndPoint pEndPoint = new IPEndPoint(IPAddress.Parse(server), port);
		Socket socket2 = new Socket(pEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
		socket2.Connect(pEndPoint);
		if (socket2.Connected)
		{
			socket1 = socket2;
		}
		socket = socket1;
		return socket;
	}
	catch (Exception exception)
	{
	}

	return socket;
}