2011-01-02 7 views
0

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

PS: Поскольку это мой первый пост в этом году: С Новым годом всем.

+0

Параллельные порты пошли по пути дронт довольно давно. У машины даже есть? Исключение говорит, что это не так. Используйте диспетчер устройств, задайте больше вопросов на superuser.com –

+0

Принтер подключен к USB – gigi

ответ

2

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

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

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); 
     } 
    } 
} 
+0

i get: FileNotFound: Не удалось найти файл «LPT1» – gigi

+0

Я поделился принтером (что-то я забыл) с общим именем «TSCTTP-1», и я попробовал вместо «LPT1» @ «\\ 127.0.0.1 \ TSCTTP-1», но я получаю: IOException: Не удается достичь местоположения сети. – gigi

+0

Я обновил ответ с помощью моих настроек и полного фрагмента кода. Не забудьте проверить права пользователя для общего принтера для пользователя, который выполняет код. – NetRat