首页 文章

Zebra打印机KR403端口号

提问于
浏览
0

我尝试打印到斑马打印机 . Zebra在C#中为我提供了标准代码示例,他们使用端口9100连接到打印机

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

    client.Connect("127.0.0.1", 9100);

但是,每次我运行此代码时崩溃,因为没有这样的端口号可用我也使用telnet 127.0.01 9100并且确认没有收听9100我也尝试使用某些Zebra打印机使用的端口6101也没有成功 .

我可以在dos命令中运行

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

这确实打印,并证明它以某种方式监听内部网络 . 该设备是USB打印机,这使得设置静态端口ID变得复杂 . 也许奇怪的是上面的命令确实打印条码,但没有剪纸;当我使用记事本打印(我假设不使用网络打印)然后它削减纸张,但纸张是40厘米长(方式到大)..所以我在司机战斗它接缝 .

我希望做的是使用C#发送打印命令并使用ZPL命令打印Microsoft也写了一篇关于原始打印的文章,但它在这台打印机上失败了 .

我想要做的就是将ZPL指令发送到此打印机 . Aslo尝试过通用的txt驱动程序,这适用于记事本但不适用于C#

使用的代码:

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");
        }
    }

  }
  }

4 回答

  • 0

    您不能使用 TcpClient 连接到USB等本地连接设备 . TcpClient适用于网络设备 . 如果您将打印机放在网络上,则可以使用 TcpClient .

  • 1

    一些精神崩溃之后好了(不是在那里开玩笑)因为我一直在努力让这台打印机工作 . 我终于使用RawPrinterHelper设法打印到这台打印机了,我也修复了那个帮助器中的一个小bug .

    我很高兴分享它,但不知道如何分享一个小型的视觉工作室10项目如果有人知道如何做到这一点,我发布它 .

    我的代码现在可以打印到本地USB打印机而且没有对话框/我可以剪纸 .

    (请评论我如何发布prj)

  • 0

    解决这些问题的方法是共享USB打印机,然后使用net use命令将LTP端口映射到资源

    NET USE LPT1: \\[computer_ip]\[printer_sharname] /PERSISTENT:YES
    

    然后使用您的应用程序,您可以将字符串直接写入LTP1端口,然后打印 .

  • 1

    最后,我们对信号进行了逆向工程,为它编写了一个原始的usb驱动程序,然后使用斑马标记语言进行打印,它深深地嵌套在其他代码中;遗憾的是我无法分享 .

    这种语言本身也是一种不太合适的东西 . 你需要考虑缓冲区状态处理错误代码,打印机停止响应,你需要一些保持实时检查 - 等等 .

    因此,如果您可以使用Windows驱动程序,并且您的打印机并不重要,请尝试这样做,否则请编写您自己的原始驱动程序,并学会理解所有二进制错误代码,并记住即使是大名称的打印机仍然很容易堵塞,所以对我来说,如果我有选择的话,我会说放弃这台打印机,或者为一个有几个梦魇的大项目做好准备 . 如果你必须从头开始,你需要花费几周时间 .

相关问题