U20_YC3121_Firmware_20240315\app\var:9个文件

flash_addr_def.c    /

/******************************************************************************
版权所有:  深圳市**科技有限公司 
文件名:    var_global.c
作者:      wangdy
创建日期:  2020/06/29
描述:     全局变量 
其它:      
修改历史:  //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简述
            序号    修改时间    修改人  修改内容
            ????    ????/??/??  ??????  参考样式       
******************************************************************************/

/************************************头文件************************************/

#include <string.h>
#include "flash_addr_def.h"

/*************************************变量*************************************/


/*************************************函数*************************************/

flash_addr_def.h 

/******************************************************************************
版权所有:  深圳**科技有限公司  
文件名:    flash_addr_def.h   
作者:      wangdy  
创建日期:  2021/5/31
描述:      打印头控制 
其它:      
修改历史:  //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简述
            序号    修改时间    修改人  修改内容
            ????    ????/??/??  ??????  参考样式       
******************************************************************************/

/*********************************防止多次编译*********************************/
#ifndef _FLASH_ADDR_DEF_H
#define _FLASH_ADDR_DEF_H

/************************************头文件************************************/
#include <stdint.h>
#include <stdbool.h>


/************************************宏定义************************************/

//地址分布  
//总flash 1M   0x1000000~0x1100000   共1mbit 
//1000200 为boot起始地址 
//1020000~1078000 为APP地址  共352k 
//中间空余128k 1078000 ~ 1098000
//1098000~10F0000 为BACK地址  共352k 
//10F0000~10F8000 为存储参数地址  共32k    存储参数用 
//10F8000~1010000 为FRID预留地址  共32k    

//-----------------------内部flash-----------------------------

//远程升级  做备份区处理 
#define IAP_BACKUP_ADDR                0x1098000     //1090000~10F0000
#define IAP_BACKUP_FLAG_ADDR        0x10F0000     //10F0000~10F1000    

//远程升级最大字节数 
#define IAP_BACKUP_MAX_SIZE            0x58000         //352KB 


#define IAP_APP_START_ADDR            0x1020000    //APP起始地址      
#define IAP_APP_MAX_SIZE            0x58000         //352KB 
//参数地址  


//参数存储标记  倒数第1到倒数第4    擦除只能4K
#define  PARA_STORE_START_BASE                0x10F7000        

//蓝牙 参数存储标记  倒数第5 到倒数第8 
#define  BT_STORE_START_BASE                0x10F6000 

//测试参数存储标记  倒数第9 到倒数第12 
#define  TEST_STORE_START_BASE                0x10F5000 

//定标参数存储标记  倒数第13 到倒数第16
#define  CALIBRATION_STORE_START_BASE        0x10F4000 

//RFID 耗材ID存储标记 
#define  RFID_STORE_START_BASE                0x10F3000 


/************************************结构体************************************/


/**********************************可导出变量**********************************/


/***********************************函数实现***********************************/

#endif

printerConfig.h    /

/******************************************************************************
版权所有:  深圳**科技有限公司  
文件名:    config.h   
作者:      wangdy  
创建日期:  2021/5/31
描述:      配置文件  
其它:      
修改历史:  //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简述
            序号    修改时间    修改人  修改内容
            ????    ????/??/??  ??????  参考样式       
******************************************************************************/

/*********************************防止多次编译*********************************/
#ifndef _PRINTER_USER_CONFIG_H
#define _PRINTER_USER_CONFIG_H

/************************************头文件************************************/
#include <stdint.h>
#include <stdbool.h>


/************************************宏定义************************************/


//---------------------------机型定义 


//----------------------------通用定义 

//usb info 
#define USB_USER_VID        0x2E3C
#define USB_USER_PID        0x57FF

#define  PRINTER_LINE_BYTES        12        //一行需要多少个字节数 
#define  MM_DOT                    8        //1mm多少个像素 

//参数定义 
#define  PRINTHEAD_HEATTIME_DEFAULT         100            //默认加热时间 
#define  PRINTHEAD_HEAVE_HEATTIME           130            //重加热时间 

#define  GAP_PRINT_BLANK                    8            //间隙纸开始打印  要先走多少 

#define  PRINTHEAD_INVERSE_PIX                37            //后退多少个像素 

#define  PRINTHEAD_GAP_CUTTER_PIX            64  //56 //32 //48            //间隙纸  多退一点  避过间隙   (打印多份时第一份的回退距离,原来是52)
#define  PRINTHEAD_CUTTUR_PIX                64//80 //64            //打印头到切刀(连续纸打印参数)

//112       //152    //128        //打印头到光耦 原来96     (多份打印时,份数>1时走纸到打印位)
#define  PRINTHEAD_OPTICALCOUPLER_PIX        128 //120        //15.6mm

//184 //176 //168          //80   //144   //208 //224            //切刀到光耦  原来149     (多份打印时打最后一张或只打一份时,走纸到切刀位置)
#define  PRINTHEAD_OPTICALCOUPLER_CUTTER     192       //25.1mm


//以下部分为按键走纸的宏定义-----------------------------------------------------------------------------------------------
#define  PRINTHEAD_OPTICALCOUPLER_CALIBRATION_CUTTER    166    //切刀到光耦  18mm    (走到撕纸处,双击定标用)

#define  KEY_SHORT_PRESS_FEED_COUNT          800        //单击走纸距离最大值     (走纸超过这个值也强制停止)

#define  PRINTHEAD_CHECK_PIX_INFO             200      //150            //提前多少像素(去检查间隙)OK  原来90

#define  PRINT_BLANK_DEFAULT                1            //默认空余(8*N) 

#define  PAPER_CALIBRATION_MAX_PIX            800            //100MM 最大像素信息 

#define  PAPER_BACKAWAY_ENABLE                1            //后退标记信息 

/**********************************可导出变量**********************************/

/***********************************函数实现***********************************/

#endif

var_global.c     

/******************************************************************************
版权所有:  深圳市**科技有限公司 
文件名:    var_global.c
作者:      wangdy
创建日期:  2020/06/29
描述:     全局变量 
其它:      
修改历史:  //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简述
            序号    修改时间    修改人  修改内容
            ????    ????/??/??  ??????  参考样式       
******************************************************************************/

/************************************头文件************************************/

#include <string.h>
#include "var_global.h"
#include "printerConfig.h"
#include "yc_otp.h"
#include <stdio.h>

/*************************************变量*************************************/

_PRINT_PAR                    Print_Par = {0};
_MACHINE_STATE                Machine_State = MACHINE_WORK;        //正常工作 状态  
_MACHINE_DEBUG_INFO           Machine_Debug_Info = {0};            //测试信息 
GlobalMachineVarTypedef        GlobleMachineVar = {0};

/*************************************函数*************************************/

/*******************************************************************************
* 名称:        Get_MachineName       
* 描述:        获取机器 名称  
* 输入参数:    无  
* 输出参数:    无   
* 其它:        无   
*******************************************************************************/
void Get_MachineName(uint8_t *addr)
{
    uint8_t  chip_id[6];
    uint8_t  bt_serial_id[4] = {0};
    
    //读取芯片ID  用于生成序列号  
    read_chipid(chip_id);
    
    //后缀信息get 
    sprintf((char *)&bt_serial_id[0],(char *)"%02X%02X",(char)chip_id[4],(char)chip_id[5]);
}

/*******************************************************************************
* 名称:        Get_MachineName       
* 描述:        获取机器序列号   
* 输入参数:    无  
* 输出参数:    无   
* 其它:        无   
*******************************************************************************/
void Get_SerialNumber(uint8_t *addr)
{
    uint8_t  chip_id[6];
    
    //读取芯片ID  用于生成序列号  
    read_chipid(chip_id);
    
    //后缀信息get 
    sprintf((char *)addr,(char *)"%02X%02X%02X%02X%02X",
                                        (char)chip_id[0],
                                        (char)chip_id[1],
                                        (char)chip_id[2],
                                        (char)chip_id[3],
                                        (char)chip_id[4]
                                );
}

var_global.h   

/******************************************************************************
版权所有:  深圳**科技有限公司  
文件名:    var_global.h   
作者:      wangdy  
创建日期:  2021/5/31
描述:      打印头控制 
其它:      
修改历史:  //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简述
            序号    修改时间    修改人  修改内容
            ????    ????/??/??  ??????  参考样式       
******************************************************************************/

/*********************************防止多次编译*********************************/
#ifndef _VAR_GLOBAL_H
#define _VAR_GLOBAL_H

/************************************头文件************************************/
#include <stdint.h>
#include <stdbool.h>
#include "yc_timer.h"


/************************************宏定义************************************/

#define BATTERY_TEMPER_CHECK_ENABLE_FLAG   1   //允许电池温度检测 

/************************************枚举************************************/

//用100us定时器做时基控制      根据目标转速,设置对应的定时器的数据 
typedef enum
{
    SPEED_1000RPM = 3,            //1000RPM->3MS->30*100US 一拍 
    SPEED_1500RPM = 2,            //1500RPM->2MS->20*100US 一拍 
//    SPEED_2000RPM = 15,            //2000RPM->1.5MS->15*100US 一拍 
//    SPEED_2500RPM = 12,            //2500RPM->1.2MS->12*100US 一拍 
    SPEED_3000RPM = 1,            //3000RPM->1MS->10*100US 一拍 
//    SPEED_4500RPM = 7,            //4500RPM->0.667MS->7*100US 一拍 
}_MOTOR_SPPED_ENUM;

//当前机器状态  
typedef enum
{
    MACHINE_WORK = 1,                        //正常工作  
    MACHINE_UPDATE ,                        //升级状态 
//    MACHINE_CALIBRATION,                    //校准模式 
    MACHINE_TEST ,                            //测试模式  
    MACHINE_FEED_PAPER ,                    //走纸
}_MACHINE_STATE;

//纸张的类型状态
typedef enum

    PAPER_CONTINUE = 0,                     //连续纸
    PAPER_BLACKLABLE,                       //黑标纸
    PAPER_GAP,                              //间隙纸
    PAPER_LOCATE_HOLE,                        //定位孔 
    PAPER_RFID,                                //RFID标签 
    PAPER_NONE = 0xFF,                         //无此类型纸
}PrintPaperTypeEnum;


/************************************结构体************************************/

#pragma pack(push)
#pragma pack(1)

//块数据信息 
typedef struct
{
    uint8_t     BlockIndex;                    //第几个扇区 
    uint8_t        WriteByteSum;                //该 扇区写字节的长度  
    uint8_t     WriteData[4];                //写入的有效数据  
}_BLOCK_DATA_TYPE;


//打印机参数表 
typedef struct
{
    uint8_t     NFCPassWd[6];                //设置NFC校验密码,密码固定为6位 
    
    uint8_t        Firmware_ID;                //Firmware版本ID
    uint8_t     Productor;                    //厂商
    uint8_t     PrinteName[10];                //打印机名称
    uint8_t        PrinteID[10];                //打印机序列号 
    uint8_t        PrinteWordType[10];            //支持汉字类型 
}_PRINT_PAR;

//debug信息 
typedef struct
{
    bool        PrintDebugFlag;
}_MACHINE_DEBUG_INFO;


//机器信息 
typedef struct
{
    uint8_t  DefaultGenMachineName[32];        //机器名称  
    uint8_t  MachineSerialNumber[10];        //机器序列号 
}GlobalMachineVarTypedef;


#pragma pack(pop)


/**********************************可导出变量**********************************/

extern  _PRINT_PAR                Print_Par;
extern  _MACHINE_STATE            Machine_State;
extern  _MACHINE_DEBUG_INFO       Machine_Debug_Info;            //测试信息 
extern  GlobalMachineVarTypedef        GlobleMachineVar;    //通用机器变量 


/***********************************函数实现***********************************/
void Get_MachineName(uint8_t *addr);        //获取机器名称  
void Get_SerialNumber(uint8_t *addr);        //获取机器名称  


#endif

var_pix_print.c    ///

/******************************************************************************
版权所有:  深圳市**科技有限公司 
文件名:    var_global.c
作者:      wangdy
创建日期:  2020/06/29
描述:     全局变量 
其它:      
修改历史:  //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简述
            序号    修改时间    修改人  修改内容
            ????    ????/??/??  ??????  参考样式       
******************************************************************************/

/************************************头文件************************************/

#include <string.h>
#include "var_pix_print.h"
#include "printerConfig.h"

/*************************************变量*************************************/

const uint8_t BitMap_DotLine_Line[PRINTER_LINE_BYTES] = {0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0};

/*************************************函数*************************************/
 

var_pix_print.h   

/******************************************************************************
版权所有:  深圳**科技有限公司  
文件名:    var_pix_print.h   
作者:      wangdy  
创建日期:  2023/2/25
描述:      打印头控制 
其它:      
修改历史:  //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简述
            序号    修改时间    修改人  修改内容
            ????    ????/??/??  ??????  参考样式       
******************************************************************************/

/*********************************防止多次编译*********************************/
#ifndef _VAR_PIX_PRINT_H
#define _VAR_PIX_PRINT_H

/************************************头文件************************************/
#include <stdint.h>
#include <stdbool.h>
#include "yc_timer.h"
#include "printerConfig.h"


/************************************宏定义************************************/

extern const  uint8_t BitMap_DotLine_Line[PRINTER_LINE_BYTES];


/************************************枚举************************************/

/************************************结构体************************************/


/**********************************可导出变量**********************************/

/***********************************函数实现***********************************/

#endif

var_print_selftest_font.c   ///

#include "var_print_selftest_font.h"

/*
点阵格式:阴码  取模方式:zhu列式 每行显示数据:12  取模:逆向  
*/

static SelftTestInfoTypeDef  SelfTestInfo = { 0
};

//需要打印的字符 
PrintTestBufTypeDef  PrintTest = {
    .First_Line = "NAME: Q1_12345678",
    .Second_Line = "MAC: 12.34.56.78.90",
    .Third_Line = "POR: 80%",
    .Fourth_Line = "VER: 02.002.CD0601",
};

//字模信息--ascii码 
const FontAscii_24X24_TypeDef  FontAscii_24X24[] = {
    {' ',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /*" ",0*/},
    {'!',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x77,0x1C,
         0xF0,0x0F,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /*"!",0*/},
    {'"',0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x60,0x00,0x00,0x30,0x00,0x00,0x1C,0x00,0x00,
         0x8C,0x00,0x00,0x60,0x00,0x00,0x30,0x00,0x00,0x1C,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,/*""",1*/},
    {'#',0x00,0x00,0x00,0x00,0x83,0x01,0x00,0x83,0x1F,0x00,0xFF,0x01,0xF0,0x83,0x01,0x00,0x83,0x01,
         0x00,0x83,0x01,0x00,0x83,0x01,0x00,0xFB,0x1F,0xF0,0x87,0x01,0x00,0x83,0x01,0x00,0x00,0x00,/*"#",2*/},
    {'$',0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x07,0xC0,0x07,0x0F,0x60,0x0C,0x12,0x20,0x18,0x10,
         0xF8,0xFF,0x7F,0x20,0x71,0x10,0xE0,0xE1,0x0F,0xC0,0x81,0x07,0x00,0x00,0x00,0x00,0x00,0x00,/*"$",3*/},
    {'%',0xC0,0x07,0x00,0x30,0x18,0x00,0x10,0x10,0x18,0x30,0x18,0x07,0xC0,0xCF,0x00,0x00,0x38,0x00,
         0x00,0xC6,0x07,0xC0,0x31,0x18,0x30,0x10,0x10,0x00,0x30,0x18,0x00,0xC0,0x07,0x00,0x00,0x00,/*"%",4*/},
    {'&',0x00,0xC0,0x07,0x00,0xE0,0x0F,0xE0,0x17,0x18,0xF0,0x3F,0x10,0x10,0xF8,0x10,0xF0,0xC7,0x13,
         0xE0,0x03,0x0F,0x00,0x08,0x0E,0x00,0xF8,0x19,0x00,0x08,0x10,0x00,0x08,0x10,0x00,0x00,0x0C,/*"&",5*/},
    {'\'',0x00,0x00,0x00,0x00,0x00,0x00,0x8C,0x00,0x00,0x4C,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"'",6*/},
    {'(',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,
         0x80,0x01,0x03,0x60,0x00,0x0C,0x10,0x00,0x10,0x08,0x00,0x20,0x04,0x00,0x40,0x00,0x00,0x00,/*"(",7*/},
    {')',0x00,0x00,0x00,0x04,0x00,0x40,0x08,0x00,0x20,0x10,0x00,0x10,0x60,0x00,0x0C,0x80,0x01,0x03,
         0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*")",8*/},
    {'*',0x00,0x00,0x00,0x00,0x66,0x00,0x00,0x66,0x00,0x00,0x24,0x00,0x00,0x38,0x00,0x00,0x10,0x00,
         0xC0,0xFF,0x03,0x80,0x18,0x00,0x00,0x3C,0x00,0x00,0x24,0x00,0x00,0x66,0x00,0x00,0x66,0x00,/*"*",9*/},
    {'+',0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,
         0x80,0xFF,0x03,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,/*"+",10*/},
    {',',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8C,0x00,0x00,0x4C,0x00,0x00,0x38,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*",",11*/},
    {'-',0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,
         0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x00,0x00,/*"-",12*/},
    {'.',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*".",13*/},
    {'/',0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x38,0x00,0x00,0x0E,0x00,0x80,0x01,0x00,0x70,0x00,
         0x00,0x1C,0x00,0x00,0x03,0x00,0xE0,0x00,0x00,0x38,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,/*"/",14*/},
    {'0',0x00,0x00,0x00,0x00,0xFE,0x01,0x80,0xFF,0x07,0xC0,0x01,0x0E,0x60,0x00,0x18,0x20,0x00,0x10,
         0x20,0x00,0x10,0x60,0x00,0x18,0xC0,0x01,0x0E,0x80,0xFF,0x07,0x00,0xFE,0x01,0x00,0x00,0x00,/*"0",15*/},
    {'1',0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x10,0x40,0x00,0x10,0x40,0x00,0x10,0xC0,0xFF,0x1F,
         0xE0,0xFF,0x1F,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,/*"1",16*/},
    {'2',0x00,0x00,0x00,0x80,0x03,0x18,0x40,0x03,0x1C,0x20,0x00,0x12,0x20,0x00,0x11,0x20,0xC0,0x10,
         0x20,0x60,0x10,0x60,0x30,0x10,0xC0,0x1F,0x10,0x80,0x07,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,/*"2",17*/},
    {'3',0x00,0x00,0x00,0xC0,0x01,0x0E,0xC0,0x01,0x0E,0x20,0x00,0x10,0x20,0x10,0x10,0x20,0x10,0x10,
         0x60,0x18,0x10,0xC0,0x2F,0x18,0x80,0xE7,0x0F,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,/*"3",18*/},
    {'4',0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0xA0,0x00,0x00,0x98,0x00,0x00,0x84,0x00,0x00,0x83,0x10,
         0x80,0x80,0x10,0xE0,0xFF,0x1F,0xE0,0xFF,0x1F,0x00,0x80,0x10,0x00,0x80,0x10,0x00,0x80,0x00,/*"4",19*/},
    {'5',0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x3F,0x0B,0x20,0x10,0x10,0x20,0x08,0x10,0x20,0x08,0x10,
         0x20,0x08,0x10,0x20,0x18,0x1C,0x20,0xF0,0x0F,0x20,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,/*"5",20*/},
    {'6',0x00,0x00,0x00,0x00,0xFC,0x01,0x80,0xFF,0x07,0xC0,0x21,0x0C,0x40,0x10,0x18,0x20,0x08,0x10,
         0x20,0x08,0x10,0x20,0x08,0x10,0xE0,0x18,0x08,0xC0,0xF0,0x0F,0x00,0xE0,0x03,0x00,0x00,0x00,/*"6",21*/},
    {'7',0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x60,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x1F,
         0x20,0xE0,0x1F,0x20,0x18,0x00,0x20,0x07,0x00,0xE0,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,/*"7",22*/},         
    {'8',0x00,0x00,0x00,0x80,0x83,0x07,0xC0,0xCF,0x0F,0x60,0x6C,0x08,0x20,0x18,0x10,0x20,0x10,0x10,
         0x20,0x30,0x10,0x20,0x30,0x10,0x60,0x68,0x18,0xC0,0xCF,0x0F,0x80,0x83,0x07,0x00,0x00,0x00,/*"8",0*/},
    {'9',0x00,0x00,0x00,0x00,0x1F,0x00,0xC0,0x3F,0x0C,0xC0,0x60,0x1C,0x20,0x40,0x10,0x20,0x40,0x10,
         0x20,0x40,0x10,0x20,0x20,0x08,0xC0,0x10,0x0F,0x80,0xFF,0x03,0x00,0xFE,0x00,0x00,0x00,0x00,/*"9",24*/},
    {':',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x1C,
         0x00,0x1C,0x1C,0x00,0x1C,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*":",25*/},
    {';',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0xD8,
         0x00,0x0C,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*";",26*/},
    {'<',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x28,0x00,0x00,0x44,0x00,0x00,0x82,0x00,
         0x00,0x01,0x01,0x80,0x00,0x02,0x40,0x00,0x04,0x20,0x00,0x08,0x10,0x00,0x10,0x00,0x00,0x00,/*"<",27*/},
    {'=',0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x44,0x00,0x00,0x44,0x00,0x00,0x44,0x00,0x00,0x44,0x00,
         0x00,0x44,0x00,0x00,0x44,0x00,0x00,0x44,0x00,0x00,0x44,0x00,0x00,0x44,0x00,0x00,0x00,0x00,/*"=",28*/},
    {'>',0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x20,0x00,0x08,0x40,0x00,0x04,0x80,0x00,0x02,
         0x00,0x01,0x01,0x00,0x82,0x00,0x00,0x44,0x00,0x00,0x28,0x00,0x00,0x10,0x00,0x00,0x00,0x00,/*">",29*/},
    {'?',0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x40,0x06,0x00,0x40,0x00,0x00,0x20,0x00,0x1C,
         0x20,0xE0,0x1C,0x20,0x10,0x1C,0x20,0x18,0x00,0x60,0x08,0x00,0xC0,0x0F,0x00,0x80,0x07,0x00,/*"?",30*/},
    {'@',0x00,0x00,0x00,0x00,0xFE,0x00,0xC0,0xFF,0x07,0xE0,0x00,0x0E,0x20,0xF8,0x18,0x10,0xFF,0x11,
         0x90,0x03,0x11,0x90,0xFC,0x11,0xA0,0x07,0x09,0x60,0x80,0x0C,0x80,0x7F,0x02,0x00,0x00,0x00,/*"@",31*/},
    {'A',0x00,0x00,0x10,0x00,0x00,0x1C,0x00,0x80,0x13,0x00,0x78,0x10,0x80,0x47,0x00,0x60,0x40,0x00,
         0xE0,0x41,0x00,0x00,0x5F,0x00,0x00,0xF0,0x11,0x00,0x80,0x1F,0x00,0x00,0x18,0x00,0x00,0x10,/*"A",32*/},         
    {'B',0x00,0x00,0x00,0x20,0x00,0x10,0xE0,0xFF,0x1F,0xE0,0xFF,0x1F,0x20,0x10,0x10,0x20,0x10,0x10,
         0x20,0x10,0x10,0x60,0x18,0x10,0xC0,0x2F,0x18,0xC0,0xE7,0x0F,0x00,0x80,0x07,0x00,0x00,0x00,/*"B",33*/},
    {'C',0x00,0x00,0x00,0x00,0xFC,0x01,0x80,0xFF,0x07,0xC0,0x01,0x0E,0x40,0x00,0x18,0x20,0x00,0x10,
         0x20,0x00,0x10,0x20,0x00,0x10,0x60,0x00,0x08,0xE0,0x00,0x0C,0x80,0x03,0x03,0x00,0x00,0x00,/*"C",34*/},    
    {'D',0x20,0x00,0x10,0x20,0x00,0x10,0xE0,0xFF,0x1F,0xE0,0xFF,0x1F,0x20,0x00,0x10,0x20,0x00,0x10,
         0x20,0x00,0x10,0x40,0x00,0x08,0xC0,0x01,0x0E,0x80,0xFF,0x07,0x00,0xFE,0x01,0x00,0x00,0x00,/*"D",35*/},         
    {'E',0x20,0x00,0x10,0xE0,0xFF,0x1F,0xE0,0xFF,0x1F,0x20,0x10,0x10,0x20,0x10,0x10,0x20,0x10,0x10,
         0x20,0x10,0x10,0x20,0xFC,0x10,0x60,0x00,0x10,0x60,0x00,0x18,0x80,0x01,0x06,0x00,0x00,0x00,/*"E",36*/},
    {'F',0x20,0x00,0x10,0xE0,0xFF,0x1F,0xE0,0xFF,0x1F,0x20,0x10,0x10,0x20,0x10,0x10,0x20,0x10,0x00,
         0x20,0x10,0x00,0x20,0xFC,0x00,0x60,0x00,0x00,0x60,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,/*"F",37*/},
    {'G',0x00,0x00,0x00,0x00,0xFC,0x01,0x80,0xFF,0x07,0xC0,0x01,0x0E,0x60,0x00,0x18,0x20,0x00,0x10,
         0x20,0x40,0x10,0x20,0x40,0x10,0x40,0xC0,0x0F,0x80,0xC3,0x0F,0x00,0x40,0x00,0x00,0x40,0x00,/*"G",38*/},
    {'H',0x20,0x00,0x10,0xE0,0xFF,0x1F,0xE0,0xFF,0x1F,0x20,0x10,0x10,0x00,0x10,0x00,0x00,0x10,0x00,
         0x00,0x10,0x00,0x00,0x10,0x00,0x20,0x10,0x10,0xE0,0xFF,0x1F,0xE0,0xFF,0x1F,0x20,0x00,0x10,/*"H",39*/},
    {'I',0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x10,0x20,0x00,0x10,0x20,0x00,0x10,0xE0,0xFF,0x1F,
         0xE0,0xFF,0x1F,0x20,0x00,0x10,0x20,0x00,0x10,0x20,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,/*"I",40*/},
    {'J',0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0xE0,0x20,0x00,0x80,0x20,0x00,0x80,0x20,0x00,0xC0,
         0xE0,0xFF,0x7F,0xE0,0xFF,0x3F,0x20,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,/*"J",41*/},
    {'K',0x20,0x00,0x10,0xE0,0xFF,0x1F,0xE0,0xFF,0x1F,0x20,0x30,0x10,0x00,0x0C,0x00,0x00,0x3A,0x00,
         0xA0,0xE1,0x00,0xE0,0x80,0x13,0x60,0x00,0x1E,0x20,0x00,0x18,0x00,0x00,0x10,0x00,0x00,0x00,/*"K",42*/},
    {'L',0x20,0x00,0x10,0xE0,0xFF,0x1F,0xE0,0xFF,0x1F,0x20,0x00,0x10,0x20,0x00,0x10,0x00,0x00,0x10,
         0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x18,0x00,0x00,0x06,0x00,0x00,0x00,/*"L",43*/},
    {'M',0x20,0x00,0x10,0xE0,0xFF,0x1F,0xE0,0x0F,0x10,0x00,0xFF,0x00,0x00,0xE0,0x0F,0x00,0x80,0x07,
         0x00,0x7C,0x00,0xC0,0x03,0x10,0xE0,0xFF,0x1F,0xE0,0xFF,0x1F,0x20,0x00,0x10,0x00,0x00,0x00,/*"M",44*/},
    {'N',0x00,0x00,0x10,0x20,0x00,0x10,0xE0,0xFF,0x1F,0xE0,0x01,0x10,0x80,0x07,0x10,0x00,0x1E,0x00,
         0x00,0x78,0x00,0x20,0xC0,0x03,0x20,0x00,0x0F,0xE0,0xFF,0x1F,0x20,0x00,0x00,0x20,0x00,0x00,/*"N",45*/},         
    {'O',0x00,0x00,0x00,0x00,0xFE,0x01,0x80,0xFF,0x07,0xC0,0x01,0x0E,0x60,0x00,0x18,0x20,0x00,0x10,
         0x20,0x00,0x10,0x60,0x00,0x18,0xC0,0x00,0x0C,0x80,0xFF,0x07,0x00,0xFE,0x01,0x00,0x00,0x00,/*"O",46*/},
    {'P',0x20,0x00,0x10,0xE0,0xFF,0x1F,0xE0,0xFF,0x1F,0x20,0x20,0x10,0x20,0x20,0x10,0x20,0x20,0x00,
         0x20,0x20,0x00,0x20,0x30,0x00,0x40,0x10,0x00,0xC0,0x1F,0x00,0x80,0x0F,0x00,0x00,0x00,0x00,/*"P",47*/},
    {'Q',0x00,0x00,0x00,0x00,0xFE,0x01,0x80,0xFF,0x07,0xC0,0x01,0x0E,0x60,0x00,0x19,0x20,0x00,0x11,
         0x20,0x00,0x17,0x60,0x00,0x3C,0xC0,0x00,0x6C,0x80,0xFF,0x67,0x00,0xFE,0x21,0x00,0x00,0x00,/*"Q",48*/},
    {'R',0x20,0x00,0x10,0xE0,0xFF,0x1F,0xE0,0xFF,0x1F,0x20,0x10,0x10,0x20,0x10,0x00,0x20,0x10,0x00,
         0x20,0x70,0x00,0x20,0xD0,0x01,0x60,0x08,0x07,0xC0,0x0F,0x1E,0x80,0x07,0x18,0x00,0x00,0x10,/*"R",49*/},
    {'S',0x00,0x00,0x00,0x80,0x07,0x07,0xC0,0x0F,0x0C,0x60,0x1C,0x08,0x20,0x18,0x10,0x20,0x38,0x10,
         0x20,0x30,0x10,0x20,0x70,0x10,0x40,0xE0,0x18,0xE0,0xE1,0x0F,0x00,0x80,0x07,0x00,0x00,0x00,/*"S",50*/},
    {'T',0x80,0x01,0x00,0x60,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x10,0x20,0x00,0x10,0xE0,0xFF,0x1F,
         0xE0,0xFF,0x1F,0x20,0x00,0x10,0x20,0x00,0x10,0x20,0x00,0x00,0x60,0x00,0x00,0x80,0x01,0x00,/*"T",51*/},
    {'U',0x00,0x00,0x00,0x20,0x00,0x00,0xE0,0xFF,0x07,0xE0,0xFF,0x0F,0x20,0x00,0x18,0x00,0x00,0x10,
         0x00,0x00,0x10,0x00,0x00,0x10,0x20,0x00,0x08,0xE0,0xFF,0x07,0x20,0x00,0x00,0x00,0x00,0x00,/*"U",52*/},
    {'V',0x20,0x00,0x00,0x60,0x00,0x00,0xE0,0x07,0x00,0x20,0x7E,0x00,0x00,0xE0,0x07,0x00,0x00,0x1E,
         0x00,0x80,0x03,0x00,0x78,0x00,0xA0,0x07,0x00,0x60,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,/*"V",53*/},
    {'W',0x20,0x00,0x00,0xE0,0x03,0x00,0x20,0xFF,0x00,0x00,0xC0,0x1F,0x20,0xC0,0x03,0x60,0x3C,0x00,
         0xE0,0x3F,0x00,0x20,0xF0,0x1F,0x00,0x80,0x07,0x20,0x7C,0x00,0xE0,0x03,0x00,0x20,0x00,0x00,/*"W",54*/},
    {'X',0x00,0x00,0x00,0x20,0x00,0x10,0x60,0x00,0x18,0xE0,0x01,0x16,0x20,0x87,0x01,0x00,0x7C,0x00,
         0x00,0xE8,0x00,0x20,0x86,0x13,0xE0,0x01,0x1E,0x20,0x00,0x18,0x20,0x00,0x10,0x00,0x00,0x00,/*"X",55*/},         
    {'Y',0x20,0x00,0x00,0x60,0x00,0x00,0xE0,0x01,0x00,0x20,0x0F,0x10,0x00,0x3C,0x10,0x00,0xF8,0x1F,
         0x00,0xE0,0x1F,0x00,0x18,0x10,0x20,0x06,0x10,0xA0,0x01,0x00,0x60,0x00,0x00,0x20,0x00,0x00,/*"Y",56*/},
    {'Z',0x00,0x00,0x00,0x80,0x01,0x10,0xE0,0x00,0x1C,0x60,0x00,0x17,0x20,0x80,0x11,0x20,0x60,0x10,
         0x20,0x18,0x10,0x20,0x06,0x10,0xA0,0x03,0x10,0xE0,0x00,0x18,0x20,0x00,0x06,0x00,0x00,0x00,/*"Z",57*/},
    {'[',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x7F,
         0x04,0x00,0x40,0x04,0x00,0x40,0x04,0x00,0x40,0x04,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,/*"[",58*/},
    {']',0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x40,0x04,0x00,0x40,0x04,0x00,0x40,0x04,0x00,0x40,
         0xFC,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"]",59*/},
    {'^',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x04,0x00,0x00,0x02,0x00,0x00,
         0x02,0x00,0x00,0x04,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"^",60*/},         
    {'_',0x00,0x00,0x80,0x00,0x00,0x80,0x00,0x00,0x80,0x00,0x00,0x80,0x00,0x00,0x80,0x00,0x00,0x80,
         0x00,0x00,0x80,0x00,0x00,0x80,0x00,0x00,0x80,0x00,0x00,0x80,0x00,0x00,0x80,0x00,0x00,0x80,/*"_",61*/},
    {'`',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x00,0x08,0x00,0x00,
         0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"`",62*/},
    {'a',0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x98,0x1F,0x00,0x98,0x19,0x00,0x84,0x10,0x00,0x44,0x10,
         0x00,0x44,0x10,0x00,0x44,0x08,0x00,0xFC,0x0F,0x00,0xF8,0x1F,0x00,0x00,0x10,0x00,0x00,0x18,/*"a",63*/},         
    {'b',0x00,0x00,0x00,0x20,0x00,0x00,0xE0,0xFF,0x1F,0xF0,0xFF,0x0F,0x00,0x18,0x08,0x00,0x08,0x10,
         0x00,0x04,0x10,0x00,0x04,0x10,0x00,0x0C,0x18,0x00,0xF8,0x0F,0x00,0xF0,0x03,0x00,0x00,0x00,/*"b",64*/},
    {'c',0x00,0x00,0x00,0x00,0xE0,0x03,0x00,0xF8,0x0F,0x00,0x18,0x0C,0x00,0x04,0x10,0x00,0x04,0x10,
         0x00,0x04,0x10,0x00,0x3C,0x10,0x00,0x38,0x08,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,/*"c",65*/},    
    {'d',0x00,0x00,0x00,0x00,0xE0,0x03,0x00,0xF8,0x0F,0x00,0x1C,0x18,0x00,0x04,0x10,0x00,0x04,0x10,
         0x20,0x04,0x10,0x20,0x08,0x08,0xE0,0xFF,0x1F,0xF0,0xFF,0x0F,0x00,0x00,0x08,0x00,0x00,0x00,/*"d",66*/},         
    {'e',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x03,0x00,0xF8,0x0F,0x00,0x88,0x0C,0x00,0x84,0x10,
         0x00,0x84,0x10,0x00,0x84,0x10,0x00,0x8C,0x10,0x00,0xF8,0x08,0x00,0xE0,0x04,0x00,0x00,0x00,/*"e",67*/},
    {'f',0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x04,0x10,0x00,0x04,0x10,0x80,0xFF,0x1F,0xC0,0xFF,0x1F,
         0x60,0x04,0x10,0x20,0x04,0x10,0x20,0x04,0x10,0xE0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,/*"f",68*/},
    {'g',0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x70,0x7E,0x00,0xF8,0xCF,0x00,0x8C,0x85,0x00,0x04,0x85,
         0x00,0x0C,0x8D,0x00,0xFC,0xCD,0x00,0xF4,0x78,0x00,0x0C,0x78,0x00,0x0C,0x00,0x00,0x00,0x00,/*"g",69*/},
    {'h',0x00,0x00,0x00,0x20,0x00,0x10,0xE0,0xFF,0x1F,0xF0,0xFF,0x1F,0x00,0x08,0x10,0x00,0x04,0x00,
         0x00,0x04,0x00,0x00,0x04,0x10,0x00,0xFC,0x1F,0x00,0xF8,0x1F,0x00,0x00,0x10,0x00,0x00,0x00,/*"h",70*/},
    {'i',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x10,0x00,0x04,0x10,0x00,0x04,0x10,0x60,0xFC,0x1F,
         0x60,0xFE,0x1F,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,/*"i",71*/},
    {'j',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0xC0,0x00,0x04,0x80,0x00,0x04,0x80,
         0x60,0x04,0xC0,0x60,0xFC,0x7F,0x60,0xFE,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"j",72*/},
    {'k',0x00,0x00,0x00,0x20,0x00,0x10,0xE0,0xFF,0x1F,0xF0,0xFF,0x1F,0x00,0x80,0x10,0x00,0x40,0x00,
         0x00,0xE0,0x00,0x00,0x1C,0x13,0x00,0x04,0x1E,0x00,0x04,0x18,0x00,0x00,0x10,0x00,0x00,0x00,/*"k",73*/},
    {'l',0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x10,0x20,0x00,0x10,0x20,0x00,0x10,0xE0,0xFF,0x1F,
         0xF0,0xFF,0x1F,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,/*"l",74*/},
    {'m',0x00,0x04,0x10,0x00,0xFC,0x1F,0x00,0xFC,0x1F,0x00,0x08,0x10,0x00,0x04,0x10,0x00,0xFC,0x1F,
         0x00,0xF8,0x1F,0x00,0x08,0x10,0x00,0x04,0x10,0x00,0xFC,0x1F,0x00,0xFC,0x1F,0x00,0x00,0x10,/*"m",75*/},
    {'n',0x00,0x00,0x00,0x00,0x04,0x10,0x00,0xFC,0x1F,0x00,0xFC,0x1F,0x00,0x08,0x10,0x00,0x04,0x00,
         0x00,0x04,0x00,0x00,0x04,0x10,0x00,0xFC,0x1F,0x00,0xF8,0x1F,0x00,0x00,0x10,0x00,0x00,0x00,/*"n",76*/},         
    {'o',0x00,0x00,0x00,0x00,0xE0,0x03,0x00,0xF0,0x0F,0x00,0x18,0x0C,0x00,0x0C,0x10,0x00,0x04,0x10,
         0x00,0x04,0x10,0x00,0x0C,0x10,0x00,0x18,0x0C,0x00,0xF0,0x0F,0x00,0xE0,0x03,0x00,0x00,0x00,/*"o",77*/},
    {'p',0x00,0x00,0x00,0x00,0x04,0x80,0x00,0xFC,0xFF,0x00,0xFC,0xFF,0x00,0x08,0x88,0x00,0x04,0x90,
         0x00,0x04,0x10,0x00,0x04,0x10,0x00,0x0C,0x1C,0x00,0xF8,0x0F,0x00,0xF0,0x03,0x00,0x00,0x00,/*"p",78*/},
    {'q',0x00,0x00,0x00,0x00,0xE0,0x03,0x00,0xF8,0x0F,0x00,0x1C,0x18,0x00,0x04,0x10,0x00,0x04,0x10,
         0x00,0x04,0x90,0x00,0x08,0x88,0x00,0xF8,0xFF,0x00,0xFC,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,/*"q",79*/},
    {'r',0x00,0x04,0x10,0x00,0x04,0x10,0x00,0x04,0x10,0x00,0xFC,0x1F,0x00,0xFC,0x1F,0x00,0x10,0x10,
         0x00,0x08,0x10,0x00,0x04,0x10,0x00,0x04,0x00,0x00,0x1C,0x00,0x00,0x18,0x00,0x00,0x00,0x00,/*"r",80*/},
    {'s',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x1E,0x00,0x78,0x18,0x00,0xCC,0x10,0x00,0xC4,0x10,
         0x00,0x84,0x11,0x00,0x84,0x19,0x00,0x0C,0x1F,0x00,0x3C,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,/*"s",81*/},
    {'t',0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x00,0xFF,0x0F,0xC0,0xFF,0x1F,
         0x00,0x04,0x10,0x00,0x04,0x10,0x00,0x04,0x10,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,/*"t",82*/},
    {'u',0x00,0x00,0x00,0x00,0x04,0x00,0x00,0xFC,0x0F,0x00,0xFE,0x1F,0x00,0x00,0x18,0x00,0x00,0x10,
         0x00,0x00,0x10,0x00,0x04,0x08,0x00,0xFC,0x1F,0x00,0xFE,0x0F,0x00,0x00,0x08,0x00,0x00,0x00,/*"u",83*/},
    {'v',0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x0C,0x00,0x00,0x7C,0x00,0x00,0xC4,0x03,0x00,0x00,0x1F,
         0x00,0x00,0x0C,0x00,0x80,0x03,0x00,0x74,0x00,0x00,0x0C,0x00,0x00,0x04,0x00,0x00,0x00,0x00,/*"v",84*/},
    {'w',0x00,0x04,0x00,0x00,0x1C,0x00,0x00,0xF4,0x01,0x00,0x80,0x1F,0x00,0x04,0x0F,0x00,0xEC,0x00,
         0x00,0xFC,0x00,0x00,0x84,0x0F,0x00,0x00,0x0F,0x00,0xE4,0x00,0x00,0x1C,0x00,0x00,0x04,0x00,/*"w",85*/},
    {'x',0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x04,0x10,0x00,0x0C,0x1C,0x00,0x3C,0x12,0x00,0xE4,0x01,
         0x00,0xC0,0x01,0x00,0x24,0x13,0x00,0x1C,0x1C,0x00,0x04,0x18,0x00,0x04,0x10,0x00,0x00,0x00,/*"x",86*/},         
    {'y',0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x04,0xC0,0x00,0x3C,0x80,0x00,0xC4,0x81,0x00,0x00,0x7F,
         0x00,0x00,0x0E,0x00,0xC4,0x01,0x00,0x3C,0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x00,0x00,0x00,/*"y",87*/},
    {'z',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x18,0x00,0x04,0x1E,0x00,0x04,0x13,0x00,0xC4,0x11,
         0x00,0x74,0x10,0x00,0x1C,0x10,0x00,0x0C,0x18,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,/*"z",88*/},
    {'{',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,
         0x00,0x28,0x00,0xF8,0xC7,0x3F,0x04,0x00,0x40,0x04,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,/*"{",89*/},
    {'|',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"|",90*/},         
    {'}',0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x40,0x04,0x00,0x40,0xF8,0xC7,0x3F,0x00,0x28,0x00,
         0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"}",91*/},
    {'~',0x00,0x00,0x00,0x0C,0x00,0x00,0x02,0x00,0x00,0x02,0x00,0x00,0x02,0x00,0x00,0x04,0x00,0x00,
         0x08,0x00,0x00,0x18,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,/*"~",92*/},
};

//获取4个字符的最长长度 
static int findMax(int a, int b, int c, int d) {
    int max_value = a;
    if (b > max_value) {
        max_value = b;
    }
    if (c > max_value) {
        max_value = c;
    }
    if (d > max_value) {
        max_value = d;
    }
    return max_value;
}

//打印自检数据复位 
void ResetPrintSelfTestData(PrintTestBufTypeDef test){
    SelfTestInfo.CurrentIndex = 0;
    PrintTest = test;
    memcpy((char *)&PrintTest,(char *)&test,sizeof(test));
    
    SelfTestInfo.size_1 = strlen((char *)PrintTest.First_Line)*12;
    SelfTestInfo.size_2 = strlen((char *)PrintTest.Second_Line)*12;
    SelfTestInfo.size_3 = strlen((char *)PrintTest.Third_Line)*12;
    SelfTestInfo.size_4 = strlen((char *)PrintTest.Fourth_Line)*12;
    
    SelfTestInfo.max_size = findMax(SelfTestInfo.size_1,
                                            SelfTestInfo.size_2,
                                            SelfTestInfo.size_3,
                                            SelfTestInfo.size_4);
}

//获取字模的起始地址 
static bool getFontModelData(char ascii,uint8_t *data){
    for(int i = 0; i<sizeof(FontAscii_24X24)/sizeof(FontAscii_24X24_TypeDef); i++){
        if(FontAscii_24X24[i].FontIndex == ascii){
            memcpy(data,FontAscii_24X24[i].FontImg,sizeof(FontAscii_24X24[i].FontImg));
            return true;
        }
    }
    return false;
}


//获取一行的打印数据  
bool getPrintSelfTestData(SelfTestLineTypeDef *data){
    uint8_t  print_line_buf[36] = {0};

    if(SelfTestInfo.CurrentIndex >= SelfTestInfo.max_size){
        SelfTestInfo.CurrentIndex = SelfTestInfo.max_size - 1;
        return false;
    }
    //combine 
    //第一行数据  
    if(SelfTestInfo.CurrentIndex < SelfTestInfo.size_1){
        char cur_ascii = PrintTest.First_Line[SelfTestInfo.CurrentIndex/12];  //每12行  对应一个ascii码 
        if(getFontModelData(cur_ascii,print_line_buf)){ //寻找字模里面的数据信息 
            for(int i=0; i<3; i++){
                data->LineData[9 + i] = print_line_buf[(SelfTestInfo.CurrentIndex%12)*3 + 2 - i];
            }    
        }    
    }else{
        for(int i=0; i<3; i++){
            data->LineData[9 + i] = 0x00;
        }
    }
    //第二行数据  
    if(SelfTestInfo.CurrentIndex < SelfTestInfo.size_2){
        char cur_ascii = PrintTest.Second_Line[SelfTestInfo.CurrentIndex/12];  //每12行  对应一个ascii码 
        if(getFontModelData(cur_ascii,print_line_buf)){ //寻找字模里面的数据信息 
            for(int i=0; i<3; i++){
                data->LineData[6 + i] = print_line_buf[(SelfTestInfo.CurrentIndex%12)*3 + 2 - i];
            }
        }    
    }else{
        for(int i=0; i<3; i++){
            data->LineData[6 + i] = 0x00;
        }
    }
    //第三行数据  
    if(SelfTestInfo.CurrentIndex < SelfTestInfo.size_3){
        char cur_ascii = PrintTest.Third_Line[SelfTestInfo.CurrentIndex/12];  //每12行  对应一个ascii码 
        if(getFontModelData(cur_ascii,print_line_buf)){ //寻找字模里面的数据信息 
            for(int i=0; i<3; i++){
                data->LineData[3 + i] = print_line_buf[(SelfTestInfo.CurrentIndex%12)*3 + 2 - i];
            }
        }    
    }else{
        for(int i=0; i<3; i++){
            data->LineData[3 + i] = 0x00;
        }
    }
    //第四行数据  
    if(SelfTestInfo.CurrentIndex < SelfTestInfo.size_4){
        char cur_ascii = PrintTest.Fourth_Line[SelfTestInfo.CurrentIndex/12];  //每12行  对应一个ascii码 
        if(getFontModelData(cur_ascii,print_line_buf)){ //寻找字模里面的数据信息 
            for(int i=0; i<3; i++){
                data->LineData[i] = print_line_buf[(SelfTestInfo.CurrentIndex%12)*3 + 2 - i];
            }
        }    
    }else{
        for(int i=0; i<3; i++){
            data->LineData[i] = 0x00;
        }
    }
    
    SelfTestInfo.CurrentIndex++;
    return true;
}


var_print_selftest_font.h   //

/******************************************************************************
版权所有:  深圳**科技有限公司  
文件名:    var_pix_print.h   
作者:      wangdy  
创建日期:  2023/2/25
描述:      打印头控制 
其它:      
修改历史:  //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简述
            序号    修改时间    修改人  修改内容
            ????    ????/??/??  ??????  参考样式       
******************************************************************************/

/*********************************防止多次编译*********************************/
#ifndef _VAR_PRINT_SELFTEST_FONT_H
#define _VAR_PRINT_SELFTEST_FONT_H

/************************************头文件************************************/
#include <stdint.h>
#include <stdbool.h>
#include "yc_timer.h"
#include "printerConfig.h"


/************************************宏定义************************************/

typedef struct{
    uint8_t  LineData[PRINTER_LINE_BYTES];
}SelfTestLineTypeDef;

typedef struct{
    uint32_t  CurrentIndex;
    int size_1;
    int size_2;
    int size_3;
    int size_4;
    
    int max_size; //每12行  对应一个ascii码 
}SelftTestInfoTypeDef;

typedef struct{
    char     FontIndex;            //字节索引 
    uint8_t  FontImg[36];            //字信息 
}FontAscii_24X24_TypeDef;

typedef struct{
    uint8_t  First_Line[50];
    uint8_t  Second_Line[50];
    uint8_t  Third_Line[50];
    uint8_t  Fourth_Line[50];
}PrintTestBufTypeDef;


/************************************枚举************************************/

extern const SelfTestLineTypeDef SelfTestAllData[];

/************************************结构体************************************/


/**********************************可导出变量**********************************/

/***********************************函数实现***********************************/

void ResetPrintSelfTestData(PrintTestBufTypeDef test);
bool getPrintSelfTestData(SelfTestLineTypeDef *data);

#endif

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值