您的位置:首页 > 其它

有关热敏打印机接口程序

2008-10-28 15:25 183 查看
/*
*****************
* 卡交易数据结构
*********************
*/
typedef struct tag_StrRecoder //交易数据结构
{
unsigned char DealNo[4]; //卡号 0x12 0x34 0x56 0x7F;目的是显示123456f
unsigned char AccountNo[4]; //帐号
unsigned int Sum; //消费金额 150 1.50元
unsigned int DealBal; //卡余额
unsigned char DealTime[8]; //交易时间
unsigned char POSNo[4]; //POS编号
unsigned char PipeNo[4]; //流水号
unsigned char PrtTime[8]; //打印时间
}StrRecoder,*pStrRecoder;

/

*
******************
* 控制命令
******************
*/
char InitPrint[2] = {0x1B,0x40};//初始化ESC @
char PrtBlack[4] = {0x1B,0x66}; //打印空格ESC J m n
char PtrGoLine[3] = {0x1B,0x64,0x03};//ESC j n 走纸3行
char Enter[1] = { 0x0A };
/*
**************************************************************************************************************
* 函 数 :PrintStytle()
*
* 描 述 :PrintStytle 打印空格,初始化,走纸
*
* 参 数 :type 1,是打印空格;2是初始化;3是走纸
*
* 返 回 : 无
*
**************************************************************************************************************
*/
void PrintStytle( int type )
{
int i;
switch ( type )
{
case 1://打印空格
for ( i =0;i<4;i++ )
HW_DBGU_Putchar(PrtBlack[i]);//控制字符只能一个一个发送
break;
case 2://初始化
for ( i =0; i<2; i++)
HW_DBGU_Putchar(InitPrint[i]);//控制字符只能一个一个发送
break;
case 3:
for ( i =0; i<3; i++)
HW_DBGU_Putchar(PtrGoLine[i]);//控制字符只能一个一个发送
break;
default:
break;
}

}
/*
**************************************************************************************************************
* 函 数 :PrintAPI()
*
* 描 述 :PrintAPI 打印记录的接口函数
*
* 参 数 :PrintData : 结构类型,每个域包括不同种类的数据
*
* 返 回 : 无
* 注 意 : 卡号、帐号、流水号都以十进制显示
*
**************************************************************************************************************
*/
void PrintAPI(StrRecoder* PrintData)
{
char string[32]; //定义一个数组
PrintStytle( 2 ); //初始化打印机
sprintf(string," 郑州新开普电子"); //格式化一串数据到数组
HW_DBGU_PDC_SendStr(string); //向串口发送字符串
HW_DBGU_Putchar(Enter[0]); //回车字符 ,控制打印机打印缓冲区中数据
PrintStytle( 2 ); //初始化打印机
sprintf(string," 欢迎光临!"); //格式化一串数据到数组
HW_DBGU_PDC_SendStr(string); //向串口发送字符串
HW_DBGU_Putchar(Enter[0]); //回车字符
PrintStytle( 2 ) ; //初始化,参数为2
sprintf(string,"==============================");
HW_DBGU_PDC_SendStr(string);
HW_DBGU_Putchar(Enter[0]); //回车字符
PrintStytle( 2 ) ; //初始化,参数为2
////////////////////打印卡号
// sprintf(string,"卡号:%#18X",*(u32 *)PrintData->DealNo); //#18X 显示加0x 宽度18、16进制输出
sprintf(string,"卡 号:%u",PrintData->DealNo[0]*0x1000000 + /
PrintData->DealNo[1]*0x10000 + /
PrintData->DealNo[2]*0x100 + /
PrintData->DealNo[3] );
HW_DBGU_PDC_SendStr(string); //送字符
HW_DBGU_Putchar(Enter[0]); //回车字符
PrintStytle( 2 ) ; //初始化,参数为2
sprintf(string,"帐 号:%u",PrintData->AccountNo[0]*0x1000000 + /
PrintData->AccountNo[1]*0x10000 + /
PrintData->AccountNo[2]*0x100 + /
PrintData->AccountNo[3] );

HW_DBGU_PDC_SendStr(string); //需要对字符进行处理
HW_DBGU_Putchar(Enter[0]); //回车字符
PrintStytle( 2 ) ; //初始化,参数为2
// sprintf(string,"交易时间:%02X%02X-%02X-%02X-%02X:%02X:%02X", //初始化命令和横向放大倍数设置1:1
sprintf(string,"%c%c交易时间:%c%c%c%02X%02X-%02X-%02X %02X:%02X:%02X", /
0x1b,'@',0x1b,'U',0x1, /
PrintData->DealTime[0], /
PrintData->DealTime[1], /
PrintData->DealTime[2], /
PrintData->DealTime[3], /
PrintData->DealTime[4], /
PrintData->DealTime[5], /
PrintData->DealTime[6]);

HW_DBGU_PDC_SendStr(string);
HW_DBGU_Putchar(Enter[0]); //回车字符
PrintStytle( 2 ) ; //初始化,参数为2
//////////////////////////////
memset ( string,0,32 );
sprintf(string,"消 费 额:%u.%u 元",(PrintData->Sum)/100,(PrintData->Sum)%100);
HW_DBGU_PDC_SendStr(string);
HW_DBGU_Putchar(Enter[0]); //回车字符
/////////////////////////////////////////
memset ( string,0,32 );
PrintStytle( 2 ) ; //初始化,参数为2
memset ( string,0,32 );
sprintf(string,"卡 余 额:%u.%u 元",(PrintData->DealBal)/100,(PrintData->DealBal)%100);
HW_DBGU_PDC_SendStr(string);
HW_DBGU_Putchar(Enter[0]); //回车字符
sprintf(string,"=============================="); //30
HW_DBGU_PDC_SendStr(string);
HW_DBGU_Putchar(Enter[0]); //回车字符
PrintStytle( 2 ) ; //初始化,参数为2
sprintf(string,"POS编 号:%u",PrintData->AccountNo[0]*0x1000000 +/
PrintData->AccountNo[1]*0x10000 + /
PrintData->AccountNo[2]*0x100 + /
PrintData->AccountNo[3] );
HW_DBGU_PDC_SendStr(string);
HW_DBGU_Putchar(Enter[0]); //回车字符

PrintStytle( 2 ) ; //初始化,参数为2
sprintf(string,"流 水 号:%u",PrintData->AccountNo[0]*0x1000000 +/
PrintData->AccountNo[1]*0x10000 + /
PrintData->AccountNo[2]*0x100 + /
PrintData->AccountNo[3] );

HW_DBGU_PDC_SendStr(string);
HW_DBGU_Putchar(Enter[0]); //回车字符
PrintStytle( 2 ) ; //初始化,参数为2
sprintf(string,"%c%c打印时间:%c%c%c%02X%02X-%02X-%02X %02X:%02X:%02X", /
0x1b,'@',0x1b,'U',0x1,/
PrintData->PrtTime[0], /
PrintData->PrtTime[1], /
PrintData->PrtTime[2], /
PrintData->PrtTime[3], /
PrintData->PrtTime[4], /
PrintData->PrtTime[5], /
PrintData->PrtTime[6]);
HW_DBGU_PDC_SendStr(string);
HW_DBGU_Putchar(Enter[0]); //回车字符
PrintStytle( 3 ) ; //走纸,参数为3 */
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: