我尝试打印到斑马打印机。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");
}
}
}
}