📄 print.c
字号:
//************************************************************
// 并口发数示例1 -- 适用于P1口未被占用的情况
//************************************************************
#include "print.h"
#include "24C02.h"
#include <set.h>
BYTE idata rece_buf[45];
void SendData(unsigned char UByte)
{
P0 = UByte;
while(BUSY);
STB=0;
STB=1;
}
unsigned char code DataList_1[]={
0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E, //~~~~~~~~~~
0x0a,
0xC7,0xEB,0xB5,0xB1,0xC3,0xE6,0xBA,0xCB,0xB6,0xD4, //check on time
0x0a,0x0a,0x0a
};//表尾
unsigned char idata DataList_4[]={
0x1c,0x26,0x1c,0x69,0x00, //汉字模式,16*16 0,1,2,3,4
0x1b,0x63,0x00, //反向打印 5,6,7
0x1c,0x0e, //8,9 //倍宽
0xB1,0xB1,0xbe,0xA9,0xCC,0xEC,0xD3,0xEE, //10~17 //北京天宇
0x0a, //18
0x1c,0x0e, //19,20 //倍宽
0x1b,0x66,0x00,0x02, //21,22,23,24 //换行,2空格
0xB3,0xC6,0xD6,0xD8,0xB5,0xA5, //25~30 //称重单
0x0a, //31
0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E, //~~~~~~~~~~32~47
0x0a //48
};//表头信息
unsigned char code DataList_5[]={
0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E, //~~~~~~~~~~
0x0a,
0xD0,0xF2,0xBA,0xC5,0x20,0xCA,0xB1,0xBC,0xE4,0x20,0xD6,0xD8,0xC1,0xBF,0x4B,0x47, //序号 时间 重量KG
0x0a
};//序号 时间 重量(表头)
/*打印当前记录记录*/
void print_record() //打印当前
{
WORD n;
BYTE i; //hl//要存记录的首地址
// char status;
n=(save_current_num-1)*0x0c+0x0010;
for(i=0;i<45;i++)
{ rece_buf[i]=0;}
dayin_biaotou(); //表头
dayin_yonghu(); //用户
dayin_riqi(); //日期
cc256R(&rece_buf[0],0x0c,n);
Delay1(5000);
dayin_leibie(rece_buf[2]); //打印类别
dayin_xuhao(); // 序号(表头2)
dayin_xinxi(&rece_buf[0], &rece_buf[6],&rece_buf[8]);
dayin_biaowei(); //表尾
}
void dayin_xuhao(void) //序号 时间 重量KG(表头)
{
unsigned char i;
BUSY = 1;
for(i=0;i<33;i++)
{
SendData(DataList_5[i]);
}
}
void dayin_all(void) //打印全部
{
BYTE i,leibie,status;
WORD n;
BYTE user[8];
BUSY = 1;
for(i=0;i<45;i++)
{ rece_buf[i]=0;}
Delay1(1000);
Delay1(100);
Delay1(1000);
Delay1(100);
status=cc256R(&rece_buf[0] , 0x16, 0x0003);
Delay1(1000);
Delay1(100);
leibie=rece_buf[9];
for(i=0;i<8;i++)
user[i]=rece_buf[1+i];
for(i=0;i<8;i++)
{DataList_4[10+i] = user[i] ;}
dayin_biaotou(); //表头1
dayin_riqi(); //日期
dayin_leibie(leibie);
dayin_zongci(save_current_num);
dayin_zongzhong(all_weight);
dayin_xuhao(); //序号(表头2)
for(i=save_current_num;i<=save_current_num;i--)
{
rece_buf[0]=i;
n=(i-1)*0x16+0x0013;
status=cc256R(&rece_buf[1] , 0x06, n);
dayin_xinxi(&rece_buf[0],&rece_buf[1],&rece_buf[5]);
Delay1(1000);
if(i==1) i=0;
}
dayin_biaowei(); //表尾
}
void dayin_biaotou(void) //打印表头
{
unsigned char i;
BUSY = 1;
for(i=0;i<49;i++)
{
SendData(DataList_4[i]);
}
}
void dayin_biaowei(void) //打印表尾
{
unsigned char i;
BUSY = 1;
for(i=0;i<30;i++)
{
SendData(DataList_1[i]);
}
}
void dayin_shijian(BYTE *time) //打印时间
{
BYTE shiwei,gewei;
hanzi_fanxiang();
SendData(0x20); //空格
shiwei =0x30+(*time)/10;
gewei = 0x30+(*time)%10;
SendData(shiwei);
SendData(gewei);
SendData(0x3a); //:
shiwei =0x30+(*(time+1))/10;
gewei = 0x30+(*(time+1))%10;
SendData(shiwei);
SendData(gewei);
SendData(0x20); //空格
}
void dayin_zongci(WORD p_data) //打印总次
{
hanzi_fanxiang();
set_pizhong_num_address_bydata(p_data) ;
Delay1(5000);
if(save_pizhong_buffer.wanwei==0x20) save_pizhong_buffer.wanwei=0x30;
if(save_pizhong_buffer.qianwei==0x20) save_pizhong_buffer.qianwei=0x30;
if(save_pizhong_buffer.baiwei==0x20) save_pizhong_buffer.baiwei=0x30;
if(save_pizhong_buffer.shiwei==0x20) save_pizhong_buffer.shiwei=0x30;
SendData(0xd7); //总
SendData(0xdc);
SendData(0xb4); //次
SendData(0xce);
SendData(0x3a); //:
SendData(save_pizhong_buffer.wanwei);
SendData(save_pizhong_buffer.qianwei);
SendData(save_pizhong_buffer.baiwei);
SendData(save_pizhong_buffer.shiwei);
SendData(save_pizhong_buffer.gewei);
SendData(0x0a); //换行
}
void dayin_zongzhong(long int p_data) //打印总重
{
hanzi_fanxiang();
set_zongzhong_num_address_bydata(p_data);
Delay1(5000);
SendData(0xd7); //总
SendData(0xdc);
SendData(0xd6); //重
SendData(0xd8);
SendData(0x3a); //:
SendData(save_type_buffer.baiwei);
SendData(save_type_buffer.shiwei);
SendData(save_type_buffer.gewei);
SendData(save_pizhong_buffer.baiwanwei);
SendData(save_pizhong_buffer.shiwanwei);
SendData(save_pizhong_buffer.wanwei);
SendData(save_pizhong_buffer.qianwei);
SendData(save_pizhong_buffer.baiwei);
SendData(save_pizhong_buffer.shiwei);
SendData(save_pizhong_buffer.gewei);
SendData(0x0a); //换行
}
void dayin_leibie(BYTE p_data) //打印类别
{
BYTE tem_1,tem_2;
hanzi_fanxiang();
tem_1 = p_data / 100;
tem_2 = p_data - tem_1 * 100;
save_type_buffer.baiwei = 0x30 + tem_1;
save_type_buffer.shiwei = 0x30 + tem_2/10;
save_type_buffer.gewei = 0x30 + (p_data - tem_1 * 100 - (tem_2/10) * 10);
SendData(0xc0); //类
SendData(0xe0);
SendData(0xb1); //别
SendData(0xf0);
SendData(0x3a); //:
SendData(save_type_buffer.baiwei);
SendData(save_type_buffer.shiwei);
SendData(save_type_buffer.gewei);
SendData(0x0a); //换行
}
void hanzi_fanxiang(void) //汉字,16*16,反向
{
SendData(0x1c);
SendData(0x26);
SendData(0x1c);
SendData(0x69);
SendData(0x00);
SendData(0x1b);
SendData(0x63);
SendData(0x00);
}
void huanhang_dayin(void) //换行
{
SendData(0x0a);
}
void dayin_yonghu() //打印用户
{
hanzi_fanxiang();
SendData(0xd3); //用
SendData(0xc3);
SendData(0xbb); //户
SendData(0xa7);
SendData(0x3a); //:
cc256R(&rece_buf[0],0x08,0x0007);
Delay1(5000);
SendData(rece_buf[0]);
SendData(rece_buf[1]);
SendData(rece_buf[2]);
SendData(rece_buf[3]);
SendData(rece_buf[4]);
SendData(rece_buf[5]);
SendData(rece_buf[6]);
SendData(rece_buf[7]);
SendData(0x0a); //换行
}
void dayin_xinxi(BYTE *sequence_num,BYTE *time,BYTE *weight) //存储信息
{
long int sequence_num_temp;
long int weight_temp ;
sequence_num_temp= (*sequence_num)*0x100 + *(sequence_num+1);
weight_temp= (*weight)*0x1000000+(*(weight+1))*0x10000+(*(weight+2))*0x100+(*(weight+3));
set_pizhong_num_address_bydata(sequence_num_temp) ;
if(save_pizhong_buffer.wanwei==0x20) save_pizhong_buffer.wanwei=0x30;
if(save_pizhong_buffer.qianwei==0x20) save_pizhong_buffer.qianwei=0x30;
if(save_pizhong_buffer.baiwei==0x20) save_pizhong_buffer.baiwei=0x30;
if(save_pizhong_buffer.shiwei==0x20) save_pizhong_buffer.shiwei=0x30;
//SendData(save_pizhong_buffer.wanwei); //屏蔽以后,打印的序号为3位数
//SendData(save_pizhong_buffer.qianwei);
SendData(save_pizhong_buffer.baiwei);
SendData(save_pizhong_buffer.shiwei);
SendData(save_pizhong_buffer.gewei);
dayin_shijian(time);
set_pizhong_num_address_bydata(weight_temp) ;
SendData(save_pizhong_buffer.shiwanwei);
SendData(save_pizhong_buffer.wanwei);
SendData(save_pizhong_buffer.qianwei);
SendData(save_pizhong_buffer.baiwei);
SendData(save_pizhong_buffer.shiwei);
SendData(save_pizhong_buffer.gewei);
SendData(0x0a); //换行
}
void dayin_riqi(void) //打印日期
{
hanzi_fanxiang();
SendData(0xc8); //日
SendData(0xd5);
SendData(0xc6); //期
SendData(0xda);
SendData(0x3a); //:
Get_1302(&data_to_1302);
get_date_from_1302_data(&data_to_1302);
SendData(0x32); //2
SendData(0x30); //0
SendData(year_buffer.shiwei);
SendData(year_buffer.gewei);
SendData(0x2e); //.
SendData(month_buffer.shiwei);
SendData(month_buffer.gewei);
SendData(0x2e); //.
SendData(day_buffer.shiwei);
SendData(day_buffer.gewei);
SendData(0x0a); //换行
}
void delay(void) //延时,主程序调用了
{
unsigned char m,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
void dayin_huizong(void) //打印汇总
{
WORD i,n;
WORD num=0;
long int all_leibie_weight=0;
long int weight_temp=0;
dayin_biaotou(); //表头1
dayin_yonghu(); //用户
dayin_riqi(); //日期
dayin_leibie(save_current_type);
for(i=save_current_num;i<=save_current_num;i--)
{
n=(i-1)*0x0c+0x0010+0x0002;
cc256R(&rece_buf[2] , 0x01, n);
Delay1(5000);
if(rece_buf[2]==save_current_type)
{
num++;
Delay1(5000);
}
if(i==1) i=0;
}
dayin_zongci(num); //打印总次
dayin_xuhao(); //序号(表头2)
for(i=save_current_num;i<=save_current_num;i--)
{
rece_buf[0]=i>>8;
rece_buf[1]=i;
n=(i-1)*0x0c+0x0010+0x0002;
cc256R(&rece_buf[2] , 0x01, n);
Delay1(5000);
if(rece_buf[2]==save_current_type)
{
cc256R(&rece_buf[2] , 0x06, n+4);
Delay1(5000);
weight_temp=rece_buf[4]*0x1000000+rece_buf[5]*0x10000+ rece_buf[6]*0x100+rece_buf[7];
all_leibie_weight+=weight_temp;
Delay1(5000);
dayin_xinxi(&rece_buf[0],&rece_buf[2],&rece_buf[4]);
Delay1(5000);
}
else continue;
if(i==1) i=0;
}
dayin_zongzhong(all_leibie_weight);
Delay1(5000);
dayin_biaowei();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -