2008-09-23 5 views
4

ich auf einem .NET WinForms app bin arbeiten, die ein FEDEXversenden Etikett drucken muss. Als Teil der FedEx API kann ich rohe Etikettendaten für den Drucker erhalten.Senden Rohdaten an FedEx Etikettendrucker

Ich weiß nur nicht, wie diese Daten an den Drucker über .NET zu senden (I C# bin mit). Um klar zu sein, werden die Daten bereits in ZPL (Zebra-Druckersprache) formatiert pre Ich brauche nur an den Drucker zu senden, ohne Fenster, die es mucking.

Antwort

1

Ich glaube, Sie einfach den ZPL (Job unten) direkt an den Drucker senden möchten.

private void SendPrintJob(string job) 
{ 
    TcpClient client = null; 
    NetworkStream ns = null; 
    byte[] bytes; 
    int bytesRead; 

    IPEndPoint remoteIP; 
    Socket sock = null; 

    try 
    { 
     remoteIP = new IPEndPoint(IPAddress.Parse(hostName), portNum); 
     sock = new Socket(AddressFamily.InterNetwork, 
      SocketType.Stream, 
      ProtocolType.Tcp); 
     sock.Connect(remoteIP); 


     ns = new NetworkStream(sock); 

     if (ns.DataAvailable) 
     { 
      bytes = new byte[client.ReceiveBufferSize]; 
      bytesRead = ns.Read(bytes, 0, bytes.Length); 
     } 

     byte[] toSend = Encoding.ASCII.GetBytes(job); 
     ns.Write(toSend, 0, toSend.Length); 

     if (ns.DataAvailable) 
     { 
      bytes = new byte[client.ReceiveBufferSize]; 
      bytesRead = ns.Read(bytes, 0, bytes.Length); 
     } 
    } 
    finally 
    {   
     if(ns != null)    
      ns.Close(); 

     if(sock != null && sock.Connected) 
      sock.Close(); 

     if (client != null) 
      client.Close(); 
    } 
} 
0

Ich habe eine Zeit lang mit einem Drucker und ZPL arbeite jetzt, aber mit einem Ruby-App. Das Senden der ZPL über den Socket an den Drucker funktioniert einwandfrei.

Um zu überprüfen, dass es funktioniert, ich an den Drucker Telnet oft und gebe ^XA^PH^XZ ein einzelnes Etikett zu füttern. Ich hoffe, das hilft.

0

Zebra-Drucker nicht mit einem Spooler, ist es nicht roh Druck. Es ist ein Markup namens ZPL. Es ist textbasiert, nicht binär.