修改适配非等宽字体的计数器
This commit is contained in:
@@ -3176,14 +3176,15 @@ void DevOp::writeCnt1GroupSetting(bool bCntByGroupEnable){
|
||||
}
|
||||
#endif
|
||||
}
|
||||
void DevOp::readCalandarDat(void){
|
||||
|
||||
void DevOp::readCalandarDat(void)
|
||||
{
|
||||
fpgaRd(READ_CALENDAR_DAT_ADDR,(unsigned char *)&sysPara->status.calandar_and_dat,16);
|
||||
|
||||
fpgaRd((READ_CALENDAR_DAT_ADDR + 0x34) ,(unsigned char *)&sysPara->status.Status_Counter3.cnt3CurrValue,4);
|
||||
fpgaRd((READ_CALENDAR_DAT_ADDR + 0x38) ,(unsigned char *)&sysPara->status.XXXDay,2);
|
||||
}
|
||||
|
||||
|
||||
void DevOp::writeFpgaCalandar(bool Enable){
|
||||
Q_UNUSED(Enable);
|
||||
time_t rawtime;
|
||||
@@ -3258,7 +3259,16 @@ void DevOp::writeFpgaCalandar(bool Enable){
|
||||
sysPara->status.cnt1CurrentValueInitDoneFlag = false;
|
||||
}
|
||||
unsigned char dataOfvariNum[1];
|
||||
unsigned char dataOfreg_var_print_ctrl[8][8];
|
||||
|
||||
/**
|
||||
* @brief 原 dataOfreg_var_print_ctrl 定义
|
||||
* dataOfreg_var_print_ctrl[8][8]
|
||||
*
|
||||
* 现在多了一个字节,是为了计数器添加支持非等宽字体时,存放对齐方向和字符间距所用
|
||||
* @see reg_var_print_ctrl_t_v2
|
||||
*/
|
||||
unsigned char dataOfreg_var_print_ctrl[8][12];
|
||||
|
||||
void DevOp::writeFpgaVariCtrl(void){
|
||||
writeFpgaCalandar(0);
|
||||
dataOfvariNum[0]=sysPara->status.variNum;
|
||||
@@ -3283,6 +3293,38 @@ void DevOp::writeFpgaVariCtrl(void){
|
||||
fpgaWr(VAR_CTRL_REG_ADDR,dataOfreg_var_print_ctrl[i],8);
|
||||
}
|
||||
}
|
||||
|
||||
void DevOp::writeFpgaVariCtrlv2()
|
||||
{
|
||||
writeFpgaCalandar(0);
|
||||
dataOfvariNum[0]=sysPara->status.variNum;
|
||||
fpgaWr(VAR_CNT_ADDR,dataOfvariNum,1); /* 0xa450 变量个数 */
|
||||
reg_var_print_ctrl_t_v2 reg_var_print_ctrl;
|
||||
for(int i = 0; i < sysPara->status.variNum; i++){
|
||||
vars_t *p_var = &sysPara->status.vars[i];
|
||||
if(p_var->original && p_var->dat){
|
||||
fpgaWr(PRINT_DIGITAL_CHAR_BASE_ADDR + p_var->bassAddr,p_var->dat,p_var->datWidth *p_var->rowByteNum);
|
||||
fpgaWr(PRINT_DIGITAL_CHAR_WIDTH_TABLE_BASE_ADDR + i * 10, p_var->widthTable, sizeof(p_var->widthTable));
|
||||
}
|
||||
|
||||
memset((char *)®_var_print_ctrl,0,sizeof(reg_var_print_ctrl));
|
||||
reg_var_print_ctrl.charColNum = std::max_element(std::begin(p_var->widthTable), std::end(p_var->widthTable));
|
||||
reg_var_print_ctrl.charRamBaseAddr = p_var->bassAddr;
|
||||
reg_var_print_ctrl.charRowNum = p_var->height;
|
||||
reg_var_print_ctrl.horizonWidth = p_var->width; //字模的宽度
|
||||
reg_var_print_ctrl.colOffset = p_var->startColPos+BLANK_COL_NUM;
|
||||
reg_var_print_ctrl.verticalOffset = p_var->startRowPos;
|
||||
reg_var_print_ctrl.varDigitalNum = p_var->digitalNum;
|
||||
reg_var_print_ctrl.varTypeSel = Public::getType(p_var->type) %20;
|
||||
reg_var_print_ctrl.enbVarWidthFont = 1;
|
||||
reg_var_print_ctrl.alignLeft = 0;
|
||||
reg_var_print_ctrl.charSpacing = p_var->letterSpace;
|
||||
memcpy(dataOfreg_var_print_ctrl[i],(unsigned char *)®_var_print_ctrl,8);
|
||||
|
||||
fpgaWr(VAR_CTRL_REG_ADDR,dataOfreg_var_print_ctrl[i], 9);
|
||||
}
|
||||
}
|
||||
|
||||
unsigned char dataOfCmd[1];
|
||||
void DevOp::printCtrl(int cmd){
|
||||
dataOfCmd[0]=cmd;
|
||||
|
||||
Reference in New Issue
Block a user