⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 print_new.c

📁 记录仪
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <absacc.h>
#include <reg52.h>

#define uchar unsigned char

#define INPUT0 XBYTE[0X8200]
#define INPUT1 XBYTE[0X8300]



extern void Clr_WDog(void);

void printhz(uchar code *d,uchar num) ; //打印代码空间的字符串
void printover(uchar NUM_OVERTIME,uchar *ptr);//打印一条超时驾驶记录
bit read_print(void) ; //读打印机状态
void init_print(void);
void print(uchar xdata *d,uchar num);
void space(uchar num) ;
void printrecord(void);




uchar  code huiche[1]={0X0D};//回车

uchar  code carNo[9]={0xb3,0xb5,0xc5,0xc6,0xba,0xc5,0xc2,0xeb,0x3a};                /*----车牌号码:----*/
uchar  code carType[9]={0xb3,0xb5,0xc5,0xc6,0xb7,0xd6,0xc0,0xe0,0x3a};              /*----车牌分类:----*/
uchar  code driverNo[11]={0xbc,0xdd,0xca,0xbb,0xd4,0xb1,0xb4,0xfa,0xc2,0xeb,0x3a};  /*----驾驶员代码:----*/
uchar  code driverID[11]={0xbc,0xdd,0xca,0xbb,0xd6,0xa4,0xba,0xc5,0xc2,0xeb,0x3a};  /*----驾驶证号码:----*/
uchar  code time[9]={0xb4,0xf2,0xd3,0xa1,0xca,0xb1,0xbc,0xe4,0x3a};                 /*----打印时间:----*/

uchar  code speed1[21]={0xcd,0xa3,0xb3,0xb5,0xc7,0xb0,0x31,0x35,
0xb7,0xd6,0xd6,0xd3,0xc6,0xbd,0xbe,0xf9,0xcb,0xd9,0xb6,0xc8,0x3a};                  /*----停车前15分钟平均速度:----*/

uchar  code stp_tm[9]={0xcd,0xa3,0xb3,0xb5,0xca,0xb1,0xbc,0xe4,0x3a};               /*----停车时间:----*/
uchar  code unit[4]={0x6b,0x6d,0x2f,0x68};                                          /*----km/h----*/
uchar  code maohao[3]={0x31,0x3a,0x0a};  // 1 :
uchar  code record[15]={0xc6,0xa3,0xc0,0xcd,0xbc,0xdd,0xca,0xbb,
0xbc,0xc7,0xc2,0xbc,0x3a,0xce,0xde};                                                /*----疲劳驾驶记录:无----*/

uchar  code start[9]={0xbf,0xaa,0xca,0xbc,0xca,0xb1,0xbc,0xe4,0x3a};                /*----开始时间:----*/

uchar  code end[9]={0xbd,0xe1,0xca,0xf8,0xca,0xb1,0xbc,0xe4,0x3a};                  /*----结束时间:----*/

extern unsigned char xdata new_speed_15min[15][21];// 停车前15分钟速度
extern unsigned char xdata cur_id[25];//驾驶员资料
extern unsigned char xdata overtime_rec[21][28];
extern unsigned char xdata stop_3day[11];               //存放停车当天及前两天的年、月、日
extern unsigned char xdata index_threeday;// _at_ 0x801F;
extern unsigned char xdata cur_id[7];//7个字节的当前驾驶员代码
extern uchar xdata YEAR;              //主程序里定义的放当前时间的地址
extern unsigned char xdata vin[41];
extern unsigned char xdata num_ovrec;
void init_print(void)  // 打印机初始化
{
  Clr_WDog();       //清w-dog
  //stxd=1;
  T2CON=0X34;
  RCAP2H=0XFF;                //18.432MHz下9600波特
  RCAP2L=0XC4;
  SCON=0XC0;
}

bit read_print()       // 读打印机状态,0 打印机准备好,1 打印机不在线或满忙
{
 Clr_WDog();       //清w-dog
 if ((INPUT1&0x04)==0) return(0);
 else return(1);
}

void printhz(uchar code *d,uchar num)   // 输出代码空间字符串到打印机
{
 uchar xdata i;
 for(i=0;i<num;i++)
 {
  Clr_WDog();       //清w-dog
  ACC=d[i];
  TB8=(!P);
  SBUF=d[i];
  while(TI==0)
  {
     Clr_WDog();       //清w-dog
  }
  TI=0;
  while(read_print());
 }
}

void print(uchar xdata *d,uchar num)   // 输出数据空间字符串到打印机
{
 uchar xdata i;
 for(i=0;i<num;i++)
 {
  Clr_WDog();       //清w-dog
  ACC=d[i];
  TB8=(!P);
  SBUF=d[i];
  while(TI==0)
  {
    Clr_WDog();       //清w-dog
  }
  TI=0;
  while(read_print());
 }
}
void space(uchar num)                //输出num个空格
{
   uchar xdata sp[1]=0x20,i;
   for(i=0;i<num;i++)
   {
      Clr_WDog();       //清w-dog
      print(sp,1);
   }

}

void printrecord(void)  // main()//响应主菜单 打印 命令时调用的函数。
{
	unsigned char xdata i,j,k,l,m,temp;//t1,t2,t3 在day_three[3][3]中前天、昨天、今天
	unsigned char xdata number_overtime;
	unsigned char xdata a[3],b[3],c[5],d[5],e[15];

	uchar * ptr_time;

	uchar xdata  No[12]; //车牌号码
	uchar xdata  Type[12];//车辆类型
	uchar xdata  num[25]; //驾驶员资料
	uchar xdata  curtime[14]={0x32,0x30};//yyyy mm dd hh mm ss
	uchar xdata  stoptime[6];//hh  mm  ss
	uchar xdata  speed3[3];//临时变量,保存速度值的 百位、十位、个位
        uchar xdata  stopdate[10];//存放停车的年月日时分


        Clr_WDog();
	for(i=0;i<9;i++)
	{
          Clr_WDog();       //清w-dog
          No[i]=vin[17+i];
        }
	for(i=0;i<8;i++)
	{
           Clr_WDog();       //清w-dog
           Type[i]=vin[29+i];
        }
        for(i=0;i<7;i++)
        {
          Clr_WDog();       //清w-dog
          num[i]=cur_id[i]+0x30;//驾驶员代码
        }
        for(i=7;i<25;i++)
        {
          Clr_WDog();       //清w-dog
          num[i]=cur_id[i];  //驾驶证号码
        }
        ptr_time=&YEAR;

        for(i=0;i<6;i++)  //读当前系统时间,ASCII
        {
           Clr_WDog();       //清w-dog
           curtime[3+2*i]=((*(ptr_time+i)%10)+0x30);
           curtime[2+2*i]=((*(ptr_time+i)/10)+0x30);
        }

        init_print();


        //车牌号码
        printhz(carNo,9);
        space(2);
        print(No,2);
        print(No+2,6);
        printhz(huiche,1);     //回车
        Clr_WDog();

        //车牌分类
        printhz(carType,9);
        space(2);
        print(Type,8);
        printhz(huiche,1);     //回车
        Clr_WDog();

        //驾驶员代码
        printhz(driverNo,11);
        space(2);
        print(num,7);//驾驶员代码
        printhz(huiche,1);     //回车
        Clr_WDog();

        //驾驶证号码
        printhz(driverID,11);
        printhz(huiche,1);     //回车
        space(2);
        print(num+7,18);//打印驾驶证号码
        printhz(huiche,1);     //回车
        Clr_WDog();

        //打印时间
        printhz(time,9);
        printhz(huiche,1);     //回车
        space(2);
        print(curtime+2,2);
        printhz(unit+2,1);      //打印“/”,
        print(curtime+4,2);
        printhz(unit+2,1);
        print(curtime+6,2);
        space(1);
        print(curtime+8,2);
        printhz(maohao+1,1);
        print(curtime+10,2);
        printhz(maohao+1,1);
        print(curtime+12,2);
        printhz(huiche,1);     //回车
        Clr_WDog();

        //打印停车时间
        if(stop_3day[6]!=0XFF)
        {
           for(i=0;i<5;i++)
           {
              Clr_WDog();       //清w-dog
              stopdate[2*i]=(stop_3day[6+i]>>4)+0x30;
              stopdate[2*i+1]=stop_3day[6+i]%16+0x30;
           }
           printhz(stp_tm,9);
           printhz(huiche,1);     //回车
           space(2);
           print(stopdate,2);          //年
           printhz(unit+2,1);          //打印“/”,
           print(stopdate+2,2);        //月
           printhz(unit+2,1);          //打印“/”,
           print(stopdate+4,2);        //日
           space(1);
           print(stopdate+6,2);        //时
           printhz(maohao+1,1);        //打印“:”
           print(stopdate+8,2);        //分
           printhz(huiche,1);     //回车
        }

        //打印停车前15分钟平均速度
        printhz(speed1,21);
        printhz(huiche,1);     //回车

         //将当前驾驶证号码和15分钟速度数组比较
         temp=0;
         for(i=0;i<15;i++)
         {
             Clr_WDog();       //清w-dog
             if(new_speed_15min[i][3]!=0XFF)
             {
                e[temp]=i;                      //将该下标存入数组e[]
                temp++;
             }
         }
         if(!temp)  //如果没有速度记录

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -