打印针检测工具
#3 功能:
检测所有打印针或任意指定8根以下的打印针。
#3 用法:
TESTPRN [N1] [N2] [N3] [N4] [N5] [N6]
[N7] [N8]
#3 其中:
Ni为任意指定的打印针号,范围为1~24(从上至下)。
如果只有一个参数且为“/?”,则提示帮助信息;若无参数则默认检测所有打印针。
#3 程序说明:
该程序通过调用打印机图象控制命令实现单针打印,其命令格式为:“ESC * M N1 N2 DATA”,其中M表示图象选择,N1和N2表示打印列数,总列数为:N1+N2×255,DATA为打印数据,具体请参照有关打印机使用手册。程序所用的图象控制信息和打印数据分别存于数组STR1[]和STR2[]中。STR1[]中内容用户可根据需要自行修改。本程序在DOS 6.22下,对LQ-1600K、LQ-1900K、NEC-P8000等打印机进行测试,效果良好。注意:如果在UCDOS、CCDOS等汉字系统下运行,请先卸下打印驱动程序,否则将不能正常检测。
#3 程序清单如下:<文件名:TESTPRN.C>
/*快速检测打印针程序*/
#include "stdio.h"
#include "stdlib.h"
int n=1;
FILE *fprn;
main(argc,argv)
int argc;
char *argv[];
{int i,j,k,l,n1,n2,flag=0;
fprn=fopen("PRN","w");
if (argc<2)
for (i=0;i<3;i++)
{ for (j=0;j<8;j++) /*调用检测子程序*/
{ test(i,j,flag);}}
else
{for(k=1;k<argc;k++)
{ /*转换命令行参数为整形数*/
l=atoi(argv[k]);
if((argc==2)&&(!(atrcmp(argv[1],"/?")))||(argc>9)||l<1||l>24)
{ /*参数错误显示帮助信息*/
help();
exit(0);}}
flag=1;
for(k=1;k<argc;k++)
{l=atoi(argv[k]);
n1=1/8;
n2=1%8;
test(n1,n2,flag);
}}
fprint(fprn,"\n");
fclose(fprn);}
test(x,y,z) /*检测子程序*/
int x,y,z;
{int k,l,m; /*图象命令控制信息*/
char str1[]={27,42,32,40,1,NULL};
/*用于存放打印数据*/
char str2[3]; /*产生各打印针编码*/
str2[x]=128>>y;
switch(x)
{case 0:str2[1]=str2[2]=0;
break;
case 1:str2[0]=str2[2]=0;
break;
case 2:str2[0]=str2[1]=0;
break;}
fprintf(fprn,"\n\n\tPrint with %02-pin:",(!z)?(n++):(x*8+y+1));
for (m=0;m<5;m++) /*发送图象打印指令*/
fprint(fprn,"%c",str1[m]);
for(k=0;k<296;k++)
for(l=0;l<3;l++) /*传送打印数据*/
fprintf(fprn,"%c",str2[1]);
fprintf(fprn,"\n");}
help() /*帮助信息*/
{printf("Useage:testprn [N1] [N2] [N3]
[N4] [N5] [N6] [N7] [N8]");}