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 の設定が複雑になります。おそらく、上記のコマンドはバーコードを印刷しますが、紙をカットしません。メモ帳を使用して印刷すると(印刷にネットワークを使用しないと思われます)、紙をカットしますが、紙の長さは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");
        }
    }

  }
  }
4

4 に答える 4

1

いくつかの精神的なメルトダウンの後でOKです(冗談ではありません)私は一日中このプリンターを機能させようとしてきました. 最終的に RawPrinterHelper を使用してこのプリンターに印刷することができました。また、そのヘルパーの小さなバグも修正しました。

喜んで共有しますが、小さなビジュアル スタジオ 10 プロジェクトを共有する方法がわかりません。

私のコードはローカルの USB プリンターに印刷できるようになり、ダイアログも表示されなくなりました。また、紙をカットすることもできます。

(prjの投稿方法についてコメントしてください)

于 2013-02-28T20:18:36.947 に答える
1

TcpClientを使用して、USB などのローカルに接続されたデバイスに接続することはできません。TcpClient はネットワーク デバイス用です。プリンターをネットワークに接続すると、 を使用できますTcpClient

于 2013-02-28T18:42:29.157 に答える
0

これらのケースの回避策は、usb プリンターを共有し、net use コマンドを使用して LTP ポートをリソースにマップすることです。

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

次に、アプリケーションを使用して、文字列を LTP1 ポートに直接書き込むと、印刷されます。

于 2013-12-04T20:46:55.480 に答える