У меня есть приложение, которое записывает команды на некоторые специализированные принтеры непосредственно на порт LPT1. Код выглядит следующим образом:Delphi - Как предотвратить зависание приложения при записи на LPT-порт
AssignFile(t, 'LPT1');
Rewrite(t);
Write(t,#27 + '@'); // initialize
Sleep(50); // avoid buffer fill
Write(t,#27#32 + Chr(0)); // set default font
...
Проблема заключается в том, что, когда принтер не подключен к порту, первая команда записи ничего не делает, он просто вешает трубку, и весь поток блокируется.
Есть ли способ определить тайм-аут для этих инструкций или вы можете рекомендовать другую библиотеку, которая могла бы выполнять эту работу? Было бы здорово, если бы у нее была функция Write, аналогичная функции в Delphi, потому что количество кода, использующего этот подход, очень велико, и было бы очень сложно все это изменить.
Я забыл упомянуть, что «t» определяется следующим образом: var t: TextFile; –
Да, есть способ определить тайм-ауты для операций на коммуникационных устройствах. См. Функции GetCommTimeouts и 'SetCommTimeouts'. –