|
|
|
MS DOS, FP2.5 ?Печать на COM1:"
|
|||
|---|---|---|---|
|
#18+
Ситуация такова 1. _=FOPEN("COM1",11) && 11 -- WRITE 2. __=FPUTS(_,"PRINT") Если ПРИНТЕР в неготовности , то вторая команда не завершается и программа не реагирует ни на что Вопрос: Как прекратить выполнение команды? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2006, 13:50 |
|
||
|
MS DOS, FP2.5 ?Печать на COM1:"
|
|||
|---|---|---|---|
|
#18+
Перед этим надо проверить : Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2006, 13:55 |
|
||
|
MS DOS, FP2.5 ?Печать на COM1:"
|
|||
|---|---|---|---|
|
#18+
2 Владимир СА но для этого необходимо сначала переопределить ПРИНТЕР SET PRIN TO COM1: А этого делать не хотелось бы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2006, 14:03 |
|
||
|
MS DOS, FP2.5 ?Печать на COM1:"
|
|||
|---|---|---|---|
|
#18+
TallinAl2 Владимир СА но для этого необходимо сначала переопределить ПРИНТЕР SET PRIN TO COM1: А этого делать не хотелось быПочему??? На время печати кто мешает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2006, 14:05 |
|
||
|
MS DOS, FP2.5 ?Печать на COM1:"
|
|||
|---|---|---|---|
|
#18+
2 Владимир СА Хорошо по другому вопрос Как прекратить выполнение второй (2.) команды? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2006, 14:59 |
|
||
|
MS DOS, FP2.5 ?Печать на COM1:"
|
|||
|---|---|---|---|
|
#18+
TallinAl...Как прекратить выполнение второй (2.) команды?Нет. Логика немного не такая. Сформировать текстовый файл, который будешь выводить на печать, а уж далее Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2006, 15:20 |
|
||
|
MS DOS, FP2.5 ?Печать на COM1:"
|
|||
|---|---|---|---|
|
#18+
2 Владимер СА Мне необходимо получить ошику PRINTER NOT READY при исползовании команды низкого уровня Вот в чем дело ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2006, 17:24 |
|
||
|
MS DOS, FP2.5 ?Печать на COM1:"
|
|||
|---|---|---|---|
|
#18+
Что-то я немного недопонимаю. И так, если ты послал на принтер какой-то текст, то он попадает в буфер принтера. Пусть принтер даже в состоянии "НЕГОТОВ", но в его буфере будет находиться информация и пока она нераспечатается следующая информация печататься небудет. Можно сбросить буфер принтера, у принтеров типа HP5000 эта функция имеется. Насколько я помню на старых (матричных) принтерах этого нет. И приходиться перезагружать принтер, т.е. выключать и включать заново. Как мы обсуждали выше имеются команды в FPD2.X для работы с принтером это: SET PRINTER - Разрешает или запрещает вывод на принтер или направляет вывод в файл, в порт или на сетевой принтер. PRINTSTATUS( ) - Возвращает значение "истина" (.T.), если принтер или печатающее устройство находится в режиме ONLINE, и значение "ложь" (.F.) в противном случае. А так же: SYS(13) - Возвращает статус принтера. В Visual FoxPro, FoxPro для Windows и FoxPro для MS-DOS возвращается статус OFFLINE, если принтер не готов, и статус READY, если принтер готов. Если принтер подсоединен к порту COM, SYS(13) возвратит READY в том случае, когда принтер возвращает состояние Clear To Send Data или Data Set Ready. Если принтер подсоединен к параллельному порту, SYS(13) возвратит OFFLINE в том случае, когда принтер возвращает состояние Out of Paper, I/O Error, Time Out, Printer Busy или Printer Not Selected. (М.Б. тебе использовать эту команду) И ряд других команд. Смотри по Help. Ну а теперь используй эти команды по своему умозаключению и делай что тебе надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2006, 06:56 |
|
||
|
MS DOS, FP2.5 ?Печать на COM1:"
|
|||
|---|---|---|---|
|
#18+
2 Владимир СА Спасибо Немного уточняю На машине 2 принтера. LPT1 --- EPSON LX-300 COM1 --- STAR SP200 (для печати кассовых чеков) На EPSON печать идет через команду @ PROW() и при любых состояниях принтера отличных от READY или ONLINE программа обработки ошибок перехватывает управление и выдает "PRINTER NOT READY. RETRY OR CANCEL" При выборе CANCEL управление программой передается следующей команде за @ PROW(). Печать на STAR SP200 идет через команды _=FOPEN("COM1",11) =FPUTS(_,"PROBA") и если на принтере кончается бумага , просто ломается или что-либо другое команда =FPUTS(_,"PROBA") не завершается и программа на ней зависает. И как пропихнуть ее дальше не знаю ( просто старая привычка обрабатывать ситуации , которые могут возникнут раз в 100 лет ) Почему не делаю вывод через SET PRIN TO COM1 и @ PROW() -- это вопрос уже десятый С уважением Александр ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2006, 11:19 |
|
||
|
MS DOS, FP2.5 ?Печать на COM1:"
|
|||
|---|---|---|---|
|
#18+
TallinAl...Печать на STAR SP200 идет через команды _=FOPEN("COM1",11) =FPUTS(_,"PROBA") и если на принтере кончается бумага , просто ломается или что-либо другое команда =FPUTS(_,"PROBA") не завершается и программа на ней зависает. И как пропихнуть ее дальше не знаю.... Почему не делаю вывод через SET PRIN TO COM1 и @ PROW() -- это вопрос уже десятыйТаким образом ты сам себя загоняешь в угол. Тебе надо перед каждой командой =FPUTS(_,"PROBA") производить проверку статуса принтера. А так вроде ты просто открыл порт связи на низком уровне _=FOPEN("COM1",11) если тут проработало нормально, ты всегда считаешь, что устройство работает нормально и пихаешь туда информацию. А тут и получаются грабли. У STAR SP200 скорее всего буфера да же нет. Вот и застрял поток. Я бы пробовал использовать вопрос десятый TallinAlПочему не делаю вывод через SET PRIN TO COM1 и @ PROW() -- это вопрос уже десятыйА так я не знаю как проверить работоспособность порта когда он уже открыт. Может более умные люди подскажут. Я бы пока использовал SET PRIN TO COM1 и проводил проверку перед каждым =FPUTS(_,"PROBA") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2006, 11:57 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33686191&tid=1591826]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
177ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 475ms |

| 0 / 0 |
