4

.net c#ゼブラ プリンター ( TTP2030) でテキストとバーコードを印刷する必要があるWeb アプリを使用しています。ここからRawPrinterHelperクラスを使用します。Unicode 文字列として、プリンターへのコマンドをほぼ取得しました。

したがって、バーコードを印刷するには、次のようにします。

string enq = Convert.ToChar(5).ToString();
string esc = Convert.ToChar(27).ToString();
string nul = Convert.ToChar(0).ToString();
string rs = Convert.ToChar(30).ToString();
string lf = Convert.ToChar(10).ToString();
string cr = Convert.ToChar(13).ToString();

StringBuilder sb = new StringBuilder();

sb.Append(esc + "BS" + nul + nul + Convert.ToChar(72).ToString() + nul + nul);
sb.Append(nul + nul + Convert.ToChar(64).ToString() + nul + Convert.ToChar(2).ToString() + Convert.ToChar(2).ToString());
sb.Append(esc + "BW" + nul + "733104000099" + nul);
sb.Append(lf + rs);

RawPrinterHelper.SendStringToPrinter(printerName, sb.ToString());

そのコマンドのニーモニックは

< ESC>BS<0><0>< h 48><0><0>
<00><0>< h 40><0><2><2>
< ESC>BW<00>733104000099<00>
< LF>< RS>

< h 48> のようなものを正しく送信しているかどうかはわかりません。マニュアルによると、先頭hにスペースが続く場合は 16 進値を示します。この場合、値Xはバーコードの座標 (下位バイト - これが何かはわかりません) を表します。

この値がピクセル (または mm) 単位の場合、16 進数に変換してからプリンターに送信する Unicode に変換するにはどうすればよいですか?

また、送信する必要がある 10 進値を変換するにはどうすればよいですか?

たとえば、私が送信するルーラーラインを印刷するには:

< ESC>r<0><0><0><0><1><230><0><24><3>

すべて 10 進数で、位置、開始、停止などを意味します。

このコマンドをプリンタに送信できるように変換するにはどうすればよいですか?

仕事に取り組めないもう 1 つのことは、プリンターからデータを取得することです。用紙の状態、シリアル番号、ファームウェアなどを取得するなど、いくつかのコマンドを使用できます。最初にこれを達成するために、追加しました

[DllImport("winspool.drv", CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern int ReadPrinter(IntPtr hPrinter, StringBuilder data, int buf, out int pcRead);

RawPrinterHelperクラスで。次に、ゼブラのウェブサイトから入手したという小さなアプリから保存しSendFileToPrinterたファイルを使用してコマンドを送信しようとしました.prnkiosk printer toolbox

(上記のアプローチではなくファイルを送信することにしましたSendStringToPrinter。なぜなら、そこで正しいことをしているとは思えないからです。また、いくつかの異なるコマンドを使用してコマンド ファイルをプリンターに送信することをテストしたところ、うまくいきました。 )。

次に呼び出されReadPrinter(hPrinter, sb, 6, out dwWritten);ますが、sb空です。メソッドは0を返します。プリンターからデータを読み取る方法を知っている人はいますか? 印刷 (テキストとバーコード) とプリンターの状態を取得するために考慮すべきまったく異なるアプローチはありますか?

4

1 に答える 1

-3

これを行う特定の関数がJavaにあります。QZ-Printを見に行きます。Web アプリのホーム マシンでローカルに実行されているプリンターにのみ印刷できます。他の誰も印刷できません。あなたが何をしたいのか、そのアプレットを調べに行きます。IT は特にゼブラ プリンタ用に作成されました。

于 2014-07-23T19:00:48.587 に答える