我写的是一个打印条形码的程序,利用外部dll(驱动附带的)里面的函数对并口进行操作。
点击[打印]按钮,则:1打开并口;
2读数据库内容送到并口打印;
3关闭并口;-------------我第一次点打印的时候,可以正常打印;可是当我第二次点打印的时候,则不行。当我把打印机重新启动后,就可以打印了,这是怎么回事啊?
封装在BPLA.dll里的函数:
BPLA_OpenLpt(string addr,int timeout)//打开并口
BPLA_SetAllRotate(int flag)//旋转180度否
BPLA_PrintTrueType(string text,int x,int y,string fonttype,int fontheight,int fontwidth);//布局要打印的文字
BPLA_Print(int pieces,int samepieces,int outunit)//打印,
BPLA_CloseLpt();//关闭并口---------

解决方案 »

  1.   

    那不打印,就说明打印机对于你发送的数据解析不了
    我用并口串口USB打印都没问题,把代码贴上看看
      

  2.   

     int LptAddr;
                int result;
                LptAddr = 0x378;
                result = PrinterDll.BPLA_OpenLpt(LptAddr, 1000);
                if (result != PrinterDll.BPLA_OK)
                {
                    MessageBox.Show("打印端口打开失败");
                    return;
                }
                result = PrinterDll.BPLA_SetAllRotate(1);
                if (result != PrinterDll.BPLA_OK)
                {
                    MessageBox.Show("无法设置旋转");
                }
                result = PrinterDll.BPLA_StartArea(0, 680, 0, 0, 0, 0, 0, 0);
                if (result != PrinterDll.BPLA_OK)
                {
                    MessageBox.Show("无法设置打印区域");
                }
                result = PrinterDll.BPLA_PrintTruetype(tempPN, 210, 360, "黑体", 26, 0);
                PrinterDll.BPLA_PrintTruetype(tempPD, 410, 360, "黑体", 26, 0);
                PrinterDll.BPLA_PrintTruetype(tempPW, 210, 310, "黑体", 26, 0);
                PrinterDll.BPLA_PrintTruetype(tempDN, 320, 260, "黑体", 26, 0);
                PrinterDll.BPLA_PrintTruetype(tempDA, 210, 220, "黑体", 26, 0);
                PrinterDll.BPLA_PrintTruetype(tempDP, 210, 170, "黑体", 26, 0);
                PrinterDll.BPLA_PrintTruetype(tempPS, 470, 160, "黑体", 26, 0);
                PrinterDll.BPLA_PrintTruetype("净    重:", 100, 120, "黑体", 26, 0);
                PrinterDll.BPLA_PrintTruetype(tempWT, 210, 120, "黑体", 26, 0);
                PrinterDll.BPLA_PrintBarcode(bcv, 200, 20, 1, 4, 70, 4, 2, "000");
                result = PrinterDll.BPLA_Print(1, 0, 1);        
                if (result != PrinterDll.BPLA_OK)
                {
                    MessageBox.Show("打印失败");
                    return;
                }
                MessageBox.Show("打印成功");