質問

監督-選手コメン印刷原asciiデータへの熱プリントします。またこのコード例: http://support.microsoft.com/kb/322091 私のプラグをコンセントから常に一文字、このままの形で送りボタンを押します。まものをメモ帳にプリンターな形状の飼料を自動で印刷テキスト.

プリンタがusb接続された上lpt2usbアダプターは、Windows7の"ジェネリック->ライバ"のドライバーです。

誰でも知っていうのは間違いだったのか?どのように印刷が可能であの言葉をいくつかの形飼料?が一部の制御文字をしています送?場有り:どうを送りたいのですか。

編集14.04.2010 21:51

私のコード(C#)は以下のようなものです:

PrinterSettings s =  new PrinterSettings();
s.PrinterName = "Generic / Text Only";

RawPrinterHelper.SendStringToPrinter(s.PrinterName, "Test");

このコードを返します。"T"の後押しに送りボタン(すべての黒ボタンはこちらswissmania.ch/images/935-151.jpg -まず十分な評価のための二つのハイパーリンク)

編集15.04.2010 16:56

私が使っている現在のコンポーネントに関連するワコムはこちらc-sharpcorner.com/UploadFile/johnodonell/PrintingDirectlytothePrinter11222005001207AM/PrintingDirectlytothePrinter.aspx

かっとうできるには、次のコードを使用します:

byte[] toSend;
// 10 = line feed
// 13 carriage return/form feed
toSend = new byte[1] { 13 };
PrintDirect.WritePrinter(lhPrinter, toSend, toSend.Length, ref pcWritten);

このコードと同じeffektのようにを押すと、フォームフィードボタンを動作させることができます。

もののようにしますが動作しない:

byte[] toSend;
// 10 = line feed
// 13 carriage return/form feed
toSend = new byte[2] { 66, 67 };
PrintDirect.WritePrinter(lhPrinter, toSend, toSend.Length, ref pcWritten);

このまま印刷してただの"B"はい"BC" 実行後、任意のコードして再接続して、USBケーブルはそれを動作させるためにagian.そのアイデア?

役に立ちましたか?

解決 2

大丈夫、その理由のためのすべてのものは、その利用のアダプターがマイコンピュータはないが、古いポート.コピーして自分をコンピュータは、windows xpともに働きます。

かわいその他のlpt2usb adaters買った作業をしてくださっています。

編集20.04.2010

他のlpt2usbアダプターも作りました。ばinterstedすべてのコードを使って、ご連絡くださいまたはコメントです。

他のヒント

早い段階溶液

でコードに提供されなかったんでうまく作動するようにもっとのリンクを張っているが、こちらのコード:

コード

using System;
using System.Runtime.InteropServices;
using System.Windows;

[StructLayout(LayoutKind.Sequential)]
public struct DOCINFO {
    [MarshalAs(UnmanagedType.LPWStr)]
    public string pDocName;
    [MarshalAs(UnmanagedType.LPWStr)] 
    public string pOutputFile;
    [MarshalAs(UnmanagedType.LPWStr)] 
    public string pDataType;
}

public class PrintDirect {
    [DllImport("winspool.drv", CharSet = CharSet.Unicode, ExactSpelling = false, CallingConvention = CallingConvention.StdCall)]
    public static extern long OpenPrinter(string pPrinterName, ref IntPtr phPrinter, int pDefault);

    [DllImport("winspool.drv", CharSet = CharSet.Unicode, ExactSpelling = false, CallingConvention = CallingConvention.StdCall)]
    public static extern long StartDocPrinter(IntPtr hPrinter, int Level, ref DOCINFO pDocInfo);

    [DllImport("winspool.drv", CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern long StartPagePrinter(IntPtr hPrinter);

    [DllImport("winspool.drv", CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern long WritePrinter(IntPtr hPrinter, string data, int buf, ref int pcWritten);

    [DllImport("winspool.drv", CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern long EndPagePrinter(IntPtr hPrinter);

    [DllImport("winspool.drv", CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern long EndDocPrinter(IntPtr hPrinter);

    [DllImport("winspool.drv", CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern long ClosePrinter(IntPtr hPrinter);
}

private void Print(String printerAddress, String text, String documentName) {
    IntPtr printer = new IntPtr();

    // A pointer to a value that receives the number of bytes of data that were written to the printer.
    int pcWritten = 0;

    DOCINFO docInfo = new DOCINFO();
    docInfo.pDocName = documentName;
    docInfo.pDataType = "RAW";

    PrintDirect.OpenPrinter(printerAddress, ref printer, 0);
    PrintDirect.StartDocPrinter(printer, 1, ref docInfo);
    PrintDirect.StartPagePrinter(printer);

    try {
    PrintDirect.WritePrinter(printer, text, text.Length, ref pcWritten);
    } catch (Exception e) {
        Console.WriteLine(e.Message);
    }

    PrintDirect.EndPagePrinter(printer);
    PrintDirect.EndDocPrinter(printer);
    PrintDirect.ClosePrinter(printer);
}

用途

String printerAddress = "\\\\ComputerName\\PrinterName";
String documentName = "My document";
String documentText = "This is an example of printing directly to a printer.";

ます。Print(printerAddress,documentText,documentName);

資料

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top