Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Печать напрямую в LPT порт / 11 сообщений из 11, страница 1 из 1
28.03.2006, 10:29
    #33628826
Valerii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать напрямую в LPT порт
Народ, кто подскажет, как на низком уровне отправить текстовую строку в
LPT порт
Спасибо...
...
Рейтинг: 0 / 0
28.03.2006, 10:42
    #33628858
MicMic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать напрямую в LPT порт
А хотя бы 'copy ИмяФайла ПортПринтера'
...
Рейтинг: 0 / 0
28.03.2006, 10:59
    #33628904
tvxtvxt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать напрямую в LPT порт
MicMicА хотя бы 'copy ИмяФайла ПортПринтера'
я от этого хочу уйти....
...
Рейтинг: 0 / 0
28.03.2006, 11:05
    #33628917
Vladimir M Sklyar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать напрямую в LPT порт
Попробуйте нечто вот такое:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
#define HANDLE INTEGER
#define BOOLEAN LONG

PROCEDURE PrintTextFile
 LPARAMETERS cFileName as String

 LOCAL hPrinter as Integer
 LOCAL cPrinter as String
 LOCAL cString as String
 LOCAL nWritten as Long
 LOCAL oPB as Object
 LOCAL hFile as Integer
 LOCAL nAll as Long
 LOCAL nCur as Long

 IF .NOT.FILE(m.cFileName) THEN
  MESSAGEBOX("Файл "+m.cFileName+" не найден!", 16 ,"Печать файла")
  RETURN .F.
 ENDIF

 DECLARE BOOLEAN OpenPrinterA IN WINSPOOL.DRV AS OpenPrinter ;
  STRING pPrinterName, ;
  HANDLE @phPrinter, ;
  LONG pDefault

 DECLARE LONG StartDocPrinterA IN WINSPOOL.DRV AS StartDocPrinter ;
  HANDLE hPrinter, ;
  LONG Level, ;
  STRING pDocInfo

 DECLARE BOOLEAN EndDocPrinter IN WINSPOOL.DRV AS EndDocPrinter ;
  HANDLE hPrinter

 DECLARE BOOLEAN WritePrinter IN WINSPOOL.DRV AS WritePrinter ;
  HANDLE hPrinter, ;
  STRING pBuf, ;
  LONG cbBuf, ;
  LONG @pcWritten

 DECLARE BOOLEAN ClosePrinter IN WINSPOOL.DRV AS ClosePrinter ;
  HANDLE hPrinter

 DECLARE LONG GetLastError IN WIN32API as GetLastError

 m.cPrinter=GETPRINTER()
 IF ISBLANK(m.cPrinter) THEN
  RETURN .F.
 ENDIF

 m.hFile=FOPEN(m.cFileName)
 IF m.hFile< 0  THEN
  MESSAGEBOX("Hе удалось открыть файл "+m.cFileName+"!", 16 ,"Печать файла")
  RETURN .F.
 ENDIF

 IF OpenPrinter(m.cPrinter,@m.hPrinter, 0 )= 0  THEN
  FCLOSE(m.hFile)
  m.nWritten=GetLastError()
  MESSAGEBOX("Произошла ошибка при печати! Код ошибки "+ALLTRIM(STR(m.nWritten, 10 , 0 )), 48 ,"Печать файла")
  RETURN .F.
 ENDIF

 IF StartDocPrinter(m.hPrinter, 1 ,REPLICATE(CHR( 0 ), 12 ))= 0  THEN
  FCLOSE(m.hFile)
  m.nWritten=GetLastError()
  MESSAGEBOX("Произошла ошибка при печати! Код ошибки
"+ALLTRIM(STR(m.nWritten, 10 , 0 )), 48 ,"Печать файла")
  ClosePrinter(m.hPrinter)
  RETURN .F.
 ENDIF

 DO WHILE .NOT.FEOF(m.hFile)
  m.cString=FREAD(m.hFile, 1024 )
  IF WritePrinter(m.hPrinter,m.cString,LEN(m.cString),@m.nWritten)= 0  THEN
   m.nWritten=GetLastError()
   MESSAGEBOX("Произошла ошибка при печати! Код ошибки "+ALLTRIM(STR(m.nWritten, 10 , 0 )), 48 ,"Печать файла")
   EXIT
  ENDIF
 ENDDO

 FCLOSE(m.hFile)

 EndDocPrinter(m.hPrinter)

 ClosePrinter(m.hPrinter)

ENDPROC

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
28.03.2006, 11:08
    #33628924
Vladimir M Sklyar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать напрямую в LPT порт
Собственно это процедура в котору нада передавать имя файла для печати (тестового файла)
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
28.03.2006, 11:09
    #33628929
Станислав C.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать напрямую в LPT порт
ValeriiНарод, кто подскажет, как на низком уровне отправить текстовую строку в
LPT порт
Спасибо...

В FPD это было возможно через fopen(), если указать вместо имени файла имя порта.
В FPW/VFP надо использовать WinAPI...
...
Рейтинг: 0 / 0
28.03.2006, 13:54
    #33629599
S866
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать напрямую в LPT порт
Ну вы господа любите себе жизнь то усложнять

вот только что опробовал (VFP 8 на других тоже пойдет)

Код: plaintext
1.
2.
SET DEVICE TO printer
??? 'ПРОБА печати'
EJECT
...
Рейтинг: 0 / 0
28.03.2006, 14:01
    #33629626
S866
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать напрямую в LPT порт
Даже проще

Код: plaintext
1.
??? 'ПРОБА ПЕЧАТИ'
eject
или

Код: plaintext
1.
2.
3.
set device to printer
?? 'ПРОБА ПЕЧАТИ'
eject
set device to screen

??? - безусловный вывод на принтер

?? - вывод на текущее устройство вывода (screen,printer, file)
...
Рейтинг: 0 / 0
28.03.2006, 14:08
    #33629656
Vladimir M Sklyar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать напрямую в LPT порт
Мы не ищем легких путей :)
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
28.03.2006, 14:11
    #33629674
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать напрямую в LPT порт
угу и молодежь от фокса отпугиваем ... ;)
...
Рейтинг: 0 / 0
28.03.2006, 15:05
    #33629901
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Печать напрямую в LPT порт
Ну раз мы не ищем легких путей то вот тут лежит пример как печатать картинку на принтер (полностью WinAPI). естественно на картинке может быть текст.
http://www.foxclub.ru/sol/index.php?act=view&id=462
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Печать напрямую в LPT порт / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]