我有一个传统的Java程序,通过发送二进制数据到LPT1端口(不涉及打印机驱动程序,Java程序创build二进制stream)来处理特殊的卡片打印机。
该程序正在与客户的旧电脑正常工作。 Java程序将所有字节发送到打印机,并在发送最后一个字节后,程序未被阻止。 花了一分钟才完成卡片打印,但用户能够继续使用该程序的工作。
在更换客户端的计算机(但不是打印机或Java程序)之后,程序不能完成任务,直到卡准备就绪,直到最后一秒被阻塞。
在我看来,LPT1现在比以前有不同的行为。 有没有可能在Windows中改变这个? 我检查了BIOS的并行端口设置:并行端口设置为EPP + ECP(但也尝试了另外两个选项:双向,仅输出)。 也许某种并行端口缓冲区太小? 我怎样才能增加它?
请检查防火墙设置和防病毒,如果有的话?
后台打印程序服务是否启动? 这是我知道的一个很长的一个镜头,但是如果不进行假脱机,这正是你所能得到的那种症状。
在设备pipe理器中检查LPT1的设置。 应该有一些关于后台打印或直接打印的build议。
这是一个远射(当然未经testing)。 在LPT1上安装打印机的通用打印机驱动程序。 那么你应该能够configuration打印机的假脱机设置。 Windows不会知道你没有使用该特定的驱动程序,但应该服从假脱机设置。
如果可能,请尝试另一种方法:右键单击Java程序,转到兼容性选项卡,然后将兼容模式设置为Windows 98 / ME或Windows 95.您也可以尝试NT4.0和2000模式。
你是从主(awt)线程发送数据? 如果是的话,你可以创build一个新的线程,让它在后台完成它的工作,以便ui再次变得响应。