2013-02-28 2 views
0

제브라 프린터로 인쇄를 시도합니다. 얼룩말들은 그러나 프린터Zebra 프린터 KR403 포트 번호

System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient(); 

    client.Connect("127.0.0.1", 9100); 

에 내가 그것을 사용할 수 이러한 포트 번호 가 없기 때문에 충돌이 코드를 실행할 때마다 연결 포트 9100을 사용 가 C#으로 나에게 표준 코드 샘플을 제공 I도 사용 텔넷 127.0.01 9100 그리고 아무 것도 듣지 않는 것을 확인했습니다. 9100 일부 Zebra 프린터에서 사용하는 포트 6101도 성공하지 못했습니다.

나는 DOS 명령

print /D:\\127.0.0.1\KR403 d:\print.txt 

이 인쇄를 수행하고, 내부적 를 네트워크에 어떻게 든 수신 증명에서 실행할 수 있습니다. 이 장치는 USB 프린터이므로 정적 포트 ID를 설정하는 작업이 복잡해집니다. 아마도 이상한 명령은 바코드를 인쇄하지만 용지를 자르지는 못한다. 내가 메모장을 사용하여 인쇄 할 때 (나는 인쇄 할 때 네트워크를 사용하지 않는다고 가정합니다) 용지를 자르지 만 용지는 길이가 40cm 가량 길어집니다. 그래서 나는 드라이버와의 이음새가 있습니다.

희망은 C#을 사용하여 인쇄 명령을 보내고 ZPL 명령을 사용하여 인쇄하십시오. Microsoft는 원시 인쇄에 대한 기사도 썼지 만이 프린터에서는 실패합니다.

내가 원하는 것은이 프린터에 ZPL 지침을 보내는 것입니다.

using System; 
    using System.Collections.Generic; 
    using System.ComponentModel; 
    using System.Data; 
    using System.Drawing; 
    using System.Linq; 
    using System.Text; 
    using System.Windows.Forms; 

    // print /D:\\127.0.0.1\KR403 d:\print.txt 


    namespace PrinterTest 
    { 
    public partial class Form1 : Form 
    { 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     // Printer IP Address and communication port 
     string ipAddress = @"192.168.2.109"; 
     int port = 6101; // 9100;// 

     // ZPL Command(s) 
     string ZPLString = 
      "^XA" + 
      "^FO50,50" + 
      "^A0N50,50" + 
      "^FDHello, World!^FS" + 
      "^XZ"; 

     try 
     { 
      // Open connection 
      System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient(); 
      //client.Connect(ipAddress, port); 
      client.Connect(ipAddress, port); 
      // string tmp = "\\127.0.0.1\KR403"; 
      // client.Connect(@"\\localhost",9100); 



      // Write ZPL String to connection 
      System.IO.StreamWriter writer = new System.IO.StreamWriter(client.GetStream()); 
      writer.Write(ZPLString); 
      writer.Flush(); 

      // Close Connection 
      writer.Close(); 
      client.Close(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Error"); 
     } 
    } 

    } 
    } 
+0

은 컴퓨터에 설치된 프린터입니까? 프린터 설정은 제어판에 연결된 포트를 표시해야합니다. –

+0

예, 그렇지만 일반적으로 포트 nummber를 읽는다면 USB0001이 사용할 수있는 것이 아닙니다. – user613326

답변

1

당신은 USB와 같은 로컬로 연결된 장치에 연결하는 TcpClient을 사용할 수 없습니다 끄트머리이 메모장 작동하지만 사용 C#

코드에 대한 일반 TXT 드라이버를 시도했다. TcpClient는 네트워크 장치 용입니다. 프린터를 네트워크에 연결하면 TcpClient을 사용할 수 있습니다.

+0

프린터가 공유되었습니다 DOS 인쇄 명령은 프린터의 공유 이름을 사용할 때만 작동합니다. 그러나 포트 번호는 공개되지 않았습니다. (더 많이 시도했습니다) – user613326

+0

이것은 정답입니다 귀하의 실제 질문. netowrk 연결을 사용하여 로컬로 연결된 장치로 보낼 수 없습니다. 프린터를 네트워크에 연결했다면 프린터의 호스트 이름이나 IP 주소를 127.0.0.1 (localhost)으로 바꿀 수 있습니다. 그러면 대부분의 경우 프린터를 사용할 수 있습니다. –

1

일부 정신적 인 붕괴 이후 (농담이 아닙니다) 나는이 프린터를 작동시키기 위해 하루 종일 노력했습니다. 드디어 RawPrinterHelper를 사용하여이 프린터로 인쇄했습니다. 그리고 도우미의 작은 버그도 수정했습니다.

공유하고 싶지만 작은 Visual Studio 10 프로젝트를 공유하는 방법을 모르겠다 누구든지 여기에서 어떻게 할 지 안다면 게시 할 수 있습니다.

내 코드는 로컬 USB 프린터로 인쇄 할 수 있으며 다이얼로그가 없어도 종이를자를 수 있습니다.

+1

코드를 보내주십시오. –

0

이러한 경우에 대한 주변의 작업은 USB 프린터를 공유하고 net use 명령

NET USE LPT1: \\[computer_ip]\[printer_sharname] /PERSISTENT:YES 
와 리소스에 대한 LTP 포트를 매핑하는 것이다 (다만 PRJ를 게시하는 방법에 저를 언급 해주십시오)

응용 프로그램을 사용하면 문자열을 LTP1 포트에 직접 쓸 수 있으며 인쇄됩니다.

0

결국 우리는 시그널링을 리버스 엔지니어링하여 원시 USB 드라이버를 작성한 다음 얼룩말 마크 업 언어를 사용하여 인쇄했습니다.이 코드는 다른 코드에 중첩되어 있습니다. 슬프게도 나는 그것을 나눌 수 없다.

그 언어 자체는 그다지 잘 작동하지 않는 무언가입니다. 오류 코드를 처리하는 버퍼 상태 및 프린터가 응답하지 않는 것을 고려해야합니다. 일부는 실시간 검사를 유지해야합니다. 등

Windows 드라이버를 사용할 수 있고 프린터가 중요하지 않은 경우 시도하십시오 그 외에는 자신의 원시 드라이버를 작성하고 모든 바이너리 오류 코드를 이해하는 방법을 배우고 큰 이름을 가진 프린터가 여전히 쉽게 걸릴 수 있다는 점을 명심하십시오. 따라서 선택의 여지가 있다면이 프린터를 버리십시오. 그렇지 않으면 몇 가지 악몽을 꾼 큰 프로젝트에 대비할 수 있습니다. 처음부터 다시 시작해야한다면 몇 주가 걸릴 것입니다.