我写的是一个打印条形码的程序,利用外部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打开并口;
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();//关闭并口---------
我用并口串口USB打印都没问题,把代码贴上看看
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("打印成功");