打印

s3c2440 usb-host驱动HP彩色打印机程序片断

[复制链接]
6107|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xfcjava2|  楼主 | 2010-4-10 21:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
s3c2440 usb-host驱动HP彩色打印机程序片断:

U8 PCL_RESET_CMD[]   ={0x1b,'%','-','1','2','3','4','5','X',0};
U8 PCL_END_CMD[]     ={0x1b,'E',0};
U8 PCL_PageSize_cmd[]={0x1b,'&','l','0','O',0};
U8 PCL_PrtDir_cmd[]  ={0x1b,'&','l','2','6','A',0};

U8 prt_content_buf[]="HP Printer test!!!";


void USB_PCL_Command(U8 *str)       
{         
   U8        pcl_head[]={0x1b,0};  

         usb_host_SendString(pcl_head);

         usb_host_SendString(str);                  
}       


/****************************************************************************       
* 功    能:USB打印机打印文字起始位置(units:PCL)  用于精确定位
*---------------------------------------------------------------------------*
* 入口参数:x1:起始点横坐标;y1:起始点纵坐标
* 出口参数:nil
****************************************************************************/

void USB_Text_Posn(U8 x1,U8 y1)       
{
        U8 psn_buf[13]={0x1B,'&','a',0xff,0xff,'C',0x1B,'&','a',0xff,0xff,'R',0};

  //PCL Command "Esc&a#C"       
        psn_buf[3]=x1/10+0x30;        //水平位置
        psn_buf[4]=x1%10+0x30;

        //PCL Command "Esc&a#R"
        psn_buf[9]=y1/10+0x30;        //垂直位置
        psn_buf[10]=y1%10+0x30;

  usb_host_SendString(psn_buf); //发送12个数据       
       
}


/****************************************************************************       
* 功    能:USB打印机打印字符串
*---------------------------------------------------------------------------*
* 入口参数:str:字符串指针
* 出口参数:nil
****************************************************************************/

void USB_PCL_String(U8 *str)       
{       
  usb_host_SendString(str);           
}       



void USB_Printer_Test(void)
{                         
         int i;

         usb_host_SendString(PCL_RESET_CMD);
         usb_host_SendString(PCL_END_CMD);         

         usb_host_SendString(PCL_PageSize_cmd);        //A4
         usb_host_SendString(PCL_PrtDir_cmd);  //Page Orientation:Portrait
         
         USB_PCL_Command("(s1P");  //Font:To specify proportional spacing
         USB_PCL_Command("(s22V"); //Font Height:22
         USB_PCL_Command("(s3B");  //Font:Bold           
         
         USB_Text_Posn(25,5);
         USB_PCL_String("HP Photosmart D5368 Print Test");

         USB_PCL_Command("(s0P");         //Font:To specify fixed spacing
         USB_PCL_Command("(s12V"); //Font Height:12
         USB_PCL_Command("(s0B");  //Font:Medium

         USB_Text_Posn(10,7);       
         for(i=0;i<8;i++)
           USB_PCL_String("----------");        

         USB_Text_Posn(10,15);       
         for(i=0x30;i<0x3A;i++)         //0~9
           usb_host_SendByte(i);                                               

         USB_Text_Posn(10,16);                               
         for(i=0x61;i<0x7B;i++)         //a~z
           usb_host_SendByte(i);       

         USB_Text_Posn(10,17);
         for(i=0x41;i<0x5B;i++)        //A~Z
     usb_host_SendByte(i);       

         USB_Text_Posn(10,18);       
         USB_PCL_String("S3C2440 USB HOST PRINTER TEST END !!!");  
                                                                                
         usb_host_SendString(PCL_RESET_CMD);
         usb_host_SendString(PCL_END_CMD);           
                
}



void About_USB_Print(void)
{                         
         int i;

         usb_host_SendString(PCL_RESET_CMD);
         usb_host_SendString(PCL_END_CMD);         

         usb_host_SendString(PCL_PageSize_cmd);        //A4
         usb_host_SendString(PCL_PrtDir_cmd);  //Page Orientation:Portrait
         
         USB_PCL_Command("(s1P");  //Font:To specify proportional spacing               
         USB_PCL_Command("(s22V"); //Font Secondary Height:22
         USB_PCL_Command("(s3B");  //Font:Bold           
         
         USB_Text_Posn(50,5);
         USB_PCL_String("AutoDist About");

         USB_PCL_Command("(s0P");         //Font:To specify fixed spacing
         USB_PCL_Command("(s12V"); //Font Height:12
         USB_PCL_Command("(s0B");  //Font:Medium

         USB_Text_Posn(10,7);       
         for(i=0;i<6;i++)
           USB_PCL_String("----------");        

         USB_PCL_Command("(s1P");  //Font:To specify proportional spacing
         USB_PCL_Command("(s14V"); //Font Height:14
         USB_PCL_Command("(s3B");  //Font:Bold           
         
         USB_Text_Posn(10,13);       
         USB_PCL_String("About Dialog");

         USB_PCL_Command("(s0P");         //Font:To specify fixed spacing
         USB_PCL_Command("(s12V"); //Font Height:12
         USB_PCL_Command("(s0B");  //Font:Medium

         USB_Text_Posn(33,13);       
         USB_PCL_String("Firmware Revison: V1.0");        
                                
         USB_Text_Posn(60,13);       
         USB_PCL_String("Boot: V3.0");        
         
         USB_Text_Posn(10,17);       
         USB_PCL_String("CPU Board        :   Core-S3C2440A   ");

         USB_Text_Posn(55,17);       
         USB_PCL_String("rev.:  B1");        

         USB_Text_Posn(10,19);       
         USB_PCL_String("Manufacturer name:   Embedded_Systerm");
         USB_Text_Posn(55,19);       
         USB_PCL_String("date: 25 JUL 2009");
         
         USB_Text_Posn(10,21);       
         USB_PCL_String("Test bench ID    :   NONE");
         USB_Text_Posn(55,21);       
         USB_PCL_String("Test revision number: 0");

         USB_Text_Posn(10,25);       
         USB_PCL_String("Master Control Board     :  MB_R091158");

         USB_Text_Posn(10,28);       
         USB_PCL_String("Temperature Control Board:  TB_R0911585");

         USB_Text_Posn(10,31);       
         USB_PCL_String("Heating Control Board    :  HB_R0911643");          
                   
                                                                                
         usb_host_SendString(PCL_RESET_CMD);
         usb_host_SendString(PCL_END_CMD);           
                
}

相关帖子

沙发
xfcjava2|  楼主 | 2010-4-10 21:54 | 只看该作者
不知同行看后有什么感想??

使用特权

评论回复
板凳
xfcjava2|  楼主 | 2010-4-10 22:10 | 只看该作者
我提供给你们的都是精华,是我本人摸索着走过来的!!!

使用特权

评论回复
地板
xfcjava2|  楼主 | 2010-4-10 22:21 | 只看该作者
搞嵌入式打印应用,USB打印是大势所趋

使用特权

评论回复
5
xfcjava2|  楼主 | 2010-4-10 22:24 | 只看该作者
不使用ARM9,使用普通的51单片机控制hp彩色打印机,本人也做过,如有感兴趣的同行请联系!

使用特权

评论回复
6
VERY0| | 2010-4-11 14:29 | 只看该作者
帮顶,有点好玩,但是还不知道能够拿来干嘛

使用特权

评论回复
7
wuye1030| | 2010-4-17 13:33 | 只看该作者
顶啊,好东西,希望提供更多学习的资料

使用特权

评论回复
8
li_g888| | 2010-4-21 13:42 | 只看该作者
不知道你是那款打印机?要是能有源程序看看就好了,最近也要做这个,可没经验。。。。,又不好意思张口要,嘿嘿,

使用特权

评论回复
9
ldw| | 2010-4-21 22:49 | 只看该作者
路过。支持下。

使用特权

评论回复
10
dalong168| | 2010-11-17 10:21 | 只看该作者
对我太有帮助了

使用特权

评论回复
11
laihaowen| | 2011-3-21 21:26 | 只看该作者
很好!!!!!

使用特权

评论回复
12
至尊宝| | 2011-3-23 15:33 | 只看该作者
好,问下楼主联系方式,有问题请教

使用特权

评论回复
13
d_zhzh08022205| | 2012-3-17 10:05 | 只看该作者
帮楼主顶上去,看了楼主的帖子,我发现我之前太想当然了!我之前认为打印ASCII码会很简单,就是开始发一个复位指令,接着发送打印机数据,然后再发送一个换页指令就可以打印出东西了。原来之前要做很多初始设置,我看楼主的初始化设置有以下一些内容:复位,打印页面设置,打印方向设置,起始位置设置,字体设置。请问楼主,打印机都是有内置字库吗?在初始化的时候,要不要分配字符表呢?如果做一个最简单的打印,比如打印一个数字1,是不是完成了楼主上面所写的初始化之后,直接发送ASCII码0x31,之后再发送复位命令就可以打印出1来了呢?还请楼主多多指教!

使用特权

评论回复
14
jeesepzy| | 2012-4-25 13:25 | 只看该作者
能不能把你的这个单片机通过USB控制打印机的硬件电路给我发一份啊   760050124@qq.com  谢谢啦!

使用特权

评论回复
15
czbryq| | 2012-12-20 20:11 | 只看该作者
xfcjava2 发表于 2010-4-10 22:24
不使用ARM9,使用普通的51单片机控制hp彩色打印机,本人也做过,如有感兴趣的同行请联系! ...

你的联系方式呢?

使用特权

评论回复
16
xfcjava2|  楼主 | 2012-12-20 22:35 | 只看该作者
QQ: 390350125

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

450

帖子

42

粉丝