2

以下は私のコードです:

PosExplorer posExplorer = new PosExplorer();
DeviceCollection receiptPrinterDevices = posExplorer.GetDevices(DeviceType.PosPrinter);
DeviceInfo receiptPrinterDevice = posExplorer.GetDevice(DeviceType.PosPrinter,"SRP2");
PosPrinter printer = (PosPrinter)posExplorer.CreateInstance(receiptPrinterDevice);

printer.Open();
printer.Claim(10000);
printer.DeviceEnabled = true;
printer.PrintNormal(PrinterStation.Receipt, "test print 1");

私はデバッグし、すべてが例外なく完了し、対象のプリンターが正しいものであることも確認しましたが、プリンターは何も印刷していません。私が間違ったステップはありますか?どんなガイダンスも大歓迎です。ありがとう


それが役立つ場合は、イーサネット経由で特定の IP に My Printer Interface を接続します。

4

1 に答える 1

4

\n問題は、文字列の最後に改行文字 ( ) を送信していないことです。それがないと、サービス オブジェクトは行データをバッファリングし、デバイスにデータを送信する前に を確認PrintNormalするまで待機します。\n

printer.PrintNormal(PrinterStation.Receipt, "test print 1\n"); 

の .net ドキュメントの POS からPrintNormal

改行 / 改行 (10 進数)

ライン バッファー内のデータを出力し、次の出力行に送ります。(行を印刷するために改行は必要ありません。)

これは、プリンターが一度に 1 つの完全な行を印刷する必要があるためです。そのため、印刷を開始する前に、行が完了したことを伝えるまで待機します。これによりPrintNormal、1 行の印刷出力を構築するために 2 つ以上の呼び出しを使用できます。必要に応じて行データ (例: ループ内)。

ネットワーク接続された POS プリンター (Tysso PRP-250) で以下のコードを実行しました。

PosExplorer posExplorer = new PosExplorer();
DeviceInfo receiptPrinterDevice = posExplorer.GetDevice(DeviceType.PosPrinter, "SRP2");
PosPrinter printer = posExplorer.CreateInstance(receiptPrinterDevice) as PosPrinter;

printer.Open();
printer.Claim(10000);
if (printer.Claimed) 
{
    printer.DeviceEnabled = true;
    printer.PrintNormal(PrinterStation.Receipt, "test print 1\n");
    printer.DeviceEnabled = false;   
}
printer.Release();
printer.Close();
于 2013-04-19T07:53:05.040 に答える