ゼブラプリンターに印刷しようとしています。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 の設定が複雑になります。おそらく、上記のコマンドはバーコードを印刷しますが、紙をカットしません。メモ帳を使用して印刷すると(印刷にネットワークを使用しないと思われます)、紙をカットしますが、紙の長さは40cmです(大きい方法です)..だから私はドライバーの戦いに巻き込まれています。
私がやりたいことは、C# を使用して印刷コマンドを送信し、ZPL コマンドを使用して印刷することです。Microsoft は raw 印刷に関する記事も書きましたが、このプリンターでは失敗します。
私がしたいのは、このプリンターに 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");
}
}
}
}