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

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

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

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

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

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

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

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

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


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