У меня есть устаревшая программа Java, которая обрабатывает специальный принтер для карточек, отправляя двоичные данные в порт LPT1 (драйвер принтера не задействован, программа Java создает двоичный поток).
Программа корректно работала на старом компьютере клиента. Программа на Java отправила все байты на принтер, и после отправки последнего байта программа не была заблокирована. Завершение печати карты заняло еще минуту, но пользователь смог продолжить работу с программой.
После смены компьютера клиента (но не принтера или Java-программы) программа не завершает задачу, пока карта не будет готова, она блокируется до последней секунды.
Мне кажется, что LPT1 теперь ведет себя иначе, чем было раньше. Можно ли это изменить в Windows? Я проверил настройки параллельного порта в BIOS: для параллельного порта установлено значение EPP + ECP (но я также попробовал два других варианта: двунаправленный, только выход). Может какой-то буфер параллельного порта маловат? Как я могу его увеличить?
Пожалуйста, проверьте настройки брандмауэра и антивируса, если они есть?
Служба диспетчера очереди печати запущена? Я знаю, что это далеко не все, но это именно тот симптом, который вы бы получили, если бы не зацикливание.
Проверьте настройки LPT1 в диспетчере устройств. Должно быть что-то о буферизации или прямой печати как mh предлагает.
Вот небольшой выстрел (конечно, непроверенный). Установите общий драйвер принтера для принтера на LPT1. После этого вы сможете настроить параметры спула для принтера. Windows не будет знать, что вы не используете этот конкретный драйвер, но все равно должна подчиняться настройкам спула.
Еще одна вещь, которую стоит попробовать, если возможно: щелкните правой кнопкой мыши программу Java, перейдите на вкладку «Совместимость» и установите режим совместимости на Windows 98 / ME или Windows 95. Вы также можете попробовать режимы NT4.0 и 2000.
вы отправляете данные из основного (awt) потока? Если да, вы можете создать новый поток и позволить ему завершить свою работу в фоновом режиме, чтобы пользовательский интерфейс снова стал отзывчивым.