Files
vx4-GuiLin-Gear/.svn/pristine/12/126a98cdcaffdcb9cdc45811470410a4a1bbe7cf.svn-base
T

1187 lines
40 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* SysPara.h
*
* Created on: Jun 25, 2013
* Author: yiyu
* QQ:1036184468
* Descriptoin:
* 2013-11-09 聂雄
* 修改了para 结构,增加了 alterPrint_t,setepPrint_t两组参数,放在0x3C~0x43传替给FPGA
* 占用的原来预留的17个字(68B)中的8字节,故预留空间改为 15字(60字节)
*/
#ifndef SYSPARA_H_
#define SYSPARA_H_
#include "DevOp.h"
#include <QString>
#ifndef SYS1
#define PARA_ROOT_DIR "/home/plg/conf/"
#define DOC_ROOT_DIR "/home/plg/doc/"
#define UDISK_DOC_ROOT_DIR "/udisk/doc/"
#define UDISK_CONF_ROOT_DIR "/udisk/conf/"
#define TESTDIR "/home/plg/r_conf/"
#else
#define PARA_ROOT_DIR "./conf/"
#define DOC_ROOT_DIR "./doc/"
#define UDISK_DOC_ROOT_DIR "./udisk/doc/"
#define TESTDIR "./r_conf/"
#endif
#define SPACEFLAG // 增加空列 2017.3.8
#define TESTFILES TESTDIR"UP.png"
#define TESTFILED DOC_ROOT_DIR"UP.png"
#define TESTFILECS TESTDIR"UP.dpn"
#define TESTFILECD PARA_ROOT_DIR"UP.dpn"
#define PARA_FILE_PATH PARA_ROOT_DIR"sysPara.bin"
#define DeviceCode_FILE_PATH "/home/plg/conf/deviceCode.bin"
#define RFID_FILE_PATH "/home/plg/conf/RFID.bin"
#define FPGA_PRINT_PARA_BYTE_NUM 0x3C
#define BATCHLEN 3
#define VOLUMELEN 2
#define AUTH_NONE 0
#define AUTH_DISPLAY_SYSTEM_SETTING (1<<0)
#define AUTH_DISPLAY_SYSTEM_MANAGE (1<<1)
#define AUTH_DISPLAY_LOG_INFO (1<<2)
#define AUTH_DISPLAY_OTHER_INFO (1<<3)
#define AUTH_SUPER_USER1 (1<<16)
#define AUTH_SUPER_USER2 (1<<17)
#ifdef __STC_POWER__
#define POWER_SOURCE_KEY 0x01
#define POWER_SOURCE_TIMER 0x02
#define WAKEUP_TIMER_15DAYS 0x01
#define WAKEUP_TIMER_30DAYS 0x02
#endif
typedef enum {
PRINT_TRIGGER_TIME = 0,
PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL = 1,
PRINT_TRIGGER_ELEC_EYE_EDGE =2,
PRINT_TRIGGER_SYNCHRONIZER = 3,
PRINT_TRIGGER_NONE = 4,
PRINT_TRIGGER_EYESYN =5
}print_trigger_mode_t;
typedef enum {
OSCILLATTOR_FREQ_64K = 0,
OSCILLATTOR_FREQ_76K = 1,
OSCILLATTOR_FREQ_96K =2,
OSCILLATTOR_FREQ_128K =3
}oscillator_freq_t;
#define TIME_TRIGGER_PRINT_MODE_END_TO_HEAD 0
#define TIME_TRIGGER_PRINT_MODE_HEAD_TO_HEAD 1
#define SYN_PRINT_MODE_ACCORDING_CHAR_WIDTH 0
#define SYN_PRINT_MODE_ACCORDING_RATIO 1
#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0]))
#define MAX_QVARI_NUM 4
#define MAX_CNT1_GROUPS_NUM 50
typedef struct {
unsigned int second:6;
unsigned int minute:6;
unsigned int hour:5;
unsigned day:9;
unsigned month:4;
unsigned dummy:2;
unsigned dayofweek:3;
unsigned year:12;
unsigned int leap_year:1; //标记当年是否是闰年
unsigned int cntCurrValueInitEnable:8; //{[0] -> cnt1CurrValue [1] ->cun2CurrValue [2] ->cun3CurrValue}
unsigned int week:8;
unsigned int cnt1CurrValue;// BCD码
unsigned int cnt2CurrValue; // 0x0f
unsigned int cnt1End; //0x10
unsigned int cnt2End; //0x14
unsigned short cnt1Repeat;//0x18
unsigned short cnt2Repeat;//0x1a
unsigned int cnt1Step;//0x1c
unsigned int cnt2Step;//0x20
unsigned int cnt1InitValue; //0x24
unsigned int cnt2InitValue; //0x28
unsigned int RandomValue1; //0x2c
unsigned int RandomValue2; //0x30
}calandar_and_dat_t;
typedef struct {
unsigned int cnt3CurrValue;// BCD码
unsigned int cnt3End;
unsigned int cnt3Repeat;
unsigned int cnt3Step;
unsigned int cnt3InitValue;
}stru_counter3;
//hiddenfunction
typedef struct {
unsigned int cnt4CurrValue;// BCD码 0xb164
unsigned int cnt4End = 0;
unsigned int cnt4Repeat = 0;
unsigned int cnt4Step = 0;
unsigned int cnt4InitValue = 0;
}stru_counter4;
typedef struct
{
unsigned short builTime;
unsigned short inkDot; //
unsigned char year;
unsigned char month;
unsigned char day;
}build_dat_t;
typedef struct
{
quint8 print_data_xor;
quint8 counter1_current_value;
quint64 sync_counter_at_zero;
}xor_sync_couter;
#ifdef ALT16
typedef struct
{
unsigned short startValue; // 起始值
unsigned short StepValue; // 跳米间隔
unsigned short endValue; // 结束值
unsigned char enbale; //
unsigned char nncc; // 实际跳米数
}stepPrint_t; // 8Byte
typedef struct
{
unsigned short startValue; // 起始值
unsigned short repeatValue; // 重复间隔
unsigned short repeatPrintTimes; //重复打印次数
unsigned char DistanceTail; //距离尾部
unsigned char enable:2; // 交替便能
unsigned char lineSpace:6; //行距
//unsigned int bak[10]; // 保留参数
}alterPrint_t; // 8Byte
//隐藏功能
typedef struct
{
unsigned char SpecialVarEnable; //特殊变量使能
unsigned char MeterEnable; //计数器4带米标使能
unsigned short SpecialConditionValue; // 隐藏条件倍数值
unsigned short SpecialVarCountEnd;
unsigned short SpecialVarColStart;
unsigned short SpecialVarColEnd;
unsigned char SpecialVarRowStart;
unsigned char SpecialVarRowEnd;
}SpecialVarPrint; // 8Byte
#else
typedef struct
{
unsigned char startValue; // 起始值
unsigned char StepValue; // 跳米间隔
unsigned char endValue; // 结束值
unsigned char enbale; //
}stepPrint_t; // 4Byte
typedef struct
{
unsigned char startValue; // 起始值
unsigned char repeatValue; // 重复间隔
unsigned char repeatPrintTimes; //重复打印次数
unsigned char enable; // 交替便能
}alterPrint_t; // 4Byte
#endif
typedef struct // BarCodeOption
{
unsigned char xpos;
unsigned char font;
unsigned char width;
unsigned char height;
unsigned char scale;
unsigned char type:6;
unsigned char InkColor:1;
unsigned char autoFlash:1;
unsigned char RecFromHost:1;// RecFromHost
unsigned char DisplayUpdate:1; //变量更新标志
unsigned char AutoCount:1; // 自动变化
unsigned char var1En:1; //变量1使用
unsigned char var2En:1; //变量2使用
unsigned char barType;// 条形码类型
unsigned short var1Type;// 变量1类型
unsigned short var2Type;// 变量2类型
unsigned char var1Num;// 变量1位数
unsigned char var2Num;// 变量2位数
unsigned char NC2[11];
char text[80];
char TxtModule[40];
char TxtLine[30];
char TxtLine1[30];
// unsigned char var3Num;// 变量3位数
}bcOption_t;
typedef struct {
unsigned int posx;
unsigned char cntNum;
unsigned char width;
unsigned char height;
unsigned char VarNum:3; //1
unsigned char AutoRefresh:1;
unsigned char AutoCount:1;
unsigned char InkColor:1;
unsigned char RecFromHost:1;// RecFromHost
unsigned char DisplayUpdate:1; //变量更新标志
unsigned char type; //0-DataMatrix, 1-QRCode,2-BAR
unsigned long counter;
char text[100];
char textCnt[10];
char text2[80];
char text3[8];
unsigned short CntInc;
unsigned char barCodeFlag:1;//条形码
}qrOption_t;
typedef struct {
int type;
int width;
int height;
int startColPos;
int endRowPos;
int startRowPos;
unsigned int Counter; //
unsigned char countEn;
unsigned char TimeEn;
unsigned char cntNum; // 未使用
unsigned char NNC2; // 未使用
//---------------------
char text[100]; //指向申请内存的空间 生成字模数据
char textCnt[10];
char text2[90];
bool original; //表示当前dat是通过calloc申请而来还是直接引用别人的指针,主要是影响到指针的释放
}QRvars_t;
/* 分段计米相关设定 */
typedef struct {
unsigned char cnt1GroupCnt; //总共组数
struct{
int StartValue;
int EndValue;
//int StepValue;
//int RepeateValue;
int LoopTimes;
}cnt1GroupSettings[MAX_CNT1_GROUPS_NUM];
}Cnt1ByGroup_t;
typedef struct {
unsigned char cnt2GroupCnt; //总共组数
struct{
int StartValue;
int EndValue;
//int StepValue;
//int RepeateValue;
int LoopTimes;
}cnt2GroupSettings[MAX_CNT1_GROUPS_NUM];
}Cnt2ByGroup_t;
typedef struct
{
int type;//
int width;
int height;
int startColPos;
int endRowPos;
int startRowPos;
unsigned int year; //
unsigned char month;
unsigned char day;
unsigned char separate[3];
unsigned char bold;
unsigned char letterSpace;
unsigned char splitMode;// '-','/',年05月24日
//unsigned int addDays; //
//---------------------
char text2[20];
//bool original; //表示当前dat是通过calloc申请而来还是直接引用别人的指针,主要是影响到指针的释放
}EXPIRYVAR_t;
// 打印参数
typedef struct {
/* 打印参数 */
unsigned int printTotalColNum:16; // 0,1
unsigned int printDirection:8; // 2[0] 上下颠倒 [1] 左右颠倒 [2] 扫描颠倒
unsigned int reducedPixelNum:6; // 3 冗余点数
unsigned int reducedPixelMode:2; // 冗余点比例
unsigned int printRowDelay:8; //4 打印模式
unsigned int printColDelay:24; // 打印设置下的 5,6,7 字宽
unsigned char charBold; //8 字体加宽
unsigned char pixNumPerCol; // 9 每列点阵数
unsigned int timeTriggerPrintDelayMs:16; //a,b
unsigned int photoElectricityRepeateNum:16; //c,d
unsigned short eleEyeTriggerPrintDelay; // e,f
unsigned int printTriggerMode:8; // 10
unsigned int totalSynPulseNum:24; //11,12,13
unsigned int elecEyeTriggerInterval:32; //14,15,16,17
unsigned char lineEndAdjustPointCnt; //18
unsigned char lineEndAdjustPointDelay; //19
short lastLineEndPointFixedDACValue; //1a 1b
unsigned char extClearAllCntEnable; // 1c --- 通过外部(同步器或电眼)清零 0x3a
unsigned char HighVoltageAmplitude; //0x1d 字高// 字高电压系数
unsigned char mmmee[2];
//unsigned short timeTriggerPrintDelayMsH:16; // no use 1e,1f
// FPGA ADDR 0x60~0x63
unsigned short productNumToGenerateOutputPulse; //0x1d,1e num产品 out put a pulse
unsigned short outputPulseDelayMs; // 0x1f,0x20
// FPGA ADDR 0x44~
alterPrint_t alterPrint; // 8Byte FPAG由地址0x44~0x4B
unsigned char Cnt1NatureValue:1; //0自然数
unsigned char eleEyeTriggerSynPrintEn:1; //1电眼触发的同步打印使能
unsigned char autoSynSpeedEn:1; //2同步打印自动模式
unsigned char newAmplifyPlate:1;//新放大板选项
unsigned char SynCntEn1:1; // 4 不打印走米
unsigned char Vol1of8En:1; // 5 1/8电压打印
unsigned char eleEyeReTrigDisable:1; // 6
unsigned char set_HVData_Flag:1; // checkBoxYH
unsigned char rrr_nc[1]; // 0x4d
unsigned short synPulsePerMmX8 ;// 0x4e~4f
bool leftRightInverse;
bool upDownInverse;
bool scanInverse;
int currPrintMode;
int cnt1EndValue;
int cnt1StartValue;
int cnt1StepValue;
int cnt1RepeateValue;
int cnt1CurrValue;
int cnt2EndValue;
int cnt2StartValue;
int cnt2StepValue;
int cnt2RepeateValue;
int cnt2CurrValue;
#ifdef SYNLENFLOAT
float
#else
int
#endif
synTriggerPrintLenMm;
int synTriggerPrintLenRatio;
int timeTriggerPrintMode;
int printDelayMs;
int sysTriggerPrintMode; //在同步模式下选择按字宽或时喷印比例进行打印
int synCharWidthRatio;
int rowSequenceMode;
int pointVoltageAdjustPos;
int PointVoltageAdjustValue;
int synClearCntInEleEyeMode; //在电眼触发模式下通过同步器清零
int eleEyeClearCntInSynMode;
int reducedPixelNumRatio;
int lastLineEndPointFixedValue; //对高压部分点的修正
int pulseOutputEnable; // 脉冲使能输出
int productCntPerOutputPulse;//
int startVoltage; //首行电压
int endVoltage; //行末电压
float synPulseNumPerMm;// 同步器参数 脉冲/毫米
// 添加参数
unsigned char adjVolDacRate[40]; //增加了DAC电压间隔调整比例
int FullColFixVal;
unsigned char SynCntEn:1;
unsigned char ENNCC:7;
unsigned char NCCC22;
unsigned short eleMaskTime; // 16bit
unsigned short AltMirrorGap;// 镜像打印间隔 Mirror image alternation
unsigned short headLen;
unsigned short endLen;//6
unsigned char varLenEn;//
short varLen; // 可变长
short varLen1; // 可变长
unsigned char NCCC;
QRvars_t QRvars[MAX_QVARI_NUM];
//BCvars_t BCvars[MAX_QVARI_NUM];
stepPrint_t stepPrint; // 8Byte
int phaseHighLowRatio; //保存相检
short phaseShift; //相位偏移
unsigned short OuputPulseCol; //桂林客户,精准控制输出脉冲的位置,精确到打印的列数
int phaseDetectVol;
unsigned int phase_detect_pulse_num:4; // 检测个数
unsigned int phase_detect_voltage:12; // 相检电压阀值
unsigned short phaseDetectDelay;
unsigned char rrrccc[2];
quint16 phaseHighCnt;bool cnt1ByGroupEnalbe;bool cnt2ByGroupEnalbe;
#ifdef COUNTER1_BY_GROUP /* 分段计米 */
Cnt1ByGroup_t Cnt1ByGroup;Cnt2ByGroup_t Cnt2ByGroup;
#endif
EXPIRYVAR_t ExpiryVar; //有效期变量 2018.5.24
EXPIRYVAR_t CurDateVar;
EXPIRYVAR_t ClassVari;
int ExpiryDay; //有效期天数
//unsigned char ExpirySplitMode;
int cnt4CurrValue;
int HiddenConditionValue;
bool HiddenFuncEnable;
bool HiddenMeterEnable;
// int cnt3EndValue;
// int cnt3StartValue;
// int cnt3StepValue;
// int cnt3RepeateValue;
int cnt3CurrValue;
int textEditLineSpace;
unsigned char speedoverPaushPrint; // 3速度超速不打印标志
}printPara_t;
typedef struct {
unsigned int printTotalColNum:16;
unsigned int printDirection:8; //[0] 上下颠倒 [1] 左右颠倒 [2] 扫描颠倒
unsigned int reducedPixelNum:6;
unsigned int reducedPixelMode:2;
unsigned int printRowDelay:8;
unsigned int printColDelay:24;
unsigned char oscillatorVoltage; //0x08
unsigned char phaseByHand;
unsigned char charBold;
unsigned char pixNumPerCol;
unsigned int timeTriggerPrintDelayMs:16;
unsigned int photoElectricityRepeateNum:16;
unsigned int printTriggerMode:8; //0x10
unsigned int totalSynPulseNum:24;
unsigned int elecEyeTriggerInterval:32;
unsigned short divideRatio; //0x18
unsigned char lineEndAdjustPointCnt; // 0x1a
unsigned char lineEndAdjustPointDelay; // 0x1b
unsigned char enableChargeFullTime; // 0x1c
unsigned char timeTriggerPrintDelayMsH:8; // 0x1
//unsigned char phaseGroupCount:8; // 0x1
short lastLineEndPointFixedDACValue;
unsigned int synNumPerCol:16; //0x20,小数位占8位 //每列同步起脉冲数
unsigned int dotNumPerCol:16; // 平均每列的像素点(减去冗余的点后) + 列延迟(即打印设置界面中的字体宽度printColDelay)
unsigned short phase_detect_high_cnt; //
unsigned int phase_detect_pulse_num:4; // 检测个数
unsigned int phase_detect_voltage:12; // 相检电压阀值
unsigned short maxHighVoltageDAC;//0x28
unsigned short phaseDetectDelay; //相检延迟 //可以认为是相检的间隔, 以墨点为单位
short phaseShift; // 相位偏移
unsigned char HighVoltageAmplitude;
unsigned char magicNum;
unsigned short productNumToGenerateOutputPulse; //产生一个脉冲所需的产品计数个数//0x30
unsigned short outputPulseDelayMs;
unsigned short septalPostion; //设置的隔膜位置
unsigned short blinkLightPeriod; //频闪灯周期,以墨点为单位
unsigned short eleEyeTriggerPrintDelay; // 0x38
unsigned char extClearAllCntEnable; //通过外部(同步器或电眼)清零 0x3a
unsigned char FullColFixDacVal; // 0x3b
// 0x3C 0x3D 3E 3F USEING
#ifdef ALT16
alterPrint_t alterPrint; // 8Byte
#else
stepPrint_t stepPrint; // 4Byte FPAG地址0x44~0x4B
alterPrint_t alterPrint; // 4Byte
#endif
unsigned char Cnt1NatureValue:1; //自然数
unsigned char eleEyeTriggerSynPrintEn:1; //电眼触发的同步打印使能
unsigned char autoSynSpeedEn:1; //同步打印自动模式
unsigned char newAmplifyPlate:1;
unsigned char SynCntEn1:1; // 不打印走米
unsigned char Vol1of8En:1; //打印优化
unsigned char eleEyeReTrigDisable:1; // 6
unsigned char set_HVData_Flag:1; //
#if 0
unsigned char rrr_nc[1]; // 0x4d
#else
unsigned char mode0211:1; //0211 模式
unsigned char synchronizorActType:2; // 0b00:同步器正反转打印; 0b01:同步器只正转打印; 0b10:同步器只反转打印
unsigned char cnt1ResetToInitValue:1; // 电眼复位时,选择复位到起始值还是当前值
unsigned char flagOfFastMode:1;
// unsigned char rrr_nc:4;
// unsigned char printOnce:1; // 0x4D :[4:4]0-信息重复打印;1-每条信息只打印一次
unsigned char rrr_nc0:1; // 0x4D :[5:5]
unsigned char printNumPoint:1; // 0x4D :[6:6]计数器1打印小数点使能位
unsigned char rrr_nc:1; // 0x4D :[7:7]
#endif
unsigned short synPulsePerMmX8 ;// 0x4e~4f
/*-------------------------------cut line--------------------------------------*/
#ifdef ALT16
stepPrint_t stepPrint; // 8Byte
unsigned int reserved_reg[12]; // 4*(12)=48Byte // 地址: ~0x7F
#else
unsigned int reserved_reg[14]; // 4*(14)=56Byte // 地址: ~0x7F
#endif
unsigned short highVoltageRecord[10]; // 0x80 = 128开始
int reclaimPumpPWMWidth;
bool leftRightInverse;
bool upDownInverse;
bool scanInverse;
int currPrintMode;
float synPulseNumPerMm;
int cnt1EndValue;
int cnt1StartValue;
int cnt1StepValue;
int cnt1RepeateValue;
int cnt1CurrValue;
int cnt2EndValue;
int cnt2StartValue;
int cnt2StepValue;
int cnt2RepeateValue;
int cnt2CurrValue;
int startVoltage;
int endVoltage;
#ifdef SYNLENFLOAT
float
#else
int
#endif
synTriggerPrintLenMm;
int highVoltageLevel;
int pressure;
int viscosityPumpInterval;
int reclaimTankTime;
int temperature;//喷头温度
int viscosity;
int viscosityAdjust;
bool stopCounterMeterAfterFault;
bool suspendAfterPhaseFault;
int oscillatoFreq;
int synTriggerPrintLenRatio;
char lastOpenedFileName[100];
int phaseHighLowRatio; //相位高电平占空比
int phaseDetectVol; //因为和实际的值有一个转换过程,所以用此变量做中转
int oscillatorFreqFix;
unsigned int totalProductCnt;
int timeTriggerPrintMode;
int printDelayMs;
int sysTriggerPrintMode; //在同步模式下选择按字宽或时喷印比例进行打印
int synCharWidthRatio; //字符宽度 或 喷印比例 触发设置界面
int rowSequenceMode;
int pointVoltageAdjustPos; // 点距电压调整位置
int PointVoltageAdjustValue; //点距调压调整值, 超过调整位置就需要增加充电电压
int RecycleWarnAction;
int powerOffAfterPhaseFault;
int synClearCntInEleEyeMode; //在点眼触发模式下通过同步器清零
int eleEyeClearCntInSynMode; // CNT2 D5=0选择电眼复位 D5=1选择电眼加1 ;
// CNT1 D4=0选择电眼复位 D4=1选择电眼加1 ;
// D2D1D0 =00 禁止电眼操作,01 电眼复位,打印完成,10 电眼立即复位
int fontPixelSize; //用来记录上一次设置的字体大小
//int septalPostion;
int mixValveisNewVersion; //混和阀是否是新管路
int lastLineEndPointFixedValue; //对高压部分点的修正
int textEditLineSpace;
int textEditCharSpace;
int industryIndex;
int recommendedPrintSpeed;
int pulseOutputEnable;
int productCntPerOutputPulse;
int reducedPixelNumRatio;
int EditMode; //编辑模式 0 txt , 1 dot, 2 场景
//int nncc:31;
int AlterMode; // 交替状态 0,1,2
int SynCntEn:1;
int ResetProductCntEn:1; // 复位产品计数器
int ResetAllProductCntEn:1;// 复位总产品计数器
int HVFaultCloseEn:1;// 高压故障关回收槽
int MirrABCEnable:2; // 0 无镜像,1 水平,2 垂直
int checkSpace:1; //使用空列
int varLenEn:1;//
int ExtScreenType:3;// 外接屏类型
int ExtMeterType:3; // 显示屏显示米数类型
int unc:15; //
int FullColFixVal;
unsigned char ReadFileErrorCnt; //
unsigned char PowerOnErrorCnt; //
unsigned char NozzleType; // 0 -- 小,1- 大
unsigned char NNCC; //预留,这样可以保证每次的配置文件大小一致
short varLen; // 头部可变长
short varLen1; // 尾部可变长
unsigned short OuputPulseCol; //桂林客户,精准控制输出脉冲的位置,精确到打印的列数-->现在用作充电脉宽
// short reverse; //留,这样可以保证每次的配置文件大小一致
unsigned char diameter:3;
unsigned char Reciclar:1;
unsigned char ResetSendData:1;
unsigned char reverse:2;
bool isCheckInsertTime;
calandar_and_dat_t calandar_and_dat;
// 添加参数
unsigned char adjVolDacRate[40]; //增加了DAC电压间隔调整比例
bcOption_t bcOption;
qrOption_t qrOption;
unsigned short eleMaskTime; //0x3C,3D 电眼锁定(屏蔽)间隔ms
unsigned short AltMirrorGap;// 镜像打印间隔 Mirror image alternation
long long openInkLineTime; //记录墨线开关时间 136年 以秒为单位
long TrunOnPowerCnt; // 开机次数 20151218
// int varLenEn:1;//
// unsigned char varLen; // 可变长
unsigned short headLen;
unsigned short endLen;
int ExpiryDay; //有效期天数
unsigned char ExpirySplitMode;
quint16 diaphramOffset; // 隔膜位置偏移,当隔膜位置低于(设定的隔膜位置-偏移),主墨泵就开启
unsigned char gearPumpEnable:1;
quint16 gearPumpValue;
quint16 steal_dac_row;
quint16 phaseHighCnt;
int reserved2[13];// 23 -1预留,这样可以保证每次的配置文件大小一致
unsigned short reverse3;
bool isCheckBarDate; //条形码加入日期
bool isCheckBarTime; //条形码加入时间
bool cnt1ByGroupEnalbe;bool cnt2ByGroupEnalbe;
#ifdef COUNTER1_BY_GROUP /* 分段计米 */
Cnt1ByGroup_t Cnt1ByGroup;Cnt2ByGroup_t Cnt2ByGroup;
#endif
quint16 printed_adj_dac[40];
quint16 printed_continue_col_dac[40];
quint16 printed_full_col_dac[40];
quint16 dacScale;
unsigned int pulse_sinal_value:16;
int cnt3EndValue;
int cnt3StartValue;
int cnt3StepValue;
int cnt3RepeateValue;
int cnt3CurrValue;
stru_counter3 Counter3;
stru_counter4 Counter4;
int cnt4CurrValue;
int HiddenConditionValue;
bool HiddenFuncEnable;
bool HiddenMeterEnable;
//quint16 Json_device_code;
unsigned char Json_IP[4];
quint16 Json_server_port;
bool charWidthSetEnable;
bool isCheckMagnet;//检测喷头盖磁铁
bool isRemoveCode;//不显示二维码
bool isCheckPrintLight;//
bool isEnableGetDataButton;//使能获取数据按钮
bool isRemoveDigitCode;//不显示数字码
bool isCntSaveStateValue;//计数器保存关机值
bool isCheckBarCodeAddText;
bool isCnt1ShowNumPoint; //计数器1是否显示小数点
char FanTemperature;
char Json_device_code[10];
unsigned char speedoverPaushPrint:1; // 速度超速不打印标志
bool flagOfModuleDecimal;
bool flagOfModuleHide;
bool flagOfstepPrint;
bool flagOfCnt1GroupDisp;
bool flagOfReclaimPumEnable;
unsigned int gearPumpSpeedAlarm;
bool flagOfSecMi;
/* */
// 1108Bytes
}sysPara_t;
typedef struct
{
quint8 header[32];
qint16 pixel_full_table[40];
qint16 pixel_1_table[40];
qint16 pixel_2_table[40][2];
qint16 pixel_3_table[40][3];
qint16 pixel_4_table[40][4];
qint16 pixel_para_table[16];
qint16 pixel_5_table[40][5];
qint16 pixel_gap_table[48][5];
qint16 pixel_pre_table[16][5];
qint16 pixel_c_table[32][4];
}voltePara_t;
typedef struct
{
quint8 header[32];
qint16 pixel_full_table[48];
qint16 pixel_steal_table[48];
qint16 pixel_head2_table[48];
qint16 pixel_head3_table[48];
qint16 pixel_1_table[48];
qint16 pixel_tail2_table[48];
qint16 pixel_2_table[48][2];
qint16 pixel_3_table[48][3];
qint16 pixel_4_table[48][4];
qint16 pixel_para_table[16];
qint16 pixel_5_table[48][5];
qint16 pixel_continous_table[48];
qint16 pixel_gap_table[48][5]; // kongdian
qint8 pixel_big_table[8][8];
qint16 pixel_gap_post_3dot_table[48][5]; // 3 kongdian
qint16 row_delay_table[48];
qint16 head1_row_delay_table[48];
qint16 pixel_general_dac_parameter[64];
}voltePara_t_No73;
typedef struct
{
unsigned int PrintInkDots;
unsigned int InkEmptyCnt;
unsigned int SOLVEmptyCnt;
unsigned int InkRFIDCnt;
unsigned int SOLVRFIDCnt;
unsigned short solventNumber;
}RFIDPara_t;
#define MDT 0
#define QR 1
#define BAR 2
#define MAX_SELF_CHECK_CNT 6000 //60S,以10ms为单位s
#define MIX_VALVE_OPEN_DELAY 90 //混合阀打开的时间
#define RECYCLE_WARN_DELAY 50 //回收故障延时,以300ms为单位
#define MAX_VISCOSITY_WORK_TIME 500 //10ms为单位
#define MAX_MAIN_INK_PUMP_RUN_TIME 1000 //10s
#define MAX_HEATER_TIME 3000 //300s
#define MAX_COMPRESS_PUMP_RUN_TIME 6000 //60
#define FPGA_MAGIC_NUM_AFTER_CONF 0x73
#define MAX_CYCLEVALVE_OPEN_TIME_AFTER_SWITN_OFF 280 // 以10ms为单位 230
#define FPGA_STATUS_BYTE_NUM 0x44
#define MAX_PRINT_COL_NUM_Wide (1000*8 - 1)
#define MAX_PRINT_COL_NUM_Normal (500*8 - 1)
#define MAX_PRINT_ROW_NUM 40
#define MAX_PRINT_ROW_BYTE_NUM 5
#define BLANK_COL_NUM 3 //信息前空3列
#define RECLAIM_PUMP_FULL_SPEED_CNT 5300 //5s钟
#define MAX_VARI_NUM 8
#define CALANDAR_YEAR 0
#define CALANDAR_MONTH 1
#define CALANDAR_DAY 2
#define CALANDAR_WEEK 3
#define CALANDAR_HOUR 4
#define CALANDAR_MINUTE 5
#define CALANDAR_SECOND 6
#define CALANDAR_CNT1 7
#define CALANDAR_CNT2 8
#define CALANDAR_CNT3 13
#define CALANDAR_XDAY 14
#define CALANDAR_CNT4 15
#define RANDOMNUM 12
#define EXPIRYDATE 80
#define CURDATE 81
#define CURCLASS 82
#define MAX_INK_EMTYTIME 86400//10800 // s 3hour 3*60*60 = 10800s
#define MAX_SOLV_EMTYTIME 21600//10800 // s 3hour 3*60*60 = 10800s
#define MAX_INK_RFIDTIME 86400//10800 // s 3hour 3*60*60 = 10800s
#define MAX_SOLV_RFIDTIME 7200//21600//10800 // s 3hour 3*60*60 = 10800s
#define MAX_INK_DOTS 2300000000//PrintInkDots
#define MAX_SOLV_OPENNUM 400//OpenNumber
#define MAX_INK_SOLV_EMTYTIME 10800 // s 3hour 3*60*60 = 10800s
#define AUTOCLEAN_STATUS_NONE 0
#define AUTOCLEAN_STATUS_STEP1 1
#define AUTOCLEAN_STATUS_STEP2 2
#define AUTOCLEAN_STATUS_STEP3 3
#define AUTOCLEAN_STATUS_STEP1_TIME 60
#define AUTOCLEAN_STATUS_STEP2_TIME (60*3)
#define AUTOCLEAN_STATUS_STEP3_TIME (5)
typedef struct {
int type;
int digitalNum;
int width; // 字模的宽度
int height; // 字模的高度
int startColPos;
int endRowPos;
int startRowPos;
int bassAddr; // 字模的地址, 从0开始,不同类型会一直增加
int currVal;
int bold;
int letterSpace;
//int chartype;// 字体类型:0 常规,1 左横,2 右横, 4 倒立(Nc)
//---------------------
unsigned char *dat; //指向申请内存的空间 生成字模数据
int datWidth; //datWidth * datHeight为像素的数目,申请空间的大小为datWidth*rowByteNum;
int datHeight; // 变量的高度
int rowByteNum;
bool original; //表示当前dat是通过calloc申请而来还是直接引用别人的指针,主要是影响到指针的释放
}vars_t;
typedef struct{
unsigned int VREF:16;
unsigned int MOTOR_ISEN:16;
unsigned int TEMP_ADIN:16;
unsigned int HV_DETOUT:16;
unsigned int AD_FIXED:16;
unsigned int SEPTAL_POSITION:16;
unsigned int PRESSURE:16;
unsigned int AD_UNUSED:16;
unsigned int maginNum:8; //0x10
unsigned int statWarn:8; //0x11
unsigned int flightTm:16;
unsigned int phase:16;
unsigned int viscosity:16;
unsigned char phaseChargeResult[8];
/*
unsigned short ink_dot_num:6; //飞过相检头上的墨点数 0x20
unsigned short detect_phase_error:1;
unsigned short flight_tm_error:1;
unsigned short synPulseCntPer1sH:8;
unsigned short synPulseCntPer1s:16;
*/
unsigned int ink_dot_num:6; //飞过相检头上的墨点数 0x20
unsigned int detect_phase_error:1;
unsigned int flight_tm_error:1;
unsigned int synPulseCntPer1s:24;
unsigned int productCnt;
unsigned int synColDelay:16; //0x28
unsigned char phasePosEdge; //0x2a
unsigned char phaseNegEdge; //0x2b
unsigned int synTotalPulseCnt; //0x2c~2f
unsigned int warm_InkPump:1; // 0x30
unsigned int ink_Ctrl:1;
unsigned int adj_warn:1; // 自动调速状态 NC 20140305
unsigned int lesslen_warn:1; // 喷印不完整报警 20140305
unsigned int wait_phdetect_ok:1; // 等待相检完成 V3W 版还没有对此作修改。 原V6S的参数
unsigned int set_HVData_Flag:1; // 设置高压包电流标志
unsigned int dummy:2;
unsigned char reclaimTankstatus; // 0x31 130113
unsigned short curr_reclaimTankTime; // 0x32 33 电机当前开关时长(s) 130113
unsigned char read_nc11[2]; //34,35 // no use
unsigned char ele_product_cnt_reset; //36 {ele_product_cnt_reset[1:0]};
unsigned char RandomNum; // 目前实际只[4:0] 37
unsigned int totalProductCnt ; // 总产品计数器 38393A3B // [1:0] 11立即清零, [2]计数器1单独清零 [3]计数2单独清零 [4]总产品计数器清零
unsigned int total_syn_pulse_num ; //
#if(0)
unsigned int volGap_pulse_num; //
#else
unsigned int volGap_pulse_num:24; //
unsigned int AlterMode:8; // 交替状态 0,1,2; //0x43 共 0x44个字节
#endif
//unsigned char read_ncba[6]; // 不用 3C
/*----------------------------cut line----------------------------*/
unsigned short phaseDetectHighTm[64]; //每一个相位的高电平时间
unsigned char RandomDigitNum;// 随机码长度
unsigned char RandomBackCnt; // 0不需要备份,>0需要备份
bool isPumpValveControledByHand; //0x20
bool isCleanUp;
int reclaimCloseCnt;
bool selfCheckDone;
int selfCheckCnt;
int viscosityDelayCnt;
int viscosityFaultCnt;
int rWarnViscoReady;
int viscosityMaxFaultCnt;
int reclaimPumpFullSpeedCnt; //全速开
bool mainInkPumpError; //主墨泵故障
int mainInkPumpRunTmCnt;
bool compressPumpError;
int compressPumpRunTmCnt;
int currPrintCol;
int currPrintRow;
unsigned char printDat[MAX_PRINT_COL_NUM_Wide*MAX_PRINT_ROW_BYTE_NUM];
unsigned char printDat_Normal[MAX_PRINT_COL_NUM_Normal*MAX_PRINT_ROW_BYTE_NUM];
int currAlterPrintCol;
int currAlterPrintRow;
// unsigned char printAlterDat1[MAX_PRINT_COL_NUM*MAX_PRINT_ROW_BYTE_NUM];
// unsigned char printAlterDat2[MAX_PRINT_COL_NUM*MAX_PRINT_ROW_BYTE_NUM];
int delay10ms;
int delay100ms;
int delay1s;
int delay10s;
int delay100s;
int viscosityFault;// 0 正常,1-粘度值高,2-粘度值低
int lastViscosityFault; //用来记录上一次的粘度错误状态
int lastStatWarn;
int lastPhaseFault;
int phaseErrorCnt;
/* Yang */
int lastRecycleWarn; //记录上一次的回收故障状态
int RecycleWarnCnt;
int LightUpCnt;
bool gearPumpRunStopFlag;
unsigned short gearPumpRunSpeed; //齿轮泵转速
int visocityValueOverflowNum; /*记录粘度溢出次数*/
unsigned int lastProductCnt;
unsigned int lastSynPulseCntPer1s; //
int lastSynColDelay;
int configDone; //配置完成
int currentRunStatus;
unsigned int fpgaVersionNum;
unsigned char FPGAChipType;
bool detectHighVoltageAppending; //检测高压
bool detectedValidHighVoltage; //是否检测到高压
unsigned int detectHighVoltageCnt; //检测高压的次数
int lastwarmInkPump;
int variNum,QRvariNum,BCvariNum,ExpiryVarNum,ExpiryDispUpdate,CurrDateVariNum,classVariNum;
vars_t vars[MAX_VARI_NUM];
//QRvars_t QRvars[MAX_QVARI_NUM];
calandar_and_dat_t calandar_and_dat;
/*---------------回收槽控制相关----------------------*/
int currReclaimTankPos;
int currReclaimOperationCnt;
bool reclainTankReachEnd; //完全打开
bool reclainOpenAppending;
bool reclainCloseAppending;
bool canRunAirPushing;
int currMsCnt;
/*---------------------------------------------*/
bool cnt1CurrentValueInitDoneFlag; // 将这两个值设为false,会另cnt1和cnt2的当前值初始化
bool cnt2CurrentValueInitDoneFlag; //
/*----------------------------------------------*/
/*----------------------------------------------*/
bool RedLightOnFlag;
bool GreenLightOnFlag;
bool YellowLightOnFlag;
bool beeperOnFlag;
/*--------------------------------------------*/
int heaterONTimeCnt; //连续加热有时间限制
bool lostCommuFlag; //失去通信
bool isPrinting; //
int cycleValveOpenCntAfterSWintOff; //墨线关掉的时候关循环阀的时间
int cycleValveOpenCntAfterSWintOn; //墨线开启的时候开循环阀的时间
//2019/10/26
bool autoCtlReclaimAfterSWintOff;
int reclaimOpenCntAfterSWintOff; //墨线关掉的时候关回收阀的时间
bool byHandStore; // 为了控制主墨泵, 保存当前是否在手动状态,然后切换手动状态,
bool powerOffAppending; //按下快速关机
bool reclaimTankBlockedAppending; //回收槽被卡住
int airPushingOnTime; // 排气的运行时间
bool airPushing; // 开回收槽执行排气动作
bool airPushingDone; // 开回收槽执行排气动作完成
bool DACDisable; //相位故障,DAC被disable
bool WorkTimeOut;
bool detectBestOscillatorFreqAppending; //检测最佳晶振频率
bool detectBestOscillatorVoltageAppending; //检测最佳晶振频率
int currentDetectBestOscillatorCnt;
int longestPhaseHightLevelTm; //最长的相位高电平时间
int detectedBestOscillatorFreq; //
int detectedStartOscillatorFreq;
int detectedBestOscillatorVoltage; //
int releaseValveDelayCnt; //开泄压阀后立刻关掉,等一定间隔在检测
int reclaimBlockedCnt;
bool releaseValveOpenApending;
int powerOffAfterPhaseFaultAppending;
unsigned int pressureOverFlowCnt;
unsigned int septalPositionOverFlowCnt;
bool powerOffAfterInkOrSOLVEmptyAppending; //墨水或溶剂空3小时标志
//
alterPrint_t alterPrint; // 交替打印
stepPrint_t stepPrint; // 跳米打印
build_dat_t build_dat;
xor_sync_couter xor_sync;
unsigned int InkOrSOLVEmptyCnt;
unsigned char EditMode; //
unsigned char updateSoftEN:1;
unsigned char adjHightVolInitEN:1;
unsigned char FileChangeRestCntFlag:1; // 更换文件,清除计数器
unsigned char HVFaultCloseEn:1;// 高压故障关回收槽
unsigned char ExtScreenEn; // 外接屏连接正常
unsigned char waitHightVolOff,waitHightVolOn; //
unsigned char addSpace;//sysPara->para.checkSpace
unsigned char autoCleanStatus; // clean status, 0: NONE,1: Step1 ...
unsigned int autoCleanTime; // clean time
unsigned int cnt1GroupCurrentLoop; unsigned int cnt2GroupCurrentLoop;//分段计米 计数器1当前第几次循环
unsigned char cnt1GroupRunningIndex; unsigned char cnt2GroupRunningIndex;//分段计米 计数器1当前第几次段
unsigned int indoorTemperature; //开机记录喷头温度,作为是否调整粘度的根据
unsigned int needPowerOffTimerout;
#ifdef __STC_POWER__
unsigned int powerSource;
unsigned int powerOnTimer;
unsigned int waitPowerOffTime;
#endif
#ifdef __ADC_INPUT__
unsigned char boardTemp; //机箱温度
#endif
unsigned char bLanConfigManual; //手动设定有线ip 地址
quint16 r_print_q;
quint8 col_state;
quint8 r_row_sequcence;
quint8 dot_num;
quint8 curr_index;
quint16 RowADC;
quint16 w_curr_DAC;
quint16 curr_DAC;
quint16 printed_column;
quint16 printed_adj_dac[40];
bool cnt3CurrentValueInitDoneFlag;
stru_counter3 Status_Counter3;
bool printDoneFlag;
bool oneCodePrintOnce;
bool forTemplateUse;
SpecialVarPrint specialVarPrint;
bool lastHighVoltageFault; //高压错误
bool circleProductCnt;
unsigned int printTotalColNum:16;
unsigned char pixNumPerCol;
unsigned short XXXDay;
int cnt4CurrValue;
bool flagOfAdjustWidth_1;
unsigned char splitMode_Adjust_1;
bool flagOfAdjustWidth_2;
unsigned char splitMode_Adjust_2;
//edit-12.2
bool flagOfNo67FPGA; //识别67版本,67版本使用4000列,其他版本使用8000列
short FPGAVersionType; //兼容旧的FPGA版本,0=新FPGA. 旧FPGA: 1=No66,2=No67,3=No72,4=No73
unsigned int textEditTotalCol;
unsigned int alterPrintCnt;
}sysStatus_t;
#define RUN_STATUS_IDLE 0
#define RUN_STATUS_LOST_COMMUNICATION_WITH_FPGA 1
#include <stdint.h>
/* input registers */
typedef struct {
uint16_t printFinishFlag;//(0)
uint16_t orderCode;//顺序号(1)
uint8_t usedFileName[100];//(2-51)
uint16_t printStatus;// 1:正在打印, 2:暂停打印, 3:停止打印(52)
uint16_t statWarn;//(53)
calandar_and_dat_t curCalendarAndDate;//(54-79)
uint32_t mbCurrPrintRow;//(80-81)
uint32_t mbCurrPrintCol;//(82-83)
uint32_t productCnt; //产品计数器(84-85)
uint16_t receiveEnbleFlag;//(86)
}ModbusPrintStatus;
/* holding registers */
typedef struct {
uint8_t QRcode_buf[110]; //存二维码的buf(0-54)
uint16_t printCommand; // 1:开始打印, 2:暂停打印, 3:停止打印(55)
uint8_t selectFileName[100]; // 选择要打印的文件(56-105)
uint16_t faultRusume;//(106)
calandar_and_dat_t setCalendar;//(107-133)
uint32_t lineSpaceAndCharSpace; //高16作为行间距,低16位作为字符间距(134-135)
uint16_t clearProductCnt; //产品计数器(136)
uint16_t printContent;//2位数的打印内容(137)
}ModbusPrintParas;
/* net data */
typedef struct {
//get data
char PrintingContent[2048];
int ProductPlanQty;
char ProductUniqueCode[110];// 产品唯一编码
int ProductionTask;
char QRCodeContent[110];
int StartMetre;
bool TasdNeedConfirm;
int TaskSwitchingMode;
}JSON_DATA;
class SysPara{
//Q_OBJECT
public :
SysPara(void);
QString sysFile;
printPara_t print;
sysPara_t para;
voltePara_t voltePara;
voltePara_t_No73 voltePara_No73;
RFIDPara_t RFIDPara;
sysStatus_t status;
ModbusPrintStatus modbusStatus;
ModbusPrintParas modbusParas;
JSON_DATA Get_JSON_DATA;
DevOp *devOp; /*设备操作*/
void loadParaFromFile();
void saveParaToFile();
void loadDefaultPara();
void loadDefaultPrintPara();
void loadPrintParaFromFile(QString fileName);
void savePrintParaToFile();
void showDebug(QString s);
void showDebug(int s);
void loadVolteParaFromFile(PRINT_MODE mode);
void saveRFIDPara();
bool loadRFIDPara();
private:
};
#endif /* SYSPARA_H_ */