linux打印机测试程序,C语言实现的linux中打印程序

Linux中的打印程序有两种,一种是系统打印,也就是lp命令(一般系统配置好打印机以后,这个命令就可以直接使用),要求打印机直接接在装有Linux系统的机器上,另一种是终端打印,就要要求打印机是接在终端的串口上.

那么lp是系统自带的,我们可以简单地使用system("lp filename");就可以实现打印机打印文件了

另外一种需要我们自己再写一个程序,这个程序可以是sh,也可以是C语言:

sh程序:比如locp.sh

if [ $# = 0 ]

then

exit -1           /*如果参数为0个,直接退出*/

else       echo "/033[5i"    /*打开这个端口,很什么打印机无关,一般打印机端口都是这个*/

cat $*            /*显示文件名,其实就是在这个端口显示这个文件,打印机就会自动打印了*/

echo "/033[4i"    /*关闭端口*/

exit 0            /*正常退出*/

fi

C程序:比如locp.c  (时间仓促,格式未整理,注释未加,未测试)编译使用: cc -o locp locp.c

#include

#include

#include

int main ( int argc ,char * argv [])

{

FILE *rpt_ptr;

FILE *print_ptr;

char buf[10240];

char v_begin[]= "^[[5i";

char v_end[] = "^[[4i";

int num =0;

if ( argc != 2 )

{

printf("Usage : locp filename /n");

return -1;

}

print_ptr = fopen ( "/dev/tty","wt");

if ( print_ptr == NULL )

{

printf("打开终端失败./n");

exit -1;

}

rpt_ptr = fopen ( argv[1],"rt");

if ( rpt_ptr == NULL )

{

printf("文件 %s 不存在或没有读权限 /n",argv[1]);

fclose(print_ptr);

exit -1;

}

fputs ( v_begin,print_ptr);

while (fgets(buf,10240,rpt_ptr) != NULL)

{

/*

if ( num > 20 )

{

fputs ( v_end,print_ptr);

fflush(print_ptr);

sleep(10);

fputs ( v_begin,print_ptr);

num =0;

}

num ++;

*/

num = strlen ( buf );

/*

if ( buf[num - 1] == '^M' )

{

buf[num-1] = '/0';

}

*/

fputs ( buf,print_ptr);

fflush(print_ptr);

}

// fputs ( "^L",print_ptr);

fputs ( v_end,print_ptr);

fflush(print_ptr);

fclose(rpt_ptr);

fclose(print_ptr);

return 0;

}

c程序中使用system("locp filename");即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值