为什么我无法使用中断14进行打印?

时间:2015-05-06 10:00:32

标签: c printing dos

以下是好时光的问题; - )

我在九十年代写了一个仍在使用的应用程序。它基于MS-DOS并打印到串行端口COM1。 现在有些打印机无法打印到。显然BIOS不会将数据发送到打印机。当我像这样初始化打印机时,它可以工作:

mode com1:9600,n,8,1
dir A:\ > com1:

我认为这与我在C程序中的做法没有什么不同: INIT:

union REGS regs;

m_iBaudRate = iBaudRate;
m_iParity = iParity;
m_iDataBits = iDataBits;
m_iStopBits = iStopBits;

    // Init

regs.h.ah = 0;
regs.h.al = getParamByte();
regs.x.dx = getBiosPort();

int86( 0x14, &regs, &regs );

打印:

regs.h.ah = 1;
regs.h.al = cChar;
regs.x.dx = getBiosPort();

int86( 0x14, &regs, &regs );

如上所述,这适用于许多具有各种打印机的机器,但不适用于某些打印机。任何提示?

0 个答案:

没有答案