Отправить данные в LPT на Windows XP - PullRequest
0 голосов
/ 02 января 2011

Я хочу отправить данные на принтер на LPT1, и я пытаюсь точно this , но мой CreateFile возвращает -1 (система не может найти указанный файл. Исключение из HRESULT: 0x80070002).Как открыть порт LPT1 и отправить данные на?Я пытаюсь это на XP и после этого в win7 64 бит, потому что из того, что я прочитал, работа с LPT в win7 64 бит это небольшая проблема, или я должен сказать, 64 битная проблема:)

PS: Так как это мой первый пост в этом году: С Новым годом всех.

1 Ответ

2 голосов
/ 02 января 2011

Вы можете попробовать следующее. Прекрасно работает в текстовом режиме.

«чистая доля» показывает следующее:

Share name   Resource                        Remark

-------------------------------------------------------------------------------
IPC$                                         Remote IPC
D$           D:\                             Default share
print$       C:\WINDOWS\system32\spool\drivers
                                             Printer Drivers
wwwroot$     c:\inetpub\wwwroot              Used for file share access to web
C$           C:\                             Default share
ADMIN$       C:\WINDOWS                      Remote Admin
SharedDocs   C:\DOCUMENTS AND SETTINGS\ALL USERS\DOCUMENTS

Printer2     IP_192.168.115.227     Spooled  HP LaserJet 2200 Series PS (MS)
TEST         LPT1:                  Spooled  Microsoft XPS Document Writer
The command completed successfully.

А вот и код

using System;
using System.IO;

namespace SimplePrinting
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    class SimplePrinting
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            string printingTaskFileName = Path.GetTempFileName(); // file in %temp%

            System.IO.FileStream printingTaskFile;
            System.IO.StreamWriter printingTaskStream;

            printingTaskFile = new System.IO.FileStream(printingTaskFileName, FileMode.Append);
            printingTaskStream = new System.IO.StreamWriter(printingTaskFile, System.Text.Encoding.Default);

            printingTaskStream.Write("some content here");
            printingTaskStream.Flush();
            printingTaskStream.Close();

            File.Copy(printingTaskFileName, @"\\127.0.0.1\TEST", true); // also can be \\127.0.0.1\PNT5 or smth like that
            File.Delete(printingTaskFileName);
        }
    }
}
...