提交原始齿轮泵代码
This commit is contained in:
@@ -0,0 +1,381 @@
|
||||
/*
|
||||
* DevOp.h
|
||||
*
|
||||
* Created on: Jun 25, 2013
|
||||
* Author: yiyu
|
||||
* QQ:1036184468
|
||||
* Descriptoin:
|
||||
|
||||
*/
|
||||
|
||||
#ifndef DEVOP_H_
|
||||
#define DEVOP_H_
|
||||
|
||||
/************以前的硬件版本,跟VX5版本号冲突,取消
|
||||
#define JETV1 1
|
||||
#define JETV2 2
|
||||
#define JETV3 3 // EP3C10F144
|
||||
#define JETV23 4 // V5,V4主板编号均为4; V6没有正式投入使用
|
||||
#define JETV7 7 // EP4CE15F144, ARM 335X
|
||||
#define PRODUCT_VERSION(ver) ((ver>>13) & 0x7)
|
||||
**********************/
|
||||
class SysPara;
|
||||
|
||||
#include <stdio.h>
|
||||
#include <QString>
|
||||
#include "myinclude.h"
|
||||
#include <QObject>
|
||||
#include <QQueue>
|
||||
#include <QMetaType>
|
||||
#include <QThread>
|
||||
#include <QMutex>
|
||||
#include <QReadWriteLock>
|
||||
#include <QSerialPort>
|
||||
|
||||
#define DisTraceMsg() printf("###############TRACE,Line:%d File:%s Fun:%s\n",__LINE__,__FILE__,__FUNCTION__);
|
||||
#define DisWarnmsg() printf("~~~~~~~~~~~~~~~WARN,Line:%d File:%s Fun:%s\n",__LINE__,__FILE__,__FUNCTION__);
|
||||
#define DisErrorMsg() printf("!!!!!!!!!!!!!!!ERROR! ,Line:%d File:%s Fun:%s\n",__LINE__,__FILE__,__FUNCTION__);
|
||||
|
||||
#define PRINT_CTRL_STOP 0
|
||||
#define PRINT_CTRL_START 1
|
||||
#define PRINT_CTRL_PAUSE 2
|
||||
#define PRINT_CTRL_DAC_DISABLE 3
|
||||
#define PRINT_CTRL_DAC_ENABLE 4
|
||||
#define PRINT_CTRL_STOPSYNCNT 5
|
||||
|
||||
|
||||
#define MAX_FPGA_DAC_VALUE_FOR_NEW ((1<<12)*95/100) //由于硬件原因,当DAC大于一定值后,电压不再变化,所以做一下限制
|
||||
#define MAX_FPGA_DAC_VALUE_FOR_V1 (255) //老板子的最大值到256
|
||||
//#define MAX_FPGA_DAC_VALUE ((PRODUCT_VERSION(sysPara->status.fpgaVersionNum) == JETV1)?MAX_FPGA_DAC_VALUE_FOR_V1:MAX_FPGA_DAC_VALUE_FOR_NEW)
|
||||
#define MAX_FPGA_DAC_VALUE MAX_FPGA_DAC_VALUE_FOR_NEW
|
||||
|
||||
#define MAX_POINT_DISTANCE_ADJUST_VAL (1<<10) //点距微调的最大值
|
||||
|
||||
#define MAX_MOTOR_RUN_CURRENT 600
|
||||
#define MIN_MOTOR_RUN_CURRENT 80
|
||||
|
||||
#define MAX_RECLAIM_BLOCK_CNT 5 //500ms
|
||||
|
||||
#define MAX_RELEASE_VALVE_DELAY_CNT 4
|
||||
/*所有警告都是高电平警告*/
|
||||
#define WARN_STATUS_INK_SWINT (1<<7) /*墨线开头,来自喷头,必须开的时候才能打印,关的时候为1,开的时候为0*/
|
||||
#define WARN_STATUS_POWER_MON (1<<6) //高压报警
|
||||
#define WARN_STATUS_RECYCLE_FAULT (1<<5) //高电平表示有故障
|
||||
#define WARN_STATUS_INK_WARN (1<<4)
|
||||
#define WARN_STATUS_SOLV_WARN (1<<3)
|
||||
#define WARN_STATUS_SUMP_WARN (1<<2) //墨水渗漏
|
||||
#define WARN_STATUS_HDINT (1<<1) /*喷头盖,盖上为0,否则为1,必须盖上才能打印,电磁铁有正反面*/
|
||||
#define WARN_STATUS_VISCOTITY_MEASURE_READY (1<<0) // 球已经到上位等灯
|
||||
|
||||
|
||||
#define FPGA_SYS_HZ 100000000
|
||||
|
||||
#define MAX_WR_MEM_SIZE (1<<16) //写空间最大地址范围
|
||||
#define MAX_WR_MEM_SIZE_MASK (MAX_WR_MEM_SIZE - 1)
|
||||
#define MAX_RD_MEM_SIZE (1<<9) //读空间最大地址范围
|
||||
#define MAX_RD_MEM_SIZE_MASK (MAX_RD_MEM_SIZE - 1)
|
||||
|
||||
/* am335x core board control pwm output */
|
||||
#define VISCO_PUMP_REQUEST "echo 1 > /sys/class/pwm/ecap.2/request"
|
||||
#define VISCO_PUMP_RELEASE "echo 0 > /sys/class/pwm/ecap.2/request"
|
||||
#define VISCO_PUMP_RUN "echo 1 > /sys/class/pwm/ecap.2/run"
|
||||
#define VISCO_PUMP_STOP "echo 0 > /sys/class/pwm/ecap.2/run"
|
||||
#define VISCO_PUMP_50Hz "echo 50 > /sys/class/pwm/ecap.2/period_freq"
|
||||
#define VISCO_PUMP_50P "echo 50 > /sys/class/pwm/ecap.2/duty_percent"
|
||||
#define VISCO_PUMP_HIGH "echo 1 > /sys/class/pwm/ecap.2/polarity"
|
||||
#define VISCO_PUMP_LOW "echo 0 > /sys/class/pwm/ecap.2/polarity"
|
||||
|
||||
#define SUCTION_PUMP_REQUEST "echo 1 > /sys/class/pwm/ehrpwm.0:1/request"
|
||||
#define SUCTION_PUMP_RELEASE "echo 0 > /sys/class/pwm/ehrpwm.0:1/request"
|
||||
#define SUCTION_PUMP_RUN "echo 1 > /sys/class/pwm/ehrpwm.0:1/run"
|
||||
#define SUCTION_PUMP_STOP "echo 0 > /sys/class/pwm/ehrpwm.0:1/run"
|
||||
#define SUCTION_PUMP_HIGH "echo 1 > /sys/class/pwm/ehrpwm.0:1/polarity"
|
||||
#define SUCTION_PUMP_LOW "echo 0 > /sys/class/pwm/ehrpwm.0:1/polarity"
|
||||
#define SUCTION_PUMP_90P "echo 90 > /sys/class/pwm/ehrpwm.0:1/duty_percent"
|
||||
#define SUCTION_PUMP_12000Hz "echo 12000 > /sys/class/pwm/ehrpwm.0:1/period_freq"
|
||||
|
||||
#define PRINT_CTRL_ADDR_BASE 0xa400
|
||||
|
||||
#define PRINT_DIGITAL_CHAR_BASE_ADDR (0xe000)
|
||||
|
||||
#define WRITE_CALENDAR_DAT_ADDR (0xb100)
|
||||
|
||||
#define RECYCLE_SLOT_STOP 0x1
|
||||
#define RECYCLE_SLOT_CLOSE 0x2
|
||||
#define RECYCLE_SLOT_OPEN 0x0
|
||||
#define PRINT_START_STOP_CTRL (PRINT_CTRL_ADDR_BASE + 0x40)
|
||||
#define PRINT_RESET_PRODUCT_CNT (PRINT_CTRL_ADDR_BASE + 0x41)
|
||||
#define RECYCLE_SLOT_CTRL_ADDR (PRINT_CTRL_ADDR_BASE + 0x42)
|
||||
#define RESUME_FAULT_ADDR (PRINT_CTRL_ADDR_BASE + 0x43)
|
||||
|
||||
#define VAR_CNT_ADDR (PRINT_CTRL_ADDR_BASE + 0x50)
|
||||
#define VAR_CTRL_REG_ADDR (PRINT_CTRL_ADDR_BASE + 0x51)
|
||||
#define MAININKCTRL_ADDR (PRINT_CTRL_ADDR_BASE + 0x59)
|
||||
//#define MAININKCTRL_ADDR (PRINT_CTRL_ADDR_BASE + 0x5a)
|
||||
#define WRITE_CNT1GROUP_COUNT 0xB13E
|
||||
#define WRITE_CNT1GROUP_NUM 0xB13F
|
||||
#define WRITE_CNT1GROUP_SETTING 0xB140
|
||||
#define READ_CNT1GROUP_CURR_LOOP 0x0190
|
||||
#define READ_CNT1GROUP_CURR_INDEX 0x0194
|
||||
|
||||
#define WRITE_CNT2GROUP_COUNT 0xB16E
|
||||
#define WRITE_CNT2GROUP_NUM 0xB16F
|
||||
#define WRITE_CNT2GROUP_SETTING 0xB170
|
||||
#define READ_CNT2GROUP_CURR_LOOP 0x0195
|
||||
#define READ_CNT2GROUP_CURR_INDEX 0x0199
|
||||
|
||||
#define FPGA_STATUS_BASE_ADDR 0x0000
|
||||
#define FPGA_VERSOIN_NUM (FPGA_STATUS_BASE_ADDR + 0xfe)
|
||||
|
||||
|
||||
#define READ_BUILD_DAT (FPGA_STATUS_BASE_ADDR + 0xf0)
|
||||
|
||||
#define READ_PRINTDATA_XOR (FPGA_STATUS_BASE_ADDR + 0xf2)
|
||||
#define READ_SYNC_COUNTER (FPGA_STATUS_BASE_ADDR + 0xf4)
|
||||
|
||||
#define PHASE_DETECT_HIGH_VOLTAGE_TM 0x100
|
||||
#define READ_CALENDAR_DAT_ADDR 0x180
|
||||
|
||||
#define READ_RAND_FIFO_ADDR 0x200 // 读FPGA的随机码FIFO
|
||||
|
||||
#define ROW_PRINT_SEQNENCE_ADDR 0xb200 //行扫描顺序
|
||||
#define DAC_TABLE_ADDR 0xb280 //每一个行点对应的DAC值
|
||||
#define NOT_GAP_DAC_TABLE_ADDR 0xb380 //每一个不隔点对应的DAC值
|
||||
#define FULL_COL_DAC_TABLE_ADDR 0xb480 //每一个不隔点对应的DAC值
|
||||
|
||||
#define MATCH_FULL_DAC_TABLE_ADDR 0xB500 // 匹配满列 DAC表 起始地址
|
||||
#define MATCH_1_DAC_TABLE_ADDR 0xB600 // 匹配单点 DAC表 起始地址
|
||||
#define MATCH_2_DAC_TABLE_ADDR 0xB700 // 匹配两点 DAC表 起始地址
|
||||
#define MATCH_3_DAC_TABLE_ADDR 0xB800 // 匹配三点 DAC表 起始地址
|
||||
#define MATCH_4_DAC_TABLE_ADDR 0xB900 // 匹配四点 DAC表 起始地址
|
||||
#define MATCH_5_DAC_TABLE_ADDR 0xBA00 // 匹配五点 DAC表 起始地址
|
||||
#define MATCH_G1_DAC_TABLE_ADDR 0xBC00 // 匹配空一点 DAC表 起始地址
|
||||
#define MATCH_G2_DAC_TABLE_ADDR 0xBC80 // 匹配空两点 DAC表 起始地址
|
||||
#define MATCH_G3_DAC_TABLE_ADDR 0xBD00 // 匹配空三点 DAC表 起始地址
|
||||
#define MATCH_G4_DAC_TABLE_ADDR 0xBD80 // 匹配空四点 DAC表 起始地址
|
||||
#define MATCH_G5_DAC_TABLE_ADDR 0xBE00 // 匹配空五点 DAC表 起始地址
|
||||
#define MATCH_G6_DAC_TABLE_ADDR 0xBE80 // 匹配空六点 DAC表 起始地址
|
||||
#define MATCH_P1_DAC_TABLE_ADDR 0xBF00 // 匹配预备一 DAC表 起始地址
|
||||
#define MATCH_P2_DAC_TABLE_ADDR 0xBF80 // 匹配预备二 DAC表 起始地址
|
||||
#define MATCH_C_DAC_TABLE_ADDR 0xC000 // 匹配复杂 DAC表 起始地址
|
||||
|
||||
#define WRITE_COUNTER3_ADDR (0xb150)
|
||||
#define WRITE_COUNTER4_ADDR (0xb164)
|
||||
//#define READ_CNT3_CURVALUE_ADDR 0x01b4
|
||||
#define READ_CNT3_CURVALUE_ADDR 0x1834
|
||||
|
||||
#define LOCADDR '1'
|
||||
|
||||
//#define NOLEDLIGHT 0x10
|
||||
//#define REDLIGHTCODE 0X11
|
||||
//#define YELLOWLIGHTCODE 0X13
|
||||
//#define GREENLIGHTCODE 0X12
|
||||
// 高四位:颜色
|
||||
#define LED_COLOR_NONE 0x00 // 0000 0000
|
||||
#define LED_COLOR_YELLOW 0x10 // 0001 0000
|
||||
#define LED_COLOR_GREEN 0x20 // 0010 0000
|
||||
#define LED_COLOR_RED 0x30 // 0011 0000
|
||||
// 低四位:操作
|
||||
#define LED_OP_OFF 0x00 // 灭
|
||||
#define LED_OP_ON 0x01 // 亮
|
||||
#define LED_OP_FLASH 0x02 // 闪烁
|
||||
|
||||
//绿灯
|
||||
#define LED_COLOR_GREEN_ON LED_COLOR_GREEN|LED_OP_ON //绿灯亮
|
||||
#define LED_COLOR_GREEN_OFF LED_COLOR_GREEN|LED_OP_OFF //绿灯灭
|
||||
#define LED_COLOR_GREEN_FLASH LED_COLOR_GREEN|LED_OP_FLASH //绿灯闪烁
|
||||
//红灯
|
||||
#define LED_COLOR_RED_ON LED_COLOR_RED|LED_OP_ON //红灯亮
|
||||
#define LED_COLOR_RED_OFF LED_COLOR_RED|LED_OP_OFF //红灯灭
|
||||
#define LED_COLOR_RED_FLASH LED_COLOR_RED|LED_OP_FLASH //红灯闪烁
|
||||
//黄灯
|
||||
#define LED_COLOR_YELLOW_ON LED_COLOR_YELLOW|LED_OP_ON //黄灯亮
|
||||
#define LED_COLOR_YELLOW_OFF LED_COLOR_YELLOW|LED_OP_OFF //黄灯灭
|
||||
#define LED_COLOR_YELLOW_FLASH LED_COLOR_YELLOW|LED_OP_FLASH //黄灯闪烁
|
||||
|
||||
#define LED_ALL_OFF 0x00 //关闭所有灯
|
||||
|
||||
/*
|
||||
* 请不要直接初始化此函数,如果需要,请通过SysPara的devOP来访问此类
|
||||
* */
|
||||
class DevOp : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public :
|
||||
DevOp(SysPara * sysPara);
|
||||
~DevOp();
|
||||
|
||||
void set_totalSynPulseNum(bool wren);// 设置可变长度
|
||||
void WriteMoterPump();
|
||||
void controlReleaseValve(bool openFlag);
|
||||
void controlMixValve(bool openFlag);
|
||||
void controlInkValve(bool openFlag); //控制墨线,即供墨阀
|
||||
void controlInkValvePWMSTM32(int PWMPulse);
|
||||
void controlCycleValve(bool openFlag);
|
||||
void controlCompressPump(bool openFlag);
|
||||
void controlViscosityPump(bool openFlag);
|
||||
void controlMainInkPump(bool openFlag);
|
||||
void setHighVoltageAmplitudetoSTM32();
|
||||
void controlReclaimPump(bool openFlag,bool fullSpeed);
|
||||
void controlReclaimPump2();
|
||||
void controlInkValvePWM(bool openFlag);
|
||||
void controlInkValvePWM2();
|
||||
void controlHeater(bool openFlag);
|
||||
void controlBeeper(bool openFlag);
|
||||
|
||||
void controlReclaimTankOpen(bool enableFlag);
|
||||
void controlReclaimTankClose(bool enableFlag);
|
||||
|
||||
void powerOff(void);
|
||||
|
||||
bool isReleaseValveOpen();
|
||||
bool isMixValveOpen();
|
||||
bool isInkValveOpen();
|
||||
bool isInkValveOpen1();
|
||||
bool isCycleValveOpen();
|
||||
bool isCompressPumpOpen();
|
||||
bool isViscosityPumpOpen();
|
||||
bool isMainInkPumpOpen();
|
||||
bool isReclaimPumpOpen();
|
||||
bool isHighVoltageOpen();
|
||||
|
||||
bool isReclaimTankOpenEnable();
|
||||
bool isReclaimTankCloseEnable();
|
||||
bool isBeeperEnable();
|
||||
bool isHearterEnable();
|
||||
|
||||
int writeFpgaPrintPara(bool ignoreWarn = false);
|
||||
void readFgaStatus(void);
|
||||
void writeDacValue2Fpga_No73();
|
||||
|
||||
void printCtrl(int cmd);
|
||||
void ReadCnt1GroupStatus(void);
|
||||
void ReadCnt2GroupStatus(void);
|
||||
void writeCnt1GroupSetting(bool bCntByGroupEnable);
|
||||
void writeCnt2GroupSetting(bool bCntByGroupEnable);
|
||||
void writeFpgaCalandar(bool Enable);
|
||||
void writeFpgaVariCtrl();
|
||||
void readCalandarDat();
|
||||
void resumeFault();
|
||||
void highVoltageCtrl(int val);
|
||||
void maxHighVoltageDACCtrl(int val);
|
||||
void setPhaseByHand(int val);
|
||||
void readPhaseDetectHighTm();
|
||||
void setPhaseDetectVoltageDutyCycle(int duty);
|
||||
void setBlickLightPeriod(int value);
|
||||
void setOscillatorVoltage(int value);
|
||||
void setDivideRatio(int value);
|
||||
void setLastLineEndPointFixedValue(int value);
|
||||
|
||||
void mainInkCtrl();
|
||||
void pumpValveCtrl(int viscosityAdjustByTemp=0);
|
||||
void clearProductCnt(unsigned int mode);
|
||||
unsigned int readFpgaVersionNum(void);
|
||||
void fpgaWr(int addr,unsigned char*dat,int len);
|
||||
void fpgaRd(int addr,unsigned char*dat,int len);
|
||||
void fpgaWrD(int addr,unsigned int dat,int len);
|
||||
void fpgaWrD2(int addr,unsigned char*dat,int len);
|
||||
void fpgaResetWarning(char mode);
|
||||
void sendSTM32SetPowerOnTimer(quint16);
|
||||
void DACValueWithVoltageAdj();
|
||||
void writeDataToFpga_No67HighSpeedMode(Voltage_Version version,bool flag);
|
||||
bool fpgaDevOpenFlag;
|
||||
|
||||
void stm32Rd(int addr,unsigned char*dat,int len);
|
||||
void stm32Wr(int addr,unsigned char*dat,int len);
|
||||
|
||||
unsigned char memWrMap[MAX_WR_MEM_SIZE];
|
||||
unsigned char memRdMap[MAX_RD_MEM_SIZE];
|
||||
unsigned char color_flag;
|
||||
void controlRedLight(bool openFlag);
|
||||
void controlGreenLight(bool openFlag);
|
||||
void controlYellowLight(bool openFlag);
|
||||
void controlFan1(bool openFlag);
|
||||
void controlFan2(bool openFlag);
|
||||
|
||||
bool isGreenLightEnable();
|
||||
bool isYellowLightEnable();
|
||||
bool isRedLightEnable();
|
||||
void readbuilDat();
|
||||
void readPrintDataXor();
|
||||
void readSyncCounterAtZero();
|
||||
void printCtrl2(int cmd);
|
||||
void ReadSomeDataForLostPrint(void);
|
||||
void readSTM32Version(void);
|
||||
void readSTM32Time(void);
|
||||
bool stopSendDataFPGA;
|
||||
bool stopSendDataSTM32;
|
||||
|
||||
void Read_RanddomFromFpga(); // 读FPGARANDFIFO
|
||||
void RandTxtBakup(char ok);
|
||||
void showData(QByteArray dat);
|
||||
void writeDacValue2Fpga_No72NewVoltData();
|
||||
|
||||
|
||||
public slots:
|
||||
void resendFPGADate(int,int,unsigned char *,int,int);
|
||||
void resendSTM32Date(int,int,unsigned char *,int,int);
|
||||
|
||||
signals:
|
||||
void dataReceived(char,const QByteArray &dataReceived,int);
|
||||
/***cmd:1--读 2--写*********************************************/
|
||||
/***addr:地址***************************************************/
|
||||
/***dat:数据指针*************************************************/
|
||||
/***len:数据长度*************************************************/
|
||||
/***type:1--FPGA 2--STM32***************************************/
|
||||
void sendSerialDataToSTM32(int cmd,int addr,unsigned char *dat,int len,int type);
|
||||
void sendSerialDataToFPGA(int cmd,int addr,unsigned char *dat,int len,int type);
|
||||
|
||||
|
||||
private:
|
||||
int WdgttyUsb0Cnt;
|
||||
bool releaseValveOpenFlag;
|
||||
bool mixValveFlag;
|
||||
bool inkValveOpenFlag;
|
||||
bool inkValveOpenFlag1;
|
||||
bool cycleValveOpenFlag;
|
||||
bool compressPumpOpenFlag;
|
||||
bool viscosityPumpOpenFlag;
|
||||
bool mainInkPumpOpenFlag;
|
||||
bool reclaimPumpOpenFlag;
|
||||
bool highVoltageOpenFlag;
|
||||
|
||||
bool reclaimTankOpenEnableFlag;
|
||||
bool reclaimTankCloseEnableFlag;
|
||||
bool beeperOnFlag;
|
||||
|
||||
bool RedLightOnFlag;
|
||||
bool GreenLightOnFlag;
|
||||
bool YellowLightOnFlag;
|
||||
|
||||
bool heaterOnFlag;
|
||||
int com2;
|
||||
int pwm_sp;
|
||||
int pwm_fd;
|
||||
int Interrupt_fd;
|
||||
int iocontrl;
|
||||
int DAdataout;
|
||||
int pwm_ink;
|
||||
int adc_fd;
|
||||
qint8 OscillatorVoltage[100];//VX 电路不一样,所以需要重新调整
|
||||
SysPara *sysPara;
|
||||
|
||||
|
||||
unsigned int fpgaRdD(int addr,int len);
|
||||
|
||||
// 0xA451--- 为什么ARM的顺序相反呢?
|
||||
typedef struct {
|
||||
unsigned int varDigitalNum:4; // 数字的个数
|
||||
unsigned int charRamBaseAddr:12; // 基址
|
||||
unsigned int colOffset:16; // 列偏移
|
||||
unsigned int horizonWidth:9;//字模宽度
|
||||
unsigned int verticalOffset:6; // 行偏移
|
||||
unsigned int charRowNum:6; // 每个字符占行个数
|
||||
unsigned int charColNum:6; // 每个字符占列个数
|
||||
unsigned int varTypeSel:4;
|
||||
unsigned int dummy:1;
|
||||
}reg_var_print_ctrl_t;
|
||||
|
||||
};
|
||||
|
||||
#endif /* DEVOP_H_ */
|
||||
Reference in New Issue
Block a user