makerbase
5 years ago
committed by
GitHub
70 changed files with 16162 additions and 10 deletions
@ -0,0 +1,271 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
|
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(SPI_GRAPHICAL_TFT) |
|||
|
|||
#include <SPI.h> |
|||
#include "../../../../inc/MarlinConfig.h" |
|||
#include "SPI_TFT.h" |
|||
|
|||
TFT SPI_TFT; |
|||
|
|||
#ifndef SPI_TFT_MISO_PIN |
|||
#define SPI_TFT_MISO_PIN PA6 |
|||
#endif |
|||
#ifndef SPI_TFT_MOSI_PIN |
|||
#define SPI_TFT_MOSI_PIN PA7 |
|||
#endif |
|||
#ifndef SPI_TFT_SCK_PIN |
|||
#define SPI_TFT_SCK_PIN PA5 |
|||
#endif |
|||
#ifndef SPI_TFT_CS_PIN |
|||
#define SPI_TFT_CS_PIN PD11 |
|||
#endif |
|||
#ifndef SPI_TFT_DC_PIN |
|||
#define SPI_TFT_DC_PIN PD10 |
|||
#endif |
|||
#ifndef SPI_TFT_RST_PIN |
|||
#define SPI_TFT_RST_PIN PC6 |
|||
#endif |
|||
|
|||
// use SPI1 for the spi tft.
|
|||
void TFT::spi_init(uint8_t spiRate) { |
|||
|
|||
SPI_TFT_CS_H; |
|||
|
|||
/**
|
|||
* STM32F1 APB2 = 72MHz, APB1 = 36MHz, max SPI speed of this MCU if 18Mhz |
|||
* STM32F1 has 3 SPI ports, SPI1 in APB2, SPI2/SPI3 in APB1 |
|||
* so the minimum prescale of SPI1 is DIV4, SPI2/SPI3 is DIV2 |
|||
*/ |
|||
uint8_t clock; |
|||
switch (spiRate) { |
|||
case SPI_FULL_SPEED: clock = SPI_CLOCK_DIV4; break; |
|||
case SPI_HALF_SPEED: clock = SPI_CLOCK_DIV4; break; |
|||
case SPI_QUARTER_SPEED: clock = SPI_CLOCK_DIV8; break; |
|||
case SPI_EIGHTH_SPEED: clock = SPI_CLOCK_DIV16; break; |
|||
case SPI_SPEED_5: clock = SPI_CLOCK_DIV32; break; |
|||
case SPI_SPEED_6: clock = SPI_CLOCK_DIV64; break; |
|||
default: clock = SPI_CLOCK_DIV2; // Default from the SPI library
|
|||
} |
|||
SPI.setModule(1); |
|||
SPI.begin(); |
|||
SPI.setClockDivider(clock); |
|||
SPI.setBitOrder(MSBFIRST); |
|||
SPI.setDataMode(SPI_MODE0); |
|||
} |
|||
|
|||
uint8_t TFT::spi_Rec() { |
|||
uint8_t returnByte = SPI.transfer(ff); |
|||
return returnByte; |
|||
} |
|||
|
|||
uint8_t TFT::spi_read_write_byte(uint8_t data) { |
|||
uint8_t returnByte = SPI.transfer(data); |
|||
return returnByte; |
|||
} |
|||
|
|||
/**
|
|||
* @brief Receive a number of bytes from the SPI port to a buffer |
|||
* |
|||
* @param buf Pointer to starting address of buffer to write to. |
|||
* @param nbyte Number of bytes to receive. |
|||
* @return Nothing |
|||
* |
|||
* @details Uses DMA |
|||
*/ |
|||
void TFT::spi_Read(uint8_t* buf, uint16_t nbyte) {SPI.dmaTransfer(0, const_cast<uint8_t*>(buf), nbyte);} |
|||
|
|||
/**
|
|||
* @brief Send a single byte on SPI port |
|||
* |
|||
* @param b Byte to send |
|||
* |
|||
* @details |
|||
*/ |
|||
void TFT::spi_Send(uint8_t b) {SPI.send(b);} |
|||
|
|||
/**
|
|||
* @brief Write token and then write from 512 byte buffer to SPI (for SD card) |
|||
* |
|||
* @param buf Pointer with buffer start address |
|||
* @return Nothing |
|||
* |
|||
* @details Use DMA |
|||
*/ |
|||
void TFT::spi_SendBlock(uint8_t token, const uint8_t* buf) { |
|||
SPI.send(token); |
|||
SPI.dmaSend(const_cast<uint8_t*>(buf), 512); |
|||
} |
|||
|
|||
void TFT::LCD_WR_REG(uint8_t cmd) { |
|||
SPI_TFT_CS_L; |
|||
SPI_TFT_DC_L; |
|||
spi_Send(cmd); |
|||
SPI_TFT_CS_H; |
|||
} |
|||
void TFT::LCD_WR_DATA(uint8_t data) { |
|||
SPI_TFT_CS_L; |
|||
SPI_TFT_DC_H; |
|||
spi_Send(data); |
|||
SPI_TFT_CS_H; |
|||
} |
|||
void TFT::LCD_WriteRAM_Prepare() {LCD_WR_REG(0X2C);} |
|||
void TFT::SetCursor(uint16_t x, uint16_t y) { |
|||
LCD_WR_REG(0x2a); |
|||
LCD_WR_DATA(x >> 8); |
|||
LCD_WR_DATA(x); |
|||
LCD_WR_DATA(x >> 8); |
|||
LCD_WR_DATA(x); |
|||
|
|||
LCD_WR_REG(0x2b); |
|||
LCD_WR_DATA(y >> 8); |
|||
LCD_WR_DATA(y); |
|||
LCD_WR_DATA(y >> 8); |
|||
LCD_WR_DATA(y); |
|||
} |
|||
void TFT::SetWindows(uint16_t x, uint16_t y, uint16_t with, uint16_t height) { |
|||
LCD_WR_REG(0x2a); |
|||
LCD_WR_DATA(x >> 8); |
|||
LCD_WR_DATA(x); |
|||
LCD_WR_DATA((x + with) >> 8); |
|||
LCD_WR_DATA((x + with)); |
|||
|
|||
LCD_WR_REG(0x2b); |
|||
LCD_WR_DATA(y >> 8); |
|||
LCD_WR_DATA(y); |
|||
LCD_WR_DATA((y + height) >> 8); |
|||
LCD_WR_DATA(y + height); |
|||
} |
|||
void TFT::LCD_init() { |
|||
SPI_TFT_RST_H; |
|||
delay(150); |
|||
SPI_TFT_RST_L; |
|||
delay(150); |
|||
SPI_TFT_RST_H; |
|||
|
|||
delay(120); |
|||
LCD_WR_REG(0x11); |
|||
delay(120); |
|||
|
|||
LCD_WR_REG(0xf0); |
|||
LCD_WR_DATA(0xc3); |
|||
LCD_WR_REG(0xf0); |
|||
LCD_WR_DATA(0x96); |
|||
|
|||
LCD_WR_REG(0x36); |
|||
LCD_WR_DATA(0x28); |
|||
|
|||
LCD_WR_REG(0x3A); |
|||
LCD_WR_DATA(0x55); |
|||
|
|||
LCD_WR_REG(0xB4); |
|||
LCD_WR_DATA(0x01); |
|||
LCD_WR_REG(0xB7); |
|||
LCD_WR_DATA(0xC6); |
|||
LCD_WR_REG(0xe8); |
|||
LCD_WR_DATA(0x40); |
|||
LCD_WR_DATA(0x8a); |
|||
LCD_WR_DATA(0x00); |
|||
LCD_WR_DATA(0x00); |
|||
LCD_WR_DATA(0x29); |
|||
LCD_WR_DATA(0x19); |
|||
LCD_WR_DATA(0xa5); |
|||
LCD_WR_DATA(0x33); |
|||
LCD_WR_REG(0xc1); |
|||
LCD_WR_DATA(0x06); |
|||
LCD_WR_REG(0xc2); |
|||
LCD_WR_DATA(0xa7); |
|||
LCD_WR_REG(0xc5); |
|||
LCD_WR_DATA(0x18); |
|||
LCD_WR_REG(0xe0); // Positive Voltage Gamma Control
|
|||
LCD_WR_DATA(0xf0); |
|||
LCD_WR_DATA(0x09); |
|||
LCD_WR_DATA(0x0b); |
|||
LCD_WR_DATA(0x06); |
|||
LCD_WR_DATA(0x04); |
|||
LCD_WR_DATA(0x15); |
|||
LCD_WR_DATA(0x2f); |
|||
LCD_WR_DATA(0x54); |
|||
LCD_WR_DATA(0x42); |
|||
LCD_WR_DATA(0x3c); |
|||
LCD_WR_DATA(0x17); |
|||
LCD_WR_DATA(0x14); |
|||
LCD_WR_DATA(0x18); |
|||
LCD_WR_DATA(0x1b); |
|||
LCD_WR_REG(0xe1); // Negative Voltage Gamma Control
|
|||
LCD_WR_DATA(0xf0); |
|||
LCD_WR_DATA(0x09); |
|||
LCD_WR_DATA(0x0b); |
|||
LCD_WR_DATA(0x06); |
|||
LCD_WR_DATA(0x04); |
|||
LCD_WR_DATA(0x03); |
|||
LCD_WR_DATA(0x2d); |
|||
LCD_WR_DATA(0x43); |
|||
LCD_WR_DATA(0x42); |
|||
LCD_WR_DATA(0x3b); |
|||
LCD_WR_DATA(0x16); |
|||
LCD_WR_DATA(0x14); |
|||
LCD_WR_DATA(0x17); |
|||
LCD_WR_DATA(0x1b); |
|||
LCD_WR_REG(0xf0); |
|||
LCD_WR_DATA(0x3c); |
|||
LCD_WR_REG(0xf0); |
|||
LCD_WR_DATA(0x69); |
|||
delay(120); // Delay 120ms
|
|||
LCD_WR_REG(0x29); // Display ON
|
|||
|
|||
LCD_clear(0x0000); //
|
|||
SPI_TFT_BLK_H; |
|||
|
|||
} |
|||
void TFT::LCD_clear(uint16_t color) { |
|||
unsigned int i, m; |
|||
uint32_t count; |
|||
uint8_t tbuf[960]; |
|||
|
|||
SetCursor(0, 0); |
|||
SetWindows(0, 0, 480 - 1, 320 - 1); |
|||
LCD_WriteRAM_Prepare(); |
|||
SPI_TFT_CS_L; |
|||
SPI_TFT_DC_H; |
|||
for (i = 0; i < 960;) { |
|||
tbuf[i] = color >> 8; |
|||
tbuf[i + 1] = color; |
|||
i += 2; |
|||
} |
|||
for (i = 0; i < 320; i++) { |
|||
// for(m=0;m<480;m++)
|
|||
// {
|
|||
// LCD_WR_DATA(color>>8);
|
|||
// LCD_WR_DATA(color);
|
|||
|
|||
SPI.dmaSend(tbuf, 960, true); |
|||
// SPI_TFT_CS_H;
|
|||
// }
|
|||
} |
|||
SPI_TFT_CS_H; |
|||
} |
|||
|
|||
#endif // SPI_GRAPHICAL_TFT
|
@ -0,0 +1,55 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#include <stdint.h> |
|||
|
|||
#define SPI_TFT_CS_H OUT_WRITE(SPI_TFT_CS_PIN, HIGH) |
|||
#define SPI_TFT_CS_L OUT_WRITE(SPI_TFT_CS_PIN, LOW) |
|||
|
|||
#define SPI_TFT_DC_H OUT_WRITE(SPI_TFT_DC_PIN, HIGH) |
|||
#define SPI_TFT_DC_L OUT_WRITE(SPI_TFT_DC_PIN, LOW) |
|||
|
|||
#define SPI_TFT_RST_H OUT_WRITE(SPI_TFT_RST_PIN, HIGH) |
|||
#define SPI_TFT_RST_L OUT_WRITE(SPI_TFT_RST_PIN, LOW) |
|||
|
|||
#define SPI_TFT_BLK_H OUT_WRITE(LCD_BACKLIGHT_PIN, HIGH) |
|||
#define SPI_TFT_BLK_L OUT_WRITE(LCD_BACKLIGHT_PIN, LOW) |
|||
|
|||
class TFT { |
|||
public: |
|||
void spi_init(uint8_t spiRate); |
|||
uint8_t spi_Rec(); |
|||
uint8_t spi_read_write_byte(uint8_t data); |
|||
void spi_Read(uint8_t* buf, uint16_t nbyte); |
|||
void spi_Send(uint8_t b); |
|||
void spi_SendBlock(uint8_t token, const uint8_t* buf); |
|||
void LCD_WR_REG(uint8_t cmd); |
|||
void LCD_WR_DATA(uint8_t data); |
|||
void SetCursor(uint16_t x, uint16_t y); |
|||
void SetWindows(uint16_t x, uint16_t y, uint16_t with, uint16_t height); |
|||
void LCD_init(); |
|||
void LCD_clear(uint16_t color); |
|||
void LCD_WriteRAM_Prepare(); |
|||
}; |
|||
|
|||
extern TFT SPI_TFT; |
@ -0,0 +1,395 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if 1 // ENABLED(SPI_FLASH)
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include <SPI.h> |
|||
#include "../../../../inc/MarlinConfig.h" |
|||
|
|||
#include "W25Qxx.h" |
|||
|
|||
#ifndef SPI_FLASH_MISO_PIN |
|||
#define SPI_FLASH_MISO_PIN W25QXX_MISO_PIN |
|||
#endif |
|||
#ifndef SPI_FLASH_MOSI_PIN |
|||
#define SPI_FLASH_MOSI_PIN W25QXX_MOSI_PIN |
|||
#endif |
|||
#ifndef SPI_FLASH_SCK_PIN |
|||
#define SPI_FLASH_SCK_PIN W25QXX_SCK_PIN |
|||
#endif |
|||
#ifndef SPI_FLASH_CS_PIN |
|||
#define SPI_FLASH_CS_PIN W25QXX_CS_PIN |
|||
#endif |
|||
|
|||
#define W25QXX_CS_H OUT_WRITE(SPI_FLASH_CS_PIN, HIGH) |
|||
#define W25QXX_CS_L OUT_WRITE(SPI_FLASH_CS_PIN, LOW) |
|||
|
|||
ext_FLASH W25QXX; |
|||
|
|||
void ext_FLASH::init(uint8_t spiRate) { |
|||
|
|||
OUT_WRITE(SPI_FLASH_CS_PIN, HIGH); |
|||
|
|||
/**
|
|||
* STM32F1 APB2 = 72MHz, APB1 = 36MHz, max SPI speed of this MCU if 18Mhz |
|||
* STM32F1 has 3 SPI ports, SPI1 in APB2, SPI2/SPI3 in APB1 |
|||
* so the minimum prescale of SPI1 is DIV4, SPI2/SPI3 is DIV2 |
|||
*/ |
|||
#if SPI_DEVICE == 1 |
|||
#define SPI_CLOCK_MAX SPI_CLOCK_DIV4 |
|||
#else |
|||
#define SPI_CLOCK_MAX SPI_CLOCK_DIV2 |
|||
#endif |
|||
uint8_t clock; |
|||
switch (spiRate) { |
|||
case SPI_FULL_SPEED: clock = SPI_CLOCK_MAX; break; |
|||
case SPI_HALF_SPEED: clock = SPI_CLOCK_DIV4; break; |
|||
case SPI_QUARTER_SPEED: clock = SPI_CLOCK_DIV8; break; |
|||
case SPI_EIGHTH_SPEED: clock = SPI_CLOCK_DIV16; break; |
|||
case SPI_SPEED_5: clock = SPI_CLOCK_DIV32; break; |
|||
case SPI_SPEED_6: clock = SPI_CLOCK_DIV64; break; |
|||
default: clock = SPI_CLOCK_DIV2;// Default from the SPI library
|
|||
} |
|||
SPI.setModule(SPI_DEVICE); |
|||
SPI.begin(); |
|||
SPI.setClockDivider(clock); |
|||
SPI.setBitOrder(MSBFIRST); |
|||
SPI.setDataMode(SPI_MODE0); |
|||
} |
|||
|
|||
/**
|
|||
* @brief Receive a single byte from the SPI port. |
|||
* |
|||
* @return Byte received |
|||
* |
|||
* @details |
|||
*/ |
|||
uint8_t ext_FLASH::spi_flash_Rec() { |
|||
uint8_t returnByte = SPI.transfer(ff); |
|||
return returnByte; |
|||
} |
|||
|
|||
uint8_t ext_FLASH::spi_flash_read_write_byte(uint8_t data) { |
|||
uint8_t returnByte = SPI.transfer(data); |
|||
return returnByte; |
|||
} |
|||
|
|||
/**
|
|||
* @brief Receive a number of bytes from the SPI port to a buffer |
|||
* |
|||
* @param buf Pointer to starting address of buffer to write to. |
|||
* @param nbyte Number of bytes to receive. |
|||
* @return Nothing |
|||
* |
|||
* @details Uses DMA |
|||
*/ |
|||
void ext_FLASH::spi_flash_Read(uint8_t* buf, uint16_t nbyte) { SPI.dmaTransfer(0, const_cast<uint8_t*>(buf), nbyte); } |
|||
|
|||
/**
|
|||
* @brief Send a single byte on SPI port |
|||
* |
|||
* @param b Byte to send |
|||
* |
|||
* @details |
|||
*/ |
|||
void ext_FLASH::spi_flash_Send(uint8_t b) { SPI.send(b); } |
|||
|
|||
/**
|
|||
* @brief Write token and then write from 512 byte buffer to SPI (for SD card) |
|||
* |
|||
* @param buf Pointer with buffer start address |
|||
* @return Nothing |
|||
* |
|||
* @details Use DMA |
|||
*/ |
|||
void ext_FLASH::spi_flash_SendBlock(uint8_t token, const uint8_t* buf) { |
|||
SPI.send(token); |
|||
SPI.dmaSend(const_cast<uint8_t*>(buf), 512); |
|||
} |
|||
|
|||
uint16_t ext_FLASH::W25QXX_ReadID(void) { |
|||
uint16_t Temp = 0; |
|||
W25QXX_CS_L; |
|||
spi_flash_Send(0x90);//���Ͷ�ȡID����
|
|||
spi_flash_Send(0x00); |
|||
spi_flash_Send(0x00); |
|||
spi_flash_Send(0x00); |
|||
Temp |= spi_flash_Rec() << 8; |
|||
Temp |= spi_flash_Rec(); |
|||
W25QXX_CS_H; |
|||
return Temp; |
|||
} |
|||
|
|||
void ext_FLASH::SPI_FLASH_WriteEnable(void) { |
|||
/* Select the FLASH: Chip Select low */ |
|||
W25QXX_CS_L; |
|||
/* Send "Write Enable" instruction */ |
|||
spi_flash_Send(W25X_WriteEnable); |
|||
/* Deselect the FLASH: Chip Select high */ |
|||
W25QXX_CS_H; |
|||
} |
|||
|
|||
/*******************************************************************************
|
|||
* Function Name : SPI_FLASH_WaitForWriteEnd |
|||
* Description : Polls the status of the Write In Progress (WIP) flag in the |
|||
* FLASH's status register and loop until write opertaion |
|||
* has completed. |
|||
* Input : None |
|||
* Output : None |
|||
* Return : None |
|||
*******************************************************************************/ |
|||
void ext_FLASH::SPI_FLASH_WaitForWriteEnd(void) { |
|||
uint8_t FLASH_Status = 0; |
|||
|
|||
/* Select the FLASH: Chip Select low */ |
|||
W25QXX_CS_L; |
|||
/* Send "Read Status Register" instruction */ |
|||
spi_flash_Send(W25X_ReadStatusReg); |
|||
|
|||
/* Loop as long as the memory is busy with a write cycle */ |
|||
do |
|||
/* Send a dummy byte to generate the clock needed by the FLASH
|
|||
and put the value of the status register in FLASH_Status variable */ |
|||
FLASH_Status = spi_flash_Rec(); |
|||
while ((FLASH_Status & WIP_Flag) == 0x01); /* Write in progress */ |
|||
|
|||
/* Deselect the FLASH: Chip Select high */ |
|||
W25QXX_CS_H; |
|||
} |
|||
|
|||
void ext_FLASH::SPI_FLASH_SectorErase(uint32_t SectorAddr) { |
|||
/* Send write enable instruction */ |
|||
SPI_FLASH_WriteEnable(); |
|||
|
|||
/* Sector Erase */ |
|||
/* Select the FLASH: Chip Select low */ |
|||
W25QXX_CS_L; |
|||
/* Send Sector Erase instruction */ |
|||
spi_flash_Send(W25X_SectorErase); |
|||
/* Send SectorAddr high nibble address byte */ |
|||
spi_flash_Send((SectorAddr & 0xFF0000) >> 16); |
|||
/* Send SectorAddr medium nibble address byte */ |
|||
spi_flash_Send((SectorAddr & 0xFF00) >> 8); |
|||
/* Send SectorAddr low nibble address byte */ |
|||
spi_flash_Send(SectorAddr & 0xFF); |
|||
/* Deselect the FLASH: Chip Select high */ |
|||
|
|||
W25QXX_CS_H; |
|||
/* Wait the end of Flash writing */ |
|||
SPI_FLASH_WaitForWriteEnd(); |
|||
} |
|||
|
|||
void ext_FLASH::SPI_FLASH_BlockErase(uint32_t BlockAddr) { |
|||
SPI_FLASH_WriteEnable(); |
|||
W25QXX_CS_L; |
|||
/* Send Sector Erase instruction */ |
|||
spi_flash_Send(W25X_BlockErase); |
|||
/* Send SectorAddr high nibble address byte */ |
|||
spi_flash_Send((BlockAddr & 0xFF0000) >> 16); |
|||
/* Send SectorAddr medium nibble address byte */ |
|||
spi_flash_Send((BlockAddr & 0xFF00) >> 8); |
|||
/* Send SectorAddr low nibble address byte */ |
|||
spi_flash_Send(BlockAddr & 0xFF); |
|||
|
|||
W25QXX_CS_H; |
|||
|
|||
SPI_FLASH_WaitForWriteEnd(); |
|||
} |
|||
|
|||
/*******************************************************************************
|
|||
* Function Name : SPI_FLASH_BulkErase |
|||
* Description : Erases the entire FLASH. |
|||
* Input : None |
|||
* Output : None |
|||
* Return : None |
|||
*******************************************************************************/ |
|||
void ext_FLASH::SPI_FLASH_BulkErase(void) { |
|||
/* Send write enable instruction */ |
|||
SPI_FLASH_WriteEnable(); |
|||
|
|||
/* Bulk Erase */ |
|||
/* Select the FLASH: Chip Select low */ |
|||
W25QXX_CS_L; |
|||
|
|||
/* Send Bulk Erase instruction */ |
|||
spi_flash_Send(W25X_ChipErase); |
|||
/* Deselect the FLASH: Chip Select high */ |
|||
W25QXX_CS_H; |
|||
/* Wait the end of Flash writing */ |
|||
SPI_FLASH_WaitForWriteEnd(); |
|||
} |
|||
|
|||
/*******************************************************************************
|
|||
* Function Name : SPI_FLASH_PageWrite |
|||
* Description : Writes more than one byte to the FLASH with a single WRITE |
|||
* cycle(Page WRITE sequence). The number of byte can't exceed |
|||
* the FLASH page size. |
|||
* Input : - pBuffer : pointer to the buffer containing the data to be |
|||
* written to the FLASH. |
|||
* - WriteAddr : FLASH's internal address to write to. |
|||
* - NumByteToWrite : number of bytes to write to the FLASH, |
|||
* must be equal or less than "SPI_FLASH_PageSize" value. |
|||
* Output : None |
|||
* Return : None |
|||
*******************************************************************************/ |
|||
void ext_FLASH::SPI_FLASH_PageWrite(uint8_t* pBuffer, uint32_t WriteAddr, uint16_t NumByteToWrite) { |
|||
/* Enable the write access to the FLASH */ |
|||
SPI_FLASH_WriteEnable(); |
|||
|
|||
/* Select the FLASH: Chip Select low */ |
|||
W25QXX_CS_L; |
|||
/* Send "Write to Memory " instruction */ |
|||
spi_flash_Send(W25X_PageProgram); |
|||
/* Send WriteAddr high nibble address byte to write to */ |
|||
spi_flash_Send((WriteAddr & 0xFF0000) >> 16); |
|||
/* Send WriteAddr medium nibble address byte to write to */ |
|||
spi_flash_Send((WriteAddr & 0xFF00) >> 8); |
|||
/* Send WriteAddr low nibble address byte to write to */ |
|||
spi_flash_Send(WriteAddr & 0xFF); |
|||
|
|||
NOMORE(NumByteToWrite, SPI_FLASH_PerWritePageSize); |
|||
|
|||
/* while there is data to be written on the FLASH */ |
|||
while (NumByteToWrite--) { |
|||
/* Send the current byte */ |
|||
spi_flash_Send(*pBuffer); |
|||
/* Point on the next byte to be written */ |
|||
pBuffer++; |
|||
} |
|||
|
|||
/* Deselect the FLASH: Chip Select high */ |
|||
W25QXX_CS_H; |
|||
|
|||
/* Wait the end of Flash writing */ |
|||
SPI_FLASH_WaitForWriteEnd(); |
|||
} |
|||
|
|||
/*******************************************************************************
|
|||
* Function Name : SPI_FLASH_BufferWrite |
|||
* Description : Writes block of data to the FLASH. In this function, the |
|||
* number of WRITE cycles are reduced, using Page WRITE sequence. |
|||
* Input : - pBuffer : pointer to the buffer containing the data to be |
|||
* written to the FLASH. |
|||
* - WriteAddr : FLASH's internal address to write to. |
|||
* - NumByteToWrite : number of bytes to write to the FLASH. |
|||
* Output : None |
|||
* Return : None |
|||
*******************************************************************************/ |
|||
void ext_FLASH::SPI_FLASH_BufferWrite(uint8_t* pBuffer, uint32_t WriteAddr, uint16_t NumByteToWrite) { |
|||
uint8_t NumOfPage = 0, NumOfSingle = 0, Addr = 0, count = 0, temp = 0; |
|||
|
|||
Addr = WriteAddr % SPI_FLASH_PageSize; |
|||
count = SPI_FLASH_PageSize - Addr; |
|||
NumOfPage = NumByteToWrite / SPI_FLASH_PageSize; |
|||
NumOfSingle = NumByteToWrite % SPI_FLASH_PageSize; |
|||
|
|||
if (Addr == 0) { /* WriteAddr is SPI_FLASH_PageSize aligned */ |
|||
if (NumOfPage == 0) { /* NumByteToWrite < SPI_FLASH_PageSize */ |
|||
SPI_FLASH_PageWrite(pBuffer, WriteAddr, NumByteToWrite); |
|||
} |
|||
else { /* NumByteToWrite > SPI_FLASH_PageSize */ |
|||
while (NumOfPage--) { |
|||
SPI_FLASH_PageWrite(pBuffer, WriteAddr, SPI_FLASH_PageSize); |
|||
WriteAddr += SPI_FLASH_PageSize; |
|||
pBuffer += SPI_FLASH_PageSize; |
|||
} |
|||
SPI_FLASH_PageWrite(pBuffer, WriteAddr, NumOfSingle); |
|||
} |
|||
} |
|||
else { /* WriteAddr is not SPI_FLASH_PageSize aligned */ |
|||
if (NumOfPage == 0) { /* NumByteToWrite < SPI_FLASH_PageSize */ |
|||
if (NumOfSingle > count) { /* (NumByteToWrite + WriteAddr) > SPI_FLASH_PageSize */ |
|||
temp = NumOfSingle - count; |
|||
SPI_FLASH_PageWrite(pBuffer, WriteAddr, count); |
|||
WriteAddr += count; |
|||
pBuffer += count; |
|||
SPI_FLASH_PageWrite(pBuffer, WriteAddr, temp); |
|||
} |
|||
else { |
|||
SPI_FLASH_PageWrite(pBuffer, WriteAddr, NumByteToWrite); |
|||
} |
|||
} |
|||
else { /* NumByteToWrite > SPI_FLASH_PageSize */ |
|||
NumByteToWrite -= count; |
|||
NumOfPage = NumByteToWrite / SPI_FLASH_PageSize; |
|||
NumOfSingle = NumByteToWrite % SPI_FLASH_PageSize; |
|||
|
|||
SPI_FLASH_PageWrite(pBuffer, WriteAddr, count); |
|||
WriteAddr += count; |
|||
pBuffer += count; |
|||
|
|||
while (NumOfPage--) { |
|||
SPI_FLASH_PageWrite(pBuffer, WriteAddr, SPI_FLASH_PageSize); |
|||
WriteAddr += SPI_FLASH_PageSize; |
|||
pBuffer += SPI_FLASH_PageSize; |
|||
} |
|||
|
|||
if (NumOfSingle != 0) |
|||
SPI_FLASH_PageWrite(pBuffer, WriteAddr, NumOfSingle); |
|||
} |
|||
} |
|||
} |
|||
|
|||
/*******************************************************************************
|
|||
* Function Name : SPI_FLASH_BufferRead |
|||
* Description : Reads a block of data from the FLASH. |
|||
* Input : - pBuffer : pointer to the buffer that receives the data read |
|||
* from the FLASH. |
|||
* - ReadAddr : FLASH's internal address to read from. |
|||
* - NumByteToRead : number of bytes to read from the FLASH. |
|||
* Output : None |
|||
* Return : None |
|||
*******************************************************************************/ |
|||
void ext_FLASH::SPI_FLASH_BufferRead(uint8_t* pBuffer, uint32_t ReadAddr, uint16_t NumByteToRead) { |
|||
/* Select the FLASH: Chip Select low */ |
|||
W25QXX_CS_L; |
|||
|
|||
/* Send "Read from Memory " instruction */ |
|||
spi_flash_Send(W25X_ReadData); |
|||
|
|||
/* Send ReadAddr high nibble address byte to read from */ |
|||
spi_flash_Send((ReadAddr & 0xFF0000) >> 16); |
|||
/* Send ReadAddr medium nibble address byte to read from */ |
|||
spi_flash_Send((ReadAddr & 0xFF00) >> 8); |
|||
/* Send ReadAddr low nibble address byte to read from */ |
|||
spi_flash_Send(ReadAddr & 0xFF); |
|||
|
|||
if (NumByteToRead < 33) { |
|||
while (NumByteToRead--) { /* while there is data to be read */ |
|||
/* Read a byte from the FLASH */ |
|||
*pBuffer = spi_flash_Rec(); |
|||
/* Point to the next location where the byte read will be saved */ |
|||
pBuffer++; |
|||
} |
|||
} |
|||
else { |
|||
spi_flash_Read(pBuffer, NumByteToRead); |
|||
} |
|||
W25QXX_CS_H; |
|||
} |
|||
|
|||
void ext_FLASH::lv_pic_read(uint8_t *P_Rbuff, uint32_t addr, uint32_t size) {SPI_FLASH_BufferRead((uint8_t *)P_Rbuff, addr, size);} |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
|||
#endif // 1 ... SPI_FLASH
|
@ -0,0 +1,127 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
//#ifdef __cplusplus
|
|||
//extern "C" { /* C-declarations for C++ */
|
|||
//#endif
|
|||
|
|||
#include <stdint.h> |
|||
|
|||
#define W25X_WriteEnable 0x06 |
|||
#define W25X_WriteDisable 0x04 |
|||
#define W25X_ReadStatusReg 0x05 |
|||
#define W25X_WriteStatusReg 0x01 |
|||
#define W25X_ReadData 0x03 |
|||
#define W25X_FastReadData 0x0B |
|||
#define W25X_FastReadDual 0x3B |
|||
#define W25X_PageProgram 0x02 |
|||
#define W25X_BlockErase 0xD8 |
|||
#define W25X_SectorErase 0x20 |
|||
#define W25X_ChipErase 0xC7 |
|||
#define W25X_PowerDown 0xB9 |
|||
#define W25X_ReleasePowerDown 0xAB |
|||
#define W25X_DeviceID 0xAB |
|||
#define W25X_ManufactDeviceID 0x90 |
|||
#define W25X_JedecDeviceID 0x9F |
|||
|
|||
#define WIP_Flag 0x01 /* Write In Progress (WIP) flag */ |
|||
|
|||
#define Dummy_Byte 0xA5 |
|||
|
|||
#define SPI_FLASH_SectorSize 4096 |
|||
#define SPI_FLASH_PageSize 256 |
|||
#define SPI_FLASH_PerWritePageSize 256 |
|||
|
|||
#if 0 |
|||
|
|||
#define PIC_NAME_MAX_LEN 50 |
|||
|
|||
#define LOGO_MAX_SIZE (300*1024)//logo���ֵ
|
|||
#define TITLELOGO_MAX_SIZE (150*1024)//logo���ֵ
|
|||
#define DEFAULT_VIEW_MAX_SIZE (200*200*2) |
|||
#define FLASH_VIEW_MAX_SIZE (200*200*2) |
|||
|
|||
//ͼƬ
|
|||
//Robin2�洢��ַ
|
|||
#define PIC_NAME_ADDR 0x003000 //ͼƬ��Ϣ�洢��ַ��ͼƬ����
|
|||
#define PIC_SIZE_ADDR 0x007000 //ͼƬ��Ϣ�洢��ַ��ͼƬ��Сֵ
|
|||
#define PIC_COUNTER_ADDR 0x008000 //ͼƬ������ֵ�洢��ַ
|
|||
#define PIC_LOGO_ADDR 0x009000 //ͼƬlogo�洢��ַ
|
|||
//#define PIC_DATA_ADDR 0x02f000 //ͼƬ���ݴ洢��ַ
|
|||
|
|||
#define DEFAULT_VIEW_ADDR 0XC5800 |
|||
#define BAK_VIEW_ADDR (DEFAULT_VIEW_ADDR+90*1024) |
|||
#define PIC_ICON_LOGO_ADDR (BAK_VIEW_ADDR+80*1024) |
|||
|
|||
#define PIC_DATA_ADDR (PIC_ICON_LOGO_ADDR+350*1024) //ͼƬ���ݴ洢��ַ//(800*240)
|
|||
|
|||
// �ֿ�
|
|||
#define FONTINFOADDR 0x600000 // 6M�Ժ��ַΪ�ֿ�
|
|||
#define UNIGBK_FLASH_ADDR (FONTINFOADDR+4096) // 4*1024
|
|||
#define GBK_FLASH_ADDR (UNIGBK_FLASH_ADDR+180224) // 176*1024
|
|||
|
|||
#define PER_PIC_MAX_SPACE (32*1024) // Ϊ�˷�ֹ����Խ������⣬ÿ��СͼƬ�����仮��Ӧ��ȡ�ܹ�����4K��ֵ
|
|||
|
|||
//
|
|||
union union32 { |
|||
uint8_t bytes[4]; |
|||
uint32_t dwords; |
|||
}; |
|||
// ͼƬ��Ϣ�ṹ��
|
|||
struct pic_msg { |
|||
uint8_t name[PIC_NAME_MAX_LEN]; |
|||
union union32 size; |
|||
}; |
|||
|
|||
typedef struct pic_msg PIC_MSG; |
|||
|
|||
#endif // if 0
|
|||
|
|||
class ext_FLASH { |
|||
public: |
|||
void init(uint8_t spiRate); |
|||
static uint8_t spi_flash_Rec(); |
|||
static uint8_t spi_flash_read_write_byte(uint8_t data); |
|||
static void spi_flash_Read(uint8_t* buf, uint16_t nbyte); |
|||
static void spi_flash_Send(uint8_t b); |
|||
static void spi_flash_SendBlock(uint8_t token, const uint8_t* buf); |
|||
static uint16_t W25QXX_ReadID(void); |
|||
static void SPI_FLASH_WriteEnable(void); |
|||
static void SPI_FLASH_WaitForWriteEnd(void); |
|||
static void SPI_FLASH_SectorErase(uint32_t SectorAddr); |
|||
static void SPI_FLASH_BlockErase(uint32_t BlockAddr); |
|||
static void SPI_FLASH_BulkErase(void); |
|||
static void SPI_FLASH_PageWrite(uint8_t* pBuffer, uint32_t WriteAddr, uint16_t NumByteToWrite); |
|||
static void SPI_FLASH_BufferWrite(uint8_t* pBuffer, uint32_t WriteAddr, uint16_t NumByteToWrite); |
|||
static void SPI_FLASH_BufferRead(uint8_t* pBuffer, uint32_t ReadAddr, uint16_t NumByteToRead); |
|||
//uint32_t lv_get_pic_addr(uint8_t *Pname);
|
|||
void lv_pic_read(uint8_t *P_Rbuff, uint32_t addr, uint32_t size); |
|||
}; |
|||
|
|||
extern ext_FLASH W25QXX; |
|||
|
|||
//extern uint32_t lv_get_pic_addr(uint8_t *Pname);
|
|||
|
|||
//#ifdef __cplusplus
|
|||
//} /* C-declarations for C++ */
|
|||
//#endif
|
@ -0,0 +1,127 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include "lv_conf.h" |
|||
#include "draw_ui.h" |
|||
//#include "../lvgl/src/lv_objx/lv_imgbtn.h"
|
|||
//#include "../lvgl/src/lv_objx/lv_img.h"
|
|||
//#include "../lvgl/src/lv_core/lv_disp.h"
|
|||
//#include "../lvgl/src/lv_core/lv_refr.h"
|
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
#include "../../../../module/temperature.h" |
|||
|
|||
static lv_obj_t * scr; |
|||
static lv_obj_t * fw_type, *board, *fw_version; |
|||
|
|||
#define ID_A_RETURN 1 |
|||
|
|||
static void event_handler(lv_obj_t * obj, lv_event_t event) { |
|||
switch (obj->mks_obj_id) { |
|||
case ID_A_RETURN: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// do nothing
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
clear_cur_ui(); |
|||
draw_return_ui(); |
|||
} |
|||
break; |
|||
} |
|||
} |
|||
|
|||
void lv_draw_about(void) { |
|||
lv_obj_t *buttonBack, *label_Back; |
|||
if (disp_state_stack._disp_state[disp_state_stack._disp_index] != ABOUT_UI) { |
|||
disp_state_stack._disp_index++; |
|||
disp_state_stack._disp_state[disp_state_stack._disp_index] = ABOUT_UI; |
|||
} |
|||
disp_state = ABOUT_UI; |
|||
|
|||
scr = lv_obj_create(NULL, NULL); |
|||
|
|||
lv_obj_set_style(scr, &tft_style_scr); |
|||
lv_scr_load(scr); |
|||
lv_obj_clean(scr); |
|||
|
|||
lv_obj_t * title = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(title, &tft_style_lable_rel); |
|||
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS); |
|||
lv_label_set_text(title, creat_title_text()); |
|||
|
|||
lv_refr_now(lv_refr_get_disp_refreshing()); |
|||
|
|||
LV_IMG_DECLARE(bmp_pic); |
|||
|
|||
/*Create an Image button*/ |
|||
buttonBack = lv_imgbtn_create(scr, NULL); |
|||
|
|||
#if 1 |
|||
lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_A_RETURN, "bmp_Return.bin", 0); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
#endif |
|||
|
|||
lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF); |
|||
/*Create a label on the Image button*/ |
|||
|
|||
label_Back = lv_label_create(buttonBack, NULL); |
|||
|
|||
if (gCfgItems.multiple_language != 0) { |
|||
lv_label_set_text(label_Back, common_menu.text_back); |
|||
lv_obj_align(label_Back, buttonBack, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
|
|||
fw_version = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(fw_version, &tft_style_lable_rel); |
|||
lv_label_set_text(fw_version, "Version: V_2.0.5.3"); |
|||
lv_obj_align(fw_version, NULL, LV_ALIGN_CENTER, 0, -60); |
|||
|
|||
fw_type = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(fw_type, &tft_style_lable_rel); |
|||
#if (MOTHERBOARD == BOARD_MKS_ROBIN_PRO) |
|||
lv_label_set_text(fw_type, "Firmware: Robin_Pro35"); |
|||
#elif (MOTHERBOARD == BOARD_MKS_ROBIN_NANO) |
|||
lv_label_set_text(fw_type, "Firmware: Robin_Nano35"); |
|||
#endif |
|||
lv_obj_align(fw_type, NULL, LV_ALIGN_CENTER, 0, -20); |
|||
|
|||
board = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(board, &tft_style_lable_rel); |
|||
#if (MOTHERBOARD == BOARD_MKS_ROBIN_PRO) |
|||
lv_label_set_text(board, "Board: MKS Robin pro"); |
|||
#elif (MOTHERBOARD == BOARD_MKS_ROBIN_NANO) |
|||
lv_label_set_text(board, "Board: MKS Robin nano"); |
|||
#endif |
|||
|
|||
lv_obj_align(board, NULL, LV_ALIGN_CENTER, 0, 20); |
|||
} |
|||
|
|||
void lv_clear_about() { lv_obj_del(scr); } |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,34 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { /* C-declarations for C++ */ |
|||
#endif |
|||
|
|||
extern void lv_draw_about(void); |
|||
extern void lv_clear_about(); |
|||
|
|||
//extern void disp_temp_ready_print();
|
|||
#ifdef __cplusplus |
|||
} /* C-declarations for C++ */ |
|||
#endif |
@ -0,0 +1,336 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include "lv_conf.h" |
|||
#include "draw_ui.h" |
|||
//#include "../lvgl/src/lv_objx/lv_imgbtn.h"
|
|||
//#include "../lvgl/src/lv_objx/lv_img.h"
|
|||
//#include "../lvgl/src/lv_core/lv_disp.h"
|
|||
//#include "../lvgl/src/lv_core/lv_refr.h"
|
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
#include "../../../../module/temperature.h" |
|||
#include "../../../../module/planner.h" |
|||
|
|||
static lv_obj_t * scr; |
|||
static lv_obj_t * labelStep, *buttonStep, *buttonMov, *buttonExt; |
|||
static lv_obj_t * labelMov, *labelExt; |
|||
static lv_obj_t * printSpeedText; |
|||
|
|||
#define ID_C_ADD 1 |
|||
#define ID_C_DEC 2 |
|||
#define ID_C_MOVE 3 |
|||
#define ID_C_EXT 4 |
|||
#define ID_C_STEP 5 |
|||
#define ID_C_RETURN 6 |
|||
|
|||
static uint8_t speedType; |
|||
|
|||
static void event_handler(lv_obj_t * obj, lv_event_t event) { |
|||
switch (obj->mks_obj_id) { |
|||
case ID_C_ADD: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (speedType == 0) { |
|||
if (feedrate_percentage < MAX_EXT_SPEED_PERCENT - uiCfg.stepPrintSpeed) |
|||
feedrate_percentage += uiCfg.stepPrintSpeed; |
|||
else |
|||
feedrate_percentage = MAX_EXT_SPEED_PERCENT; |
|||
} |
|||
else if (speedType == 1) { |
|||
if (planner.flow_percentage[0] < MAX_EXT_SPEED_PERCENT - uiCfg.stepPrintSpeed) |
|||
planner.flow_percentage[0] += uiCfg.stepPrintSpeed; |
|||
else |
|||
planner.flow_percentage[0] = MAX_EXT_SPEED_PERCENT; |
|||
//planner.e_factor[0]= planner.flow_percentage[0]*0.01;
|
|||
//planner.flow_percentage[1] = planner.flow_percentage[0];
|
|||
//planner.e_factor[1]= planner.flow_percentage[1]*0.01;
|
|||
planner.refresh_e_factor(0); |
|||
if (EXTRUDERS == 2) { |
|||
planner.flow_percentage[1] = planner.flow_percentage[0]; |
|||
planner.refresh_e_factor(1); |
|||
} |
|||
} |
|||
disp_print_speed(); |
|||
} |
|||
break; |
|||
case ID_C_DEC: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (speedType == 0) { |
|||
if (feedrate_percentage > MIN_EXT_SPEED_PERCENT + uiCfg.stepPrintSpeed) |
|||
feedrate_percentage -= uiCfg.stepPrintSpeed; |
|||
else |
|||
feedrate_percentage = MIN_EXT_SPEED_PERCENT; |
|||
} |
|||
else if (speedType == 1) { |
|||
if (planner.flow_percentage[0] > MIN_EXT_SPEED_PERCENT + uiCfg.stepPrintSpeed) |
|||
planner.flow_percentage[0] -= uiCfg.stepPrintSpeed; |
|||
else |
|||
planner.flow_percentage[0] = MIN_EXT_SPEED_PERCENT; |
|||
//planner.e_factor[0]= planner.flow_percentage[0] * 0.01;
|
|||
//planner.flow_percentage[1] = planner.flow_percentage[0];
|
|||
//planner.e_factor[1]= planner.flow_percentage[1] * 0.01;
|
|||
planner.refresh_e_factor(0); |
|||
if (EXTRUDERS == 2) { |
|||
planner.flow_percentage[1] = planner.flow_percentage[0]; |
|||
planner.refresh_e_factor(1); |
|||
} |
|||
} |
|||
disp_print_speed(); |
|||
} |
|||
break; |
|||
case ID_C_MOVE: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
speedType = 0; |
|||
disp_speed_type(); |
|||
disp_print_speed(); |
|||
} |
|||
break; |
|||
case ID_C_EXT: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
speedType = 1; |
|||
disp_speed_type(); |
|||
disp_print_speed(); |
|||
} |
|||
break; |
|||
case ID_C_STEP: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (uiCfg.stepPrintSpeed == 1) |
|||
uiCfg.stepPrintSpeed = 5; |
|||
else if (uiCfg.stepPrintSpeed == 5) |
|||
uiCfg.stepPrintSpeed = 10; |
|||
else |
|||
uiCfg.stepPrintSpeed = 1; |
|||
disp_speed_step(); |
|||
} |
|||
break; |
|||
case ID_C_RETURN: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
clear_cur_ui(); |
|||
draw_return_ui(); |
|||
} |
|||
break; |
|||
} |
|||
} |
|||
|
|||
void lv_draw_change_speed(void) { |
|||
lv_obj_t *buttonAdd, *buttonDec; |
|||
lv_obj_t *buttonBack; |
|||
|
|||
if (disp_state_stack._disp_state[disp_state_stack._disp_index] != CHANGE_SPEED_UI) { |
|||
disp_state_stack._disp_index++; |
|||
disp_state_stack._disp_state[disp_state_stack._disp_index] = CHANGE_SPEED_UI; |
|||
} |
|||
disp_state = CHANGE_SPEED_UI; |
|||
|
|||
scr = lv_obj_create(NULL, NULL); |
|||
|
|||
lv_obj_set_style(scr, &tft_style_scr); |
|||
lv_scr_load(scr); |
|||
lv_obj_clean(scr); |
|||
|
|||
lv_obj_t * title = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(title, &tft_style_lable_rel); |
|||
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS); |
|||
lv_label_set_text(title, creat_title_text()); |
|||
|
|||
lv_refr_now(lv_refr_get_disp_refreshing()); |
|||
|
|||
LV_IMG_DECLARE(bmp_pic); |
|||
|
|||
/*Create an Image button*/ |
|||
buttonAdd = lv_imgbtn_create(scr, NULL); |
|||
buttonDec = lv_imgbtn_create(scr, NULL); |
|||
buttonMov = lv_imgbtn_create(scr, NULL); |
|||
buttonExt = lv_imgbtn_create(scr, NULL); |
|||
buttonStep = lv_imgbtn_create(scr, NULL); |
|||
buttonBack = lv_imgbtn_create(scr, NULL); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonAdd, event_handler, ID_C_ADD, "bmp_Add.bin", 0); |
|||
lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
lv_obj_clear_protect(buttonAdd, LV_PROTECT_FOLLOW); |
|||
|
|||
#if 1 |
|||
lv_obj_set_event_cb_mks(buttonDec, event_handler, ID_C_DEC, "bmp_Dec.bin", 0); |
|||
lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
|
|||
lv_imgbtn_set_src(buttonMov, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonMov, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonMov, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonMov, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_imgbtn_set_src(buttonExt, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonExt, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonExt, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonExt, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_imgbtn_set_src(buttonStep, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonStep, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_C_RETURN, "bmp_Return.bin", 0); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
#endif |
|||
|
|||
lv_obj_set_pos(buttonAdd, INTERVAL_V, titleHeight); |
|||
lv_obj_set_pos(buttonDec, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight); |
|||
lv_obj_set_pos(buttonMov, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_obj_set_pos(buttonExt, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_obj_set_pos(buttonStep, BTN_X_PIXEL * 2 + INTERVAL_V * 3, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
|
|||
/*Create a label on the Image button*/ |
|||
lv_btn_set_layout(buttonAdd, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonDec, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonMov, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonExt, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonStep, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF); |
|||
|
|||
lv_obj_t * labelAdd = lv_label_create(buttonAdd, NULL); |
|||
lv_obj_t * labelDec = lv_label_create(buttonDec, NULL); |
|||
labelMov = lv_label_create(buttonMov, NULL); |
|||
labelExt = lv_label_create(buttonExt, NULL); |
|||
labelStep = lv_label_create(buttonStep, NULL); |
|||
lv_obj_t * label_Back = lv_label_create(buttonBack, NULL); |
|||
|
|||
if (gCfgItems.multiple_language != 0) { |
|||
lv_label_set_text(labelAdd, speed_menu.add); |
|||
lv_obj_align(labelAdd, buttonAdd, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(labelDec, speed_menu.dec); |
|||
lv_obj_align(labelDec, buttonDec, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_Back, common_menu.text_back); |
|||
lv_obj_align(label_Back, buttonBack, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
disp_speed_type(); |
|||
disp_speed_step(); |
|||
|
|||
printSpeedText = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(printSpeedText, &tft_style_lable_rel); |
|||
disp_print_speed(); |
|||
} |
|||
|
|||
void disp_speed_step() { |
|||
if (uiCfg.stepPrintSpeed == 1) |
|||
lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_C_STEP, "bmp_Step1_percent.bin", 0); |
|||
else if (uiCfg.stepPrintSpeed == 5) |
|||
lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_C_STEP, "bmp_Step5_percent.bin", 0); |
|||
else if (uiCfg.stepPrintSpeed == 10) |
|||
lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_C_STEP, "bmp_Step10_percent.bin", 0); |
|||
|
|||
if (gCfgItems.multiple_language != 0) { |
|||
if (uiCfg.stepPrintSpeed == 1) { |
|||
lv_label_set_text(labelStep, speed_menu.step_1percent); |
|||
lv_obj_align(labelStep, buttonStep, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
else if (uiCfg.stepPrintSpeed == 5) { |
|||
lv_label_set_text(labelStep, speed_menu.step_5percent); |
|||
lv_obj_align(labelStep, buttonStep, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
else if (uiCfg.stepPrintSpeed == 10) { |
|||
lv_label_set_text(labelStep, speed_menu.step_10percent); |
|||
lv_obj_align(labelStep, buttonStep, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
} |
|||
} |
|||
|
|||
void disp_print_speed() { |
|||
char buf[30] = {0}; |
|||
|
|||
public_buf_l[0] = '\0'; |
|||
|
|||
if (speedType == 0) { //move
|
|||
strcat(public_buf_l, speed_menu.move_speed); |
|||
strcat(public_buf_l, ": "); |
|||
sprintf(buf, "%d%%", feedrate_percentage); |
|||
strcat(public_buf_l, buf); |
|||
} |
|||
else if (speedType == 1) { // e1
|
|||
strcat(public_buf_l, speed_menu.extrude_speed); |
|||
strcat(public_buf_l, ": "); |
|||
sprintf(buf, "%d%%", planner.flow_percentage[0]); |
|||
strcat(public_buf_l, buf); |
|||
} |
|||
lv_label_set_text(printSpeedText, public_buf_l); |
|||
lv_obj_align(printSpeedText, NULL, LV_ALIGN_CENTER, 0, -65); |
|||
} |
|||
|
|||
void disp_speed_type() { |
|||
switch (speedType) { |
|||
case 1: |
|||
lv_obj_set_event_cb_mks(buttonExt, event_handler, ID_C_EXT, "bmp_Extruct_speed_sel.bin", 0); |
|||
lv_obj_set_event_cb_mks(buttonMov, event_handler, ID_C_MOVE, "bmp_Mov_speed.bin", 0); |
|||
break; |
|||
|
|||
default: |
|||
lv_obj_set_event_cb_mks(buttonExt, event_handler, ID_C_EXT, "bmp_Extruct_speed.bin", 0); |
|||
lv_obj_set_event_cb_mks(buttonMov, event_handler, ID_C_MOVE, "bmp_Mov_speed_sel.bin", 0); |
|||
break; |
|||
} |
|||
lv_obj_refresh_ext_draw_pad(buttonExt); |
|||
lv_obj_refresh_ext_draw_pad(buttonMov); |
|||
|
|||
if (gCfgItems.multiple_language != 0) { |
|||
lv_label_set_text(labelMov, speed_menu.move); |
|||
lv_obj_align(labelMov, buttonMov, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(labelExt, speed_menu.extrude); |
|||
lv_obj_align(labelExt, buttonExt, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
} |
|||
|
|||
void lv_clear_change_speed() { lv_obj_del(scr); } |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,40 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { /* C-declarations for C++ */ |
|||
#endif |
|||
|
|||
#define MIN_EXT_SPEED_PERCENT 10 |
|||
#define MAX_EXT_SPEED_PERCENT 999 |
|||
|
|||
extern void lv_draw_change_speed(void); |
|||
extern void lv_clear_change_speed(); |
|||
extern void disp_speed_step(); |
|||
extern void disp_print_speed(); |
|||
extern void disp_speed_type(); |
|||
|
|||
//extern void disp_temp_ready_print();
|
|||
#ifdef __cplusplus |
|||
} /* C-declarations for C++ */ |
|||
#endif |
@ -0,0 +1,343 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
|
|||
/**
|
|||
* draw_dialog.cpp |
|||
*/ |
|||
|
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include "lv_conf.h" |
|||
#include "draw_ui.h" |
|||
//#include "../lvgl/src/lv_objx/lv_imgbtn.h"
|
|||
//#include "../lvgl/src/lv_objx/lv_img.h"
|
|||
//#include "../lvgl/src/lv_core/lv_disp.h"
|
|||
//#include "../lvgl/src/lv_core/lv_refr.h"
|
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
#include "../../../../sd/cardreader.h" |
|||
#include "../../../../gcode/queue.h" |
|||
#include "../../../../module/temperature.h" |
|||
#include "../../../../module/planner.h" |
|||
|
|||
#if ENABLED(POWER_LOSS_RECOVERY) |
|||
#include "../../../../feature/powerloss.h" |
|||
#endif |
|||
|
|||
#if ENABLED(PARK_HEAD_ON_PAUSE) |
|||
#include "../../../../feature/pause.h" |
|||
#endif |
|||
|
|||
static lv_obj_t * scr; |
|||
extern uint8_t sel_id; |
|||
extern uint8_t once_flag; |
|||
extern uint8_t gcode_preview_over; |
|||
uint8_t DialogType; |
|||
|
|||
static void btn_ok_event_cb(lv_obj_t * btn, lv_event_t event) { |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (DialogType == DIALOG_TYPE_PRINT_FILE) { |
|||
preview_gcode_prehandle(list_file.file_name[sel_id]); |
|||
reset_print_time(); |
|||
start_print_time(); |
|||
|
|||
uiCfg.print_state = WORKING; |
|||
lv_clear_dialog(); |
|||
lv_draw_printing(); |
|||
|
|||
#if ENABLED(SDSUPPORT) |
|||
if (gcode_preview_over != 1) { |
|||
char *cur_name; |
|||
cur_name = strrchr(list_file.file_name[sel_id], '/'); |
|||
|
|||
SdFile file, *curDir; |
|||
card.endFilePrint(); |
|||
const char * const fname = card.diveToFile(true, curDir, cur_name); |
|||
if (!fname) return; |
|||
if (file.open(curDir, fname, O_READ)) { |
|||
gCfgItems.curFilesize = file.fileSize(); |
|||
file.close(); |
|||
update_spi_flash(); |
|||
} |
|||
card.openFileRead(cur_name); |
|||
if (card.isFileOpen()) { |
|||
feedrate_percentage = 100; |
|||
//saved_feedrate_percentage = feedrate_percentage;
|
|||
planner.flow_percentage[0] = 100; |
|||
planner.e_factor[0] = planner.flow_percentage[0] * 0.01f; |
|||
#if EXTRUDERS == 2 |
|||
planner.flow_percentage[1] = 100; |
|||
planner.e_factor[1] = planner.flow_percentage[1] * 0.01f; |
|||
#endif |
|||
card.startFileprint(); |
|||
#if ENABLED(POWER_LOSS_RECOVERY) |
|||
recovery.prepare(); |
|||
#endif |
|||
once_flag = 0; |
|||
} |
|||
} |
|||
#endif |
|||
} |
|||
else if (DialogType == DIALOG_TYPE_STOP) { |
|||
stop_print_time(); |
|||
lv_clear_dialog(); |
|||
lv_draw_ready_print(); |
|||
|
|||
#if ENABLED(SDSUPPORT) |
|||
//card.endFilePrint();
|
|||
//wait_for_heatup = false;
|
|||
uiCfg.print_state = IDLE; |
|||
card.flag.abort_sd_printing = true; |
|||
//queue.clear();
|
|||
//quickstop_stepper();
|
|||
//print_job_timer.stop();
|
|||
//thermalManager.disable_all_heaters();
|
|||
|
|||
//#if ENABLED(POWER_LOSS_RECOVERY)
|
|||
//recovery.purge();
|
|||
//#endif
|
|||
//queue.enqueue_one_now(PSTR("G91"));
|
|||
//queue.enqueue_one_now(PSTR("G1 Z10"));
|
|||
//queue.enqueue_one_now(PSTR("G90"));
|
|||
//queue.enqueue_one_now(PSTR("G28 X0 Y0"));
|
|||
//queue.inject_P(PSTR("G91\nG1 Z10\nG90\nG28 X0 Y0\nM84\nM107"));
|
|||
#endif |
|||
} |
|||
else if (DialogType == DIALOG_TYPE_FINISH_PRINT) { |
|||
clear_cur_ui(); |
|||
lv_draw_ready_print(); |
|||
} |
|||
#if ENABLED(ADVANCED_PAUSE_FEATURE) |
|||
else if (DialogType == DIALOG_PAUSE_MESSAGE_WAITING |
|||
|| DialogType == DIALOG_PAUSE_MESSAGE_INSERT |
|||
|| DialogType == DIALOG_PAUSE_MESSAGE_HEAT |
|||
) { |
|||
wait_for_user = false; |
|||
} |
|||
else if (DialogType == DIALOG_PAUSE_MESSAGE_OPTION) { |
|||
pause_menu_response = PAUSE_RESPONSE_EXTRUDE_MORE; |
|||
} |
|||
else if (DialogType == DIALOG_PAUSE_MESSAGE_RESUME) { |
|||
clear_cur_ui(); |
|||
draw_return_ui(); |
|||
} |
|||
#endif |
|||
} |
|||
} |
|||
|
|||
static void btn_cancel_event_cb(lv_obj_t * btn, lv_event_t event) { |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (DialogType == DIALOG_PAUSE_MESSAGE_OPTION) { |
|||
#if ENABLED(ADVANCED_PAUSE_FEATURE) |
|||
pause_menu_response = PAUSE_RESPONSE_RESUME_PRINT; |
|||
#endif |
|||
} |
|||
else { |
|||
clear_cur_ui(); |
|||
draw_return_ui(); |
|||
} |
|||
} |
|||
} |
|||
|
|||
void lv_draw_dialog(uint8_t type) { |
|||
|
|||
if (disp_state_stack._disp_state[disp_state_stack._disp_index] != DIALOG_UI) { |
|||
disp_state_stack._disp_index++; |
|||
disp_state_stack._disp_state[disp_state_stack._disp_index] = DIALOG_UI; |
|||
} |
|||
disp_state = DIALOG_UI; |
|||
|
|||
DialogType = type; |
|||
|
|||
scr = lv_obj_create(NULL, NULL); |
|||
|
|||
|
|||
lv_obj_set_style(scr, &tft_style_scr); |
|||
lv_scr_load(scr); |
|||
lv_obj_clean(scr); |
|||
|
|||
lv_obj_t * title = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(title, &tft_style_lable_rel); |
|||
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS); |
|||
lv_label_set_text(title, creat_title_text()); |
|||
|
|||
lv_refr_now(lv_refr_get_disp_refreshing()); |
|||
|
|||
//LV_IMG_DECLARE(bmp_pic);
|
|||
|
|||
static lv_style_t style_btn_rel; // A variable to store the released style
|
|||
lv_style_copy(&style_btn_rel, &lv_style_plain); // Initialize from a built-in style
|
|||
style_btn_rel.body.border.color = lv_color_hex3(0x269); |
|||
style_btn_rel.body.border.width = 1; |
|||
style_btn_rel.body.main_color = lv_color_hex3(0xADF); |
|||
style_btn_rel.body.grad_color = lv_color_hex3(0x46B); |
|||
style_btn_rel.body.shadow.width = 4; |
|||
style_btn_rel.body.shadow.type = LV_SHADOW_BOTTOM; |
|||
style_btn_rel.body.radius = LV_RADIUS_CIRCLE; |
|||
style_btn_rel.text.color = lv_color_hex3(0xDEF); |
|||
style_btn_rel.text.font = &gb2312_puhui32; |
|||
|
|||
static lv_style_t style_btn_pr; // A variable to store the pressed style
|
|||
lv_style_copy(&style_btn_pr, &style_btn_rel); // Initialize from the released style
|
|||
style_btn_pr.body.border.color = lv_color_hex3(0x46B); |
|||
style_btn_pr.body.main_color = lv_color_hex3(0x8BD); |
|||
style_btn_pr.body.grad_color = lv_color_hex3(0x24A); |
|||
style_btn_pr.body.shadow.width = 2; |
|||
style_btn_pr.text.color = lv_color_hex3(0xBCD); |
|||
style_btn_pr.text.font = &gb2312_puhui32; |
|||
|
|||
lv_obj_t * labelDialog = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(labelDialog, &tft_style_lable_rel); |
|||
|
|||
if (DialogType == DIALOG_TYPE_FINISH_PRINT || DialogType == DIALOG_PAUSE_MESSAGE_RESUME) { |
|||
lv_obj_t * btnOk = lv_btn_create(scr, NULL); // Add a button the current screen
|
|||
lv_obj_set_pos(btnOk, BTN_OK_X + 90, BTN_OK_Y); // Set its position
|
|||
lv_obj_set_size(btnOk, 100, 50); // Set its size
|
|||
lv_obj_set_event_cb(btnOk, btn_ok_event_cb); |
|||
lv_btn_set_style(btnOk, LV_BTN_STYLE_REL, &style_btn_rel); // Set the button's released style
|
|||
lv_btn_set_style(btnOk, LV_BTN_STYLE_PR, &style_btn_pr); // Set the button's pressed style
|
|||
lv_obj_t * labelOk = lv_label_create(btnOk, NULL); // Add a label to the button
|
|||
lv_label_set_text(labelOk, print_file_dialog_menu.confirm); // Set the labels text
|
|||
} |
|||
else if (DialogType == DIALOG_PAUSE_MESSAGE_WAITING |
|||
|| DialogType == DIALOG_PAUSE_MESSAGE_INSERT |
|||
|| DialogType == DIALOG_PAUSE_MESSAGE_HEAT) { |
|||
lv_obj_t * btnOk = lv_btn_create(scr, NULL); // Add a button the current screen
|
|||
lv_obj_set_pos(btnOk, BTN_OK_X + 90, BTN_OK_Y); // Set its position
|
|||
lv_obj_set_size(btnOk, 100, 50); // Set its size
|
|||
lv_obj_set_event_cb(btnOk, btn_ok_event_cb); |
|||
lv_btn_set_style(btnOk, LV_BTN_STYLE_REL, &style_btn_rel); // Set the button's released style
|
|||
lv_btn_set_style(btnOk, LV_BTN_STYLE_PR, &style_btn_pr); // Set the button's pressed style
|
|||
lv_obj_t * labelOk = lv_label_create(btnOk, NULL); // Add a label to the button
|
|||
lv_label_set_text(labelOk, print_file_dialog_menu.confirm); // Set the labels text
|
|||
} |
|||
else if (DialogType == DIALOG_PAUSE_MESSAGE_PAUSING |
|||
|| DialogType == DIALOG_PAUSE_MESSAGE_CHANGING |
|||
|| DialogType == DIALOG_PAUSE_MESSAGE_UNLOAD |
|||
|| DialogType == DIALOG_PAUSE_MESSAGE_LOAD |
|||
|| DialogType == DIALOG_PAUSE_MESSAGE_PURGE |
|||
|| DialogType == DIALOG_PAUSE_MESSAGE_RESUME |
|||
|| DialogType == DIALOG_PAUSE_MESSAGE_HEATING |
|||
) { |
|||
// nothing to do
|
|||
} |
|||
else { |
|||
lv_obj_t * btnOk = lv_btn_create(scr, NULL); // Add a button the current screen
|
|||
lv_obj_set_pos(btnOk, BTN_OK_X, BTN_OK_Y); // Set its position
|
|||
lv_obj_set_size(btnOk, 100, 50); // Set its size
|
|||
lv_obj_set_event_cb(btnOk, btn_ok_event_cb); |
|||
lv_btn_set_style(btnOk, LV_BTN_STYLE_REL, &style_btn_rel); // Set the button's released style
|
|||
lv_btn_set_style(btnOk, LV_BTN_STYLE_PR, &style_btn_pr); // Set the button's pressed style
|
|||
lv_obj_t * labelOk = lv_label_create(btnOk, NULL); // Add a label to the button
|
|||
|
|||
lv_obj_t * btnCancel = lv_btn_create(scr, NULL); // Add a button the current screen
|
|||
lv_obj_set_pos(btnCancel, BTN_CANCEL_X, BTN_CANCEL_Y); // Set its position
|
|||
lv_obj_set_size(btnCancel, 100, 50); // Set its size
|
|||
lv_obj_set_event_cb(btnCancel, btn_cancel_event_cb); |
|||
lv_btn_set_style(btnCancel, LV_BTN_STYLE_REL, &style_btn_rel); // Set the button's released style
|
|||
lv_btn_set_style(btnCancel, LV_BTN_STYLE_PR, &style_btn_pr); // Set the button's pressed style
|
|||
lv_obj_t * labelCancel = lv_label_create(btnCancel, NULL); // Add a label to the button
|
|||
|
|||
if (DialogType == DIALOG_PAUSE_MESSAGE_OPTION) { |
|||
lv_label_set_text(labelOk, pause_msg_menu.purgeMore); // Set the labels text
|
|||
lv_label_set_text(labelCancel, pause_msg_menu.continuePrint); |
|||
} |
|||
else { |
|||
lv_label_set_text(labelOk, print_file_dialog_menu.confirm); // Set the labels text
|
|||
lv_label_set_text(labelCancel, print_file_dialog_menu.cancle); |
|||
} |
|||
} |
|||
if (DialogType == DIALOG_TYPE_PRINT_FILE) { |
|||
lv_label_set_text(labelDialog, print_file_dialog_menu.print_file); |
|||
lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20); |
|||
|
|||
lv_obj_t * labelFile = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(labelFile, &tft_style_lable_rel); |
|||
|
|||
lv_label_set_text(labelFile, list_file.long_name[sel_id]); |
|||
lv_obj_align(labelFile, NULL, LV_ALIGN_CENTER, 0, -60); |
|||
} |
|||
else if (DialogType == DIALOG_TYPE_STOP) { |
|||
lv_label_set_text(labelDialog, print_file_dialog_menu.cancle_print); |
|||
lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20); |
|||
} |
|||
else if (DialogType == DIALOG_TYPE_FINISH_PRINT) { |
|||
lv_label_set_text(labelDialog, print_file_dialog_menu.print_finish); |
|||
lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20); |
|||
} |
|||
else if (DialogType == DIALOG_PAUSE_MESSAGE_PAUSING) { |
|||
lv_label_set_text(labelDialog, pause_msg_menu.pausing); |
|||
lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20); |
|||
} |
|||
else if (DialogType == DIALOG_PAUSE_MESSAGE_CHANGING) { |
|||
lv_label_set_text(labelDialog, pause_msg_menu.changing); |
|||
lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20); |
|||
} |
|||
else if (DialogType == DIALOG_PAUSE_MESSAGE_UNLOAD) { |
|||
lv_label_set_text(labelDialog, pause_msg_menu.unload); |
|||
lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20); |
|||
} |
|||
else if (DialogType == DIALOG_PAUSE_MESSAGE_WAITING) { |
|||
lv_label_set_text(labelDialog, pause_msg_menu.waiting); |
|||
lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20); |
|||
} |
|||
else if (DialogType == DIALOG_PAUSE_MESSAGE_INSERT) { |
|||
lv_label_set_text(labelDialog, pause_msg_menu.insert); |
|||
lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20); |
|||
} |
|||
else if (DialogType == DIALOG_PAUSE_MESSAGE_LOAD) { |
|||
lv_label_set_text(labelDialog, pause_msg_menu.load); |
|||
lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20); |
|||
} |
|||
else if (DialogType == DIALOG_PAUSE_MESSAGE_PURGE) { |
|||
lv_label_set_text(labelDialog, pause_msg_menu.purge); |
|||
lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20); |
|||
} |
|||
else if (DialogType == DIALOG_PAUSE_MESSAGE_RESUME) { |
|||
lv_label_set_text(labelDialog, pause_msg_menu.resume); |
|||
lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20); |
|||
} |
|||
else if (DialogType == DIALOG_PAUSE_MESSAGE_HEAT) { |
|||
lv_label_set_text(labelDialog, pause_msg_menu.heat); |
|||
lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20); |
|||
} |
|||
else if (DialogType == DIALOG_PAUSE_MESSAGE_HEATING) { |
|||
lv_label_set_text(labelDialog, pause_msg_menu.heating); |
|||
lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20); |
|||
} |
|||
else if (DialogType == DIALOG_PAUSE_MESSAGE_OPTION) { |
|||
lv_label_set_text(labelDialog, pause_msg_menu.option); |
|||
lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20); |
|||
} |
|||
} |
|||
|
|||
void lv_clear_dialog() { lv_obj_del(scr); } |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,79 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { /* C-declarations for C++ */ |
|||
#endif |
|||
|
|||
#define DIALOG_TYPE_STOP 0 |
|||
#define DIALOG_TYPE_PRINT_FILE 1 |
|||
#define DIALOG_TYPE_REPRINT_NO_FILE 2 |
|||
|
|||
#define DIALOG_TYPE_M80_FAIL 3 //**
|
|||
#define DIALOG_TYPE_MESSEGE_ERR1 4 //**
|
|||
|
|||
#define DIALOG_TYPE_UPDATE_ESP_FIRMARE 5 |
|||
#define DIALOG_TYPE_UPDATE_ESP_DATA 6 |
|||
#define DIALOG_TYPE_UPLOAD_FILE 7 |
|||
#define DIALOG_TYPE_UNBIND 8 |
|||
|
|||
#define DIALOG_TYPE_FILAMENT_LOAD_HEAT 9 |
|||
#define DIALOG_TYPE_FILAMENT_HEAT_LOAD_COMPLETED 10 |
|||
#define DIALOG_TYPE_FILAMENT_LOADING 11 |
|||
#define DIALOG_TYPE_FILAMENT_LOAD_COMPLETED 12 |
|||
#define DIALOG_TYPE_FILAMENT_UNLOAD_HEAT 13 |
|||
#define DIALOG_TYPE_FILAMENT_HEAT_UNLOAD_COMPLETED 14 |
|||
#define DIALOG_TYPE_FILAMENT_UNLOADING 15 |
|||
#define DIALOG_TYPE_FILAMENT_UNLOAD_COMPLETED 16 |
|||
|
|||
#define DIALOG_TYPE_FILE_LOADING 17 //**
|
|||
|
|||
#define DIALOG_TYPE_FILAMENT_NO_PRESS 18 |
|||
#define DIALOG_TYPE_FINISH_PRINT 19 |
|||
|
|||
#define WIFI_ENABLE_TIPS 20 |
|||
|
|||
#define DIALOG_PAUSE_MESSAGE_PAUSING 21 |
|||
#define DIALOG_PAUSE_MESSAGE_CHANGING 22 |
|||
#define DIALOG_PAUSE_MESSAGE_UNLOAD 23 |
|||
#define DIALOG_PAUSE_MESSAGE_WAITING 24 |
|||
#define DIALOG_PAUSE_MESSAGE_INSERT 25 |
|||
#define DIALOG_PAUSE_MESSAGE_LOAD 26 |
|||
#define DIALOG_PAUSE_MESSAGE_PURGE 27 |
|||
#define DIALOG_PAUSE_MESSAGE_RESUME 28 |
|||
#define DIALOG_PAUSE_MESSAGE_HEAT 29 |
|||
#define DIALOG_PAUSE_MESSAGE_HEATING 30 |
|||
#define DIALOG_PAUSE_MESSAGE_OPTION 31 |
|||
|
|||
#define BTN_OK_X 100 |
|||
#define BTN_OK_Y 180 |
|||
#define BTN_CANCEL_X 280 |
|||
#define BTN_CANCEL_Y 180 |
|||
|
|||
extern void lv_draw_dialog(uint8_t type); |
|||
extern void lv_clear_dialog(); |
|||
|
|||
//extern void disp_temp_ready_print();
|
|||
#ifdef __cplusplus |
|||
} /* C-declarations for C++ */ |
|||
#endif |
@ -0,0 +1,84 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include "lv_conf.h" |
|||
#include "draw_ui.h" |
|||
#include "tft_lvgl_configuration.h" |
|||
#include "mks_hardware_test.h" |
|||
//#include "../lvgl/src/lv_objx/lv_imgbtn.h"
|
|||
//#include "../lvgl/src/lv_objx/lv_img.h"
|
|||
//#include "../lvgl/src/lv_core/lv_disp.h"
|
|||
//#include "../lvgl/src/lv_core/lv_refr.h"
|
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
|
|||
static lv_obj_t * scr; |
|||
|
|||
void lv_draw_error_message(PGM_P const msg) { |
|||
#if 0 |
|||
static lv_obj_t * message = NULL, *kill_message = NULL, *reset_tips = NULL; |
|||
if (disp_state_stack._disp_state[disp_state_stack._disp_index] != ERROR_MESSAGE_UI) { |
|||
disp_state_stack._disp_index++; |
|||
disp_state_stack._disp_state[disp_state_stack._disp_index] = ERROR_MESSAGE_UI; |
|||
} |
|||
disp_state = ERROR_MESSAGE_UI; |
|||
|
|||
scr = lv_obj_create(NULL, NULL); |
|||
|
|||
lv_obj_set_style(scr, &tft_style_scr); |
|||
lv_scr_load(scr); |
|||
lv_obj_clean(scr); |
|||
|
|||
lv_refr_now(lv_refr_get_disp_refreshing()); |
|||
|
|||
if (msg) { |
|||
message = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(message, &tft_style_lable_rel); |
|||
lv_label_set_text(message, msg); |
|||
lv_obj_align(message, NULL, LV_ALIGN_CENTER, 0, -50); |
|||
} |
|||
|
|||
kill_message = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(kill_message, &tft_style_lable_rel); |
|||
lv_label_set_text(kill_message, "PRINTER HALTED"); |
|||
lv_obj_align(kill_message, NULL, LV_ALIGN_CENTER, 0, -10); |
|||
|
|||
reset_tips = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(reset_tips, &tft_style_lable_rel); |
|||
lv_label_set_text(reset_tips, "Please Reset"); |
|||
lv_obj_align(reset_tips, NULL, LV_ALIGN_CENTER, 0, 30); |
|||
|
|||
lv_task_handler(); |
|||
#endif |
|||
LCD_Clear(0x0000); |
|||
if (msg) disp_string((TFT_WIDTH - strlen(msg) * 16) / 2, 100, msg, 0xFFFF, 0x0000); |
|||
disp_string((TFT_WIDTH - strlen("PRINTER HALTED") * 16) / 2, 140, "PRINTER HALTED", 0xFFFF, 0x0000); |
|||
disp_string((TFT_WIDTH - strlen("Please Reset") * 16) / 2, 180, "Please Reset", 0xFFFF, 0x0000); |
|||
|
|||
} |
|||
|
|||
void lv_clear_error_message() { lv_obj_del(scr); } |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,34 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { /* C-declarations for C++ */ |
|||
#endif |
|||
|
|||
extern void lv_draw_error_message(PGM_P const msg); |
|||
extern void lv_clear_error_message(); |
|||
|
|||
//extern void disp_temp_ready_print();
|
|||
#ifdef __cplusplus |
|||
} /* C-declarations for C++ */ |
|||
#endif |
@ -0,0 +1,378 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include "lv_conf.h" |
|||
#include "draw_ui.h" |
|||
//#include "../lvgl/src/lv_objx/lv_imgbtn.h"
|
|||
//#include "../lvgl/src/lv_objx/lv_img.h"
|
|||
//#include "../lvgl/src/lv_core/lv_disp.h"
|
|||
//#include "../lvgl/src/lv_core/lv_refr.h"
|
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
#include "../../../../module/temperature.h" |
|||
#include "../../../../gcode/queue.h" |
|||
|
|||
static lv_obj_t * scr; |
|||
static lv_obj_t * buttoType, *buttonStep, *buttonSpeed; |
|||
static lv_obj_t * labelType; |
|||
static lv_obj_t * labelStep; |
|||
static lv_obj_t * labelSpeed; |
|||
static lv_obj_t * tempText; |
|||
static lv_obj_t * ExtruText; |
|||
|
|||
#define ID_E_ADD 1 |
|||
#define ID_E_DEC 2 |
|||
#define ID_E_TYPE 3 |
|||
#define ID_E_STEP 4 |
|||
#define ID_E_SPEED 5 |
|||
#define ID_E_RETURN 6 |
|||
|
|||
static int32_t extructAmount; |
|||
|
|||
static void event_handler(lv_obj_t * obj, lv_event_t event) { |
|||
switch (obj->mks_obj_id) { |
|||
case ID_E_ADD: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (thermalManager.temp_hotend[uiCfg.curSprayerChoose].celsius >= EXTRUDE_MINTEMP) { |
|||
queue.enqueue_one_now(PSTR("G91")); |
|||
memset(public_buf_l, 0, sizeof(public_buf_l)); |
|||
sprintf((char *)public_buf_l, "G1 E%d F%d", uiCfg.extruStep, 60 * uiCfg.extruSpeed); |
|||
queue.enqueue_one_now(PSTR(public_buf_l)); |
|||
queue.enqueue_one_now(PSTR("G90")); |
|||
extructAmount += uiCfg.extruStep; |
|||
disp_extru_amount(); |
|||
} |
|||
} |
|||
break; |
|||
case ID_E_DEC: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (thermalManager.temp_hotend[uiCfg.curSprayerChoose].celsius >= EXTRUDE_MINTEMP) { |
|||
queue.enqueue_one_now(PSTR("G91")); |
|||
memset(public_buf_l, 0, sizeof(public_buf_l)); |
|||
sprintf((char *)public_buf_l, "G1 E%d F%d", 0 - uiCfg.extruStep, 60 * uiCfg.extruSpeed); |
|||
queue.enqueue_one_now(PSTR(public_buf_l)); |
|||
queue.enqueue_one_now(PSTR("G90")); |
|||
extructAmount -= uiCfg.extruStep; |
|||
disp_extru_amount(); |
|||
} |
|||
} |
|||
break; |
|||
case ID_E_TYPE: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (EXTRUDERS == 2) { |
|||
if (uiCfg.curSprayerChoose == 0) { |
|||
uiCfg.curSprayerChoose = 1; |
|||
queue.inject_P(PSTR("T1")); |
|||
} |
|||
else { |
|||
uiCfg.curSprayerChoose = 0; |
|||
queue.inject_P(PSTR("T0")); |
|||
} |
|||
} |
|||
else { |
|||
uiCfg.curSprayerChoose = 0; |
|||
} |
|||
extructAmount = 0; |
|||
disp_hotend_temp(); |
|||
disp_ext_type(); |
|||
disp_extru_amount(); |
|||
} |
|||
break; |
|||
case ID_E_STEP: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
switch (abs(uiCfg.extruStep)) { |
|||
case 1: uiCfg.extruStep = 5; break; |
|||
case 5: uiCfg.extruStep = 10; break; |
|||
case 10: uiCfg.extruStep = 1; break; |
|||
default: break; |
|||
} |
|||
disp_ext_step(); |
|||
} |
|||
break; |
|||
case ID_E_SPEED: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
switch (uiCfg.extruSpeed) { |
|||
case 1: uiCfg.extruSpeed = 10; break; |
|||
case 10: uiCfg.extruSpeed = 20; break; |
|||
case 20: uiCfg.extruSpeed = 1; break; |
|||
default: break; |
|||
} |
|||
disp_ext_speed(); |
|||
} |
|||
break; |
|||
case ID_E_RETURN: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
clear_cur_ui(); |
|||
draw_return_ui(); |
|||
} |
|||
break; |
|||
} |
|||
} |
|||
|
|||
|
|||
void lv_draw_extrusion(void) { |
|||
lv_obj_t *buttonAdd, *buttonDec, *buttonBack; |
|||
|
|||
if (disp_state_stack._disp_state[disp_state_stack._disp_index] != EXTRUSION_UI) { |
|||
disp_state_stack._disp_index++; |
|||
disp_state_stack._disp_state[disp_state_stack._disp_index] = EXTRUSION_UI; |
|||
} |
|||
disp_state = EXTRUSION_UI; |
|||
|
|||
scr = lv_obj_create(NULL, NULL); |
|||
|
|||
lv_obj_set_style(scr, &tft_style_scr); |
|||
lv_scr_load(scr); |
|||
lv_obj_clean(scr); |
|||
|
|||
lv_obj_t * title = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(title, &tft_style_lable_rel); |
|||
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS); |
|||
lv_label_set_text(title, creat_title_text()); |
|||
|
|||
lv_refr_now(lv_refr_get_disp_refreshing()); |
|||
|
|||
LV_IMG_DECLARE(bmp_pic); |
|||
|
|||
/*Create an Image button*/ |
|||
buttonAdd = lv_imgbtn_create(scr, NULL); |
|||
buttonDec = lv_imgbtn_create(scr, NULL); |
|||
buttoType = lv_imgbtn_create(scr, NULL); |
|||
buttonStep = lv_imgbtn_create(scr, NULL); |
|||
buttonSpeed = lv_imgbtn_create(scr, NULL); |
|||
buttonBack = lv_imgbtn_create(scr, NULL); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonAdd, event_handler, ID_E_ADD, "bmp_In.bin", 0); |
|||
lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
lv_obj_clear_protect(buttonAdd, LV_PROTECT_FOLLOW); |
|||
|
|||
#if 1 |
|||
lv_obj_set_event_cb_mks(buttonDec, event_handler, ID_E_DEC, "bmp_Out.bin", 0); |
|||
lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_imgbtn_set_src(buttoType, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttoType, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttoType, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttoType, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_imgbtn_set_src(buttonStep, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonStep, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_imgbtn_set_src(buttonSpeed, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonSpeed, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonSpeed, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonSpeed, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_E_RETURN, "bmp_Return.bin", 0); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
#endif |
|||
|
|||
lv_obj_set_pos(buttonAdd, INTERVAL_V, titleHeight); |
|||
lv_obj_set_pos(buttonDec, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight); |
|||
lv_obj_set_pos(buttoType, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_obj_set_pos(buttonStep, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_obj_set_pos(buttonSpeed, BTN_X_PIXEL * 2 + INTERVAL_V * 3, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
|
|||
/*Create a label on the Image button*/ |
|||
lv_btn_set_layout(buttonAdd, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonDec, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttoType, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonStep, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonSpeed, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF); |
|||
|
|||
lv_obj_t * labelAdd = lv_label_create(buttonAdd, NULL); |
|||
lv_obj_t * labelDec = lv_label_create(buttonDec, NULL); |
|||
labelType = lv_label_create(buttoType, NULL); |
|||
labelStep = lv_label_create(buttonStep, NULL); |
|||
labelSpeed = lv_label_create(buttonSpeed, NULL); |
|||
lv_obj_t * label_Back = lv_label_create(buttonBack, NULL); |
|||
|
|||
if (gCfgItems.multiple_language != 0) { |
|||
lv_label_set_text(labelAdd, extrude_menu.in); |
|||
lv_obj_align(labelAdd, buttonAdd, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(labelDec, extrude_menu.out); |
|||
lv_obj_align(labelDec, buttonDec, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_Back, common_menu.text_back); |
|||
lv_obj_align(label_Back, buttonBack, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
|
|||
disp_ext_type(); |
|||
disp_ext_step(); |
|||
disp_ext_speed(); |
|||
|
|||
tempText = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(tempText, &tft_style_lable_rel); |
|||
disp_hotend_temp(); |
|||
|
|||
ExtruText = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(ExtruText, &tft_style_lable_rel); |
|||
disp_extru_amount(); |
|||
} |
|||
|
|||
void disp_ext_type() { |
|||
if (uiCfg.curSprayerChoose == 1) { |
|||
lv_obj_set_event_cb_mks(buttoType, event_handler, ID_E_TYPE, "bmp_Extru2.bin", 0); |
|||
if (gCfgItems.multiple_language != 0) { |
|||
lv_label_set_text(labelType, extrude_menu.ext2); |
|||
lv_obj_align(labelType, buttoType, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
} |
|||
else { |
|||
lv_obj_set_event_cb_mks(buttoType, event_handler, ID_E_TYPE, "bmp_Extru1.bin", 0); |
|||
if (gCfgItems.multiple_language != 0) { |
|||
lv_label_set_text(labelType, extrude_menu.ext1); |
|||
lv_obj_align(labelType, buttoType, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
} |
|||
} |
|||
|
|||
void disp_ext_speed() { |
|||
if (uiCfg.extruSpeed == 20) |
|||
lv_obj_set_event_cb_mks(buttonSpeed, event_handler, ID_E_SPEED, "bmp_Speed_high.bin", 0); |
|||
else if (uiCfg.extruSpeed == 1) |
|||
lv_obj_set_event_cb_mks(buttonSpeed, event_handler, ID_E_SPEED, "bmp_Speed_slow.bin", 0); |
|||
else |
|||
lv_obj_set_event_cb_mks(buttonSpeed, event_handler, ID_E_SPEED, "bmp_Speed_normal.bin", 0); |
|||
|
|||
if (gCfgItems.multiple_language != 0) { |
|||
if (uiCfg.extruSpeed == 20) { |
|||
lv_label_set_text(labelSpeed, extrude_menu.high); |
|||
lv_obj_align(labelSpeed, buttonSpeed, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
else if (uiCfg.extruSpeed == 1) { |
|||
lv_label_set_text(labelSpeed, extrude_menu.low); |
|||
lv_obj_align(labelSpeed, buttonSpeed, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
else { |
|||
lv_label_set_text(labelSpeed, extrude_menu.normal); |
|||
lv_obj_align(labelSpeed, buttonSpeed, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
} |
|||
} |
|||
|
|||
void disp_hotend_temp() { |
|||
char buf[20] = {0}; |
|||
public_buf_l[0] = '\0'; |
|||
strcat(public_buf_l, extrude_menu.temper_text); |
|||
sprintf(buf, extrude_menu.temp_value, (int)thermalManager.temp_hotend[uiCfg.curSprayerChoose].celsius, (int)thermalManager.temp_hotend[uiCfg.curSprayerChoose].target); |
|||
strcat(public_buf_l, buf); |
|||
lv_label_set_text(tempText, public_buf_l); |
|||
lv_obj_align(tempText, NULL, LV_ALIGN_CENTER, 0, -50); |
|||
} |
|||
|
|||
void disp_extru_amount() { |
|||
char buf1[10] = {0}; |
|||
|
|||
public_buf_l[0] = '\0'; |
|||
|
|||
if (extructAmount < 999 && extructAmount > -99) { |
|||
sprintf(buf1, extrude_menu.count_value_mm, extructAmount); |
|||
if (uiCfg.curSprayerChoose < 1) |
|||
strcat(public_buf_l, extrude_menu.ext1); |
|||
else |
|||
strcat(public_buf_l, extrude_menu.ext2); |
|||
strcat(public_buf_l, buf1); |
|||
} |
|||
else if (extructAmount < 9999 && extructAmount > -999) { |
|||
sprintf(buf1, extrude_menu.count_value_cm, extructAmount / 10); |
|||
if (uiCfg.curSprayerChoose < 1) |
|||
strcat(public_buf_l, extrude_menu.ext1); |
|||
else |
|||
strcat(public_buf_l, extrude_menu.ext2); |
|||
strcat(public_buf_l, buf1); |
|||
} |
|||
else { |
|||
sprintf(buf1, extrude_menu.count_value_m, extructAmount / 1000); |
|||
if (uiCfg.curSprayerChoose < 1) |
|||
strcat(public_buf_l, extrude_menu.ext1); |
|||
else |
|||
strcat(public_buf_l, extrude_menu.ext2); |
|||
strcat(public_buf_l, buf1); |
|||
} |
|||
|
|||
lv_label_set_text(ExtruText, public_buf_l); |
|||
lv_obj_align(ExtruText, NULL, LV_ALIGN_CENTER, 0, -75); |
|||
} |
|||
|
|||
void disp_ext_step() { |
|||
if (uiCfg.extruStep == 1) |
|||
lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_E_STEP, "bmp_Step1_mm.bin", 0); |
|||
else if (uiCfg.extruStep == 5) |
|||
lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_E_STEP, "bmp_Step5_mm.bin", 0); |
|||
else if (uiCfg.extruStep == 10) |
|||
lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_E_STEP, "bmp_Step10_mm.bin", 0); |
|||
|
|||
if (gCfgItems.multiple_language != 0) { |
|||
if (uiCfg.extruStep == 1) { |
|||
lv_label_set_text(labelStep, extrude_menu.step_1mm); |
|||
lv_obj_align(labelStep, buttonStep, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
else if (uiCfg.extruStep == 5) { |
|||
lv_label_set_text(labelStep, extrude_menu.step_5mm); |
|||
lv_obj_align(labelStep, buttonStep, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
else if (uiCfg.extruStep == 10) { |
|||
lv_label_set_text(labelStep, extrude_menu.step_10mm); |
|||
lv_obj_align(labelStep, buttonStep, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
} |
|||
} |
|||
|
|||
void lv_clear_extrusion() { lv_obj_del(scr); } |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,39 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { /* C-declarations for C++ */ |
|||
#endif |
|||
|
|||
extern void lv_draw_extrusion(void); |
|||
extern void lv_clear_extrusion(); |
|||
extern void disp_ext_type(); |
|||
extern void disp_ext_step(); |
|||
extern void disp_ext_speed(); |
|||
extern void disp_hotend_temp(); |
|||
extern void disp_extru_amount(); |
|||
|
|||
//extern void disp_temp_ready_print();
|
|||
#ifdef __cplusplus |
|||
} /* C-declarations for C++ */ |
|||
#endif |
@ -0,0 +1,247 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
#include "lv_conf.h" |
|||
//#include "../lvgl/src/lv_objx/lv_imgbtn.h"
|
|||
//#include "../lvgl/src/lv_objx/lv_img.h"
|
|||
//#include "../lvgl/src/lv_core/lv_disp.h"
|
|||
//#include "../lvgl/src/lv_core/lv_refr.h"
|
|||
#include "../../../../../Configuration.h" |
|||
#include "draw_ui.h" |
|||
#include "../../../../module/temperature.h" |
|||
#include "../../../../gcode/queue.h" |
|||
|
|||
static lv_obj_t * scr; |
|||
static lv_obj_t * fanText; |
|||
|
|||
#define ID_F_ADD 1 |
|||
#define ID_F_DEC 2 |
|||
#define ID_F_HIGH 3 |
|||
#define ID_F_MID 4 |
|||
#define ID_F_OFF 5 |
|||
#define ID_F_RETURN 6 |
|||
|
|||
static uint8_t fanSpeed; |
|||
|
|||
static void event_handler(lv_obj_t * obj, lv_event_t event) { |
|||
switch (obj->mks_obj_id) { |
|||
case ID_F_ADD: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (fanSpeed + 1 <= 255) { |
|||
fanSpeed++; |
|||
memset(public_buf_l, 0, sizeof(public_buf_l)); |
|||
sprintf(public_buf_l, "M106 S%d", fanSpeed); |
|||
queue.enqueue_one_now(PSTR(public_buf_l)); |
|||
} |
|||
} |
|||
break; |
|||
case ID_F_DEC: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (fanSpeed > 0) { |
|||
fanSpeed--; |
|||
memset(public_buf_l, 0, sizeof(public_buf_l)); |
|||
sprintf(public_buf_l, "M106 S%d", fanSpeed); |
|||
queue.enqueue_one_now(PSTR(public_buf_l)); |
|||
} |
|||
} |
|||
|
|||
break; |
|||
case ID_F_HIGH: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
queue.enqueue_one_now(PSTR("M106 S255")); |
|||
} |
|||
break; |
|||
case ID_F_MID: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
queue.enqueue_one_now(PSTR("M106 S127")); |
|||
} |
|||
break; |
|||
case ID_F_OFF: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
queue.enqueue_one_now(PSTR("M107")); |
|||
} |
|||
break; |
|||
case ID_F_RETURN: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
clear_cur_ui(); |
|||
draw_return_ui(); |
|||
} |
|||
break; |
|||
} |
|||
} |
|||
|
|||
|
|||
void lv_draw_fan(void) { |
|||
lv_obj_t *buttonAdd, *buttonDec, *buttonHigh, *buttonMid; |
|||
lv_obj_t *buttonOff, *buttonBack; |
|||
|
|||
if (disp_state_stack._disp_state[disp_state_stack._disp_index] != FAN_UI) { |
|||
disp_state_stack._disp_index++; |
|||
disp_state_stack._disp_state[disp_state_stack._disp_index] = FAN_UI; |
|||
} |
|||
disp_state = FAN_UI; |
|||
|
|||
scr = lv_obj_create(NULL, NULL); |
|||
|
|||
lv_obj_set_style(scr, &tft_style_scr); |
|||
lv_scr_load(scr); |
|||
lv_obj_clean(scr); |
|||
|
|||
lv_obj_t * title = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(title, &tft_style_lable_rel); |
|||
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS); |
|||
lv_label_set_text(title, creat_title_text()); |
|||
|
|||
lv_refr_now(lv_refr_get_disp_refreshing()); |
|||
|
|||
LV_IMG_DECLARE(bmp_pic); |
|||
|
|||
/*Create an Image button*/ |
|||
buttonAdd = lv_imgbtn_create(scr, NULL); |
|||
buttonDec = lv_imgbtn_create(scr, NULL); |
|||
buttonHigh = lv_imgbtn_create(scr, NULL); |
|||
buttonMid = lv_imgbtn_create(scr, NULL); |
|||
buttonOff = lv_imgbtn_create(scr, NULL); |
|||
buttonBack = lv_imgbtn_create(scr, NULL); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonAdd, event_handler, ID_F_ADD, "bmp_Add.bin", 0); |
|||
lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
lv_obj_clear_protect(buttonAdd, LV_PROTECT_FOLLOW); |
|||
#if 1 |
|||
lv_obj_set_event_cb_mks(buttonDec, event_handler, ID_F_DEC, "bmp_Dec.bin", 0); |
|||
lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonHigh, event_handler, ID_F_HIGH, "bmp_Speed255.bin", 0); |
|||
lv_imgbtn_set_src(buttonHigh, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonHigh, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonHigh, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonHigh, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonMid, event_handler, ID_F_MID, "bmp_Speed127.bin", 0); |
|||
lv_imgbtn_set_src(buttonMid, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonMid, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonMid, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonMid, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonOff, event_handler, ID_F_OFF, "bmp_Speed0.bin", 0); |
|||
lv_imgbtn_set_src(buttonOff, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonOff, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonOff, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonOff, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_F_RETURN, "bmp_Return.bin", 0); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
#endif |
|||
|
|||
lv_obj_set_pos(buttonAdd, INTERVAL_V, titleHeight); |
|||
lv_obj_set_pos(buttonDec, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight); |
|||
lv_obj_set_pos(buttonHigh, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_obj_set_pos(buttonMid, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_obj_set_pos(buttonOff, BTN_X_PIXEL * 2 + INTERVAL_V * 3, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
|
|||
/*Create a label on the Image button*/ |
|||
lv_btn_set_layout(buttonAdd, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonDec, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonHigh, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonMid, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonOff, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF); |
|||
|
|||
lv_obj_t * labelAdd = lv_label_create(buttonAdd, NULL); |
|||
lv_obj_t * labelDec = lv_label_create(buttonDec, NULL); |
|||
lv_obj_t * labelHigh = lv_label_create(buttonHigh, NULL); |
|||
lv_obj_t * labelMid = lv_label_create(buttonMid, NULL); |
|||
lv_obj_t * labelOff = lv_label_create(buttonOff, NULL); |
|||
lv_obj_t * label_Back = lv_label_create(buttonBack, NULL); |
|||
|
|||
|
|||
if (gCfgItems.multiple_language != 0) { |
|||
lv_label_set_text(labelAdd, fan_menu.add); |
|||
lv_obj_align(labelAdd, buttonAdd, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(labelDec, fan_menu.dec); |
|||
lv_obj_align(labelDec, buttonDec, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(labelHigh, fan_menu.full); |
|||
lv_obj_align(labelHigh, buttonHigh, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(labelMid, fan_menu.half); |
|||
lv_obj_align(labelMid, buttonMid, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(labelOff, fan_menu.off); |
|||
lv_obj_align(labelOff, buttonOff, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_Back, common_menu.text_back); |
|||
lv_obj_align(label_Back, buttonBack, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
|
|||
fanText = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(fanText, &tft_style_lable_rel); |
|||
disp_fan_value(); |
|||
} |
|||
|
|||
void disp_fan_value() { |
|||
char buf1[10] = {0}; |
|||
public_buf_l[0] = '\0'; |
|||
strcat(public_buf_l, fan_menu.state); |
|||
strcat(public_buf_l, ": "); |
|||
sprintf(buf1, "%3d", thermalManager.fan_speed[0]); |
|||
strcat(public_buf_l, buf1); |
|||
lv_label_set_text(fanText, public_buf_l); |
|||
lv_obj_align(fanText, NULL, LV_ALIGN_CENTER, 0, -65); |
|||
} |
|||
|
|||
void lv_clear_fan() { lv_obj_del(scr); } |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,35 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { /* C-declarations for C++ */ |
|||
#endif |
|||
|
|||
extern void lv_draw_fan(void); |
|||
extern void lv_clear_fan(); |
|||
extern void disp_fan_value(); |
|||
|
|||
//extern void disp_temp_ready_print();
|
|||
#ifdef __cplusplus |
|||
} /* C-declarations for C++ */ |
|||
#endif |
@ -0,0 +1,283 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
#include "draw_ready_print.h" |
|||
#include "draw_set.h" |
|||
#include "lv_conf.h" |
|||
//#include "../lvgl/src/lv_objx/lv_imgbtn.h"
|
|||
//#include "../lvgl/src/lv_objx/lv_img.h"
|
|||
//#include "../lvgl/src/lv_core/lv_disp.h"
|
|||
//#include "../lvgl/src/lv_core/lv_refr.h"
|
|||
#include "draw_ui.h" |
|||
#include "../../../../gcode/queue.h" |
|||
|
|||
static lv_obj_t * scr; |
|||
|
|||
#define ID_H_ALL 1 |
|||
#define ID_H_X 2 |
|||
#define ID_H_Y 3 |
|||
#define ID_H_Z 4 |
|||
#define ID_H_RETURN 5 |
|||
#define ID_H_OFF_ALL 6 |
|||
#define ID_H_OFF_XY 7 |
|||
|
|||
static void event_handler(lv_obj_t * obj, lv_event_t event) { |
|||
switch (obj->mks_obj_id) { |
|||
case ID_H_ALL: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
|
|||
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
queue.inject_P(PSTR("G28")); |
|||
} |
|||
break; |
|||
case ID_H_X: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
|
|||
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
queue.inject_P(PSTR("G28 X0")); |
|||
} |
|||
break; |
|||
case ID_H_Y: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
|
|||
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
queue.inject_P(PSTR("G28 Y0")); |
|||
} |
|||
break; |
|||
case ID_H_Z: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
|
|||
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
queue.inject_P(PSTR("G28 Z0")); |
|||
} |
|||
break; |
|||
case ID_H_OFF_ALL: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
|
|||
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
queue.inject_P(PSTR("M84")); |
|||
} |
|||
break; |
|||
case ID_H_OFF_XY: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
|
|||
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
queue.inject_P(PSTR("M84 X Y")); |
|||
} |
|||
break; |
|||
case ID_H_RETURN: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
lv_obj_del(scr); |
|||
lv_draw_tool(); |
|||
} |
|||
break; |
|||
|
|||
} |
|||
} |
|||
|
|||
|
|||
void lv_draw_home(void) { |
|||
lv_obj_t *buttonHomeAll, *buttonHomeX, *buttonHomeY, *buttonHomeZ; |
|||
lv_obj_t *buttonBack; |
|||
lv_obj_t *buttonOffAll, *buttonOffXY; |
|||
|
|||
if (disp_state_stack._disp_state[disp_state_stack._disp_index] != ZERO_UI) { |
|||
disp_state_stack._disp_index++; |
|||
disp_state_stack._disp_state[disp_state_stack._disp_index] = ZERO_UI; |
|||
} |
|||
disp_state = ZERO_UI; |
|||
|
|||
scr = lv_obj_create(NULL, NULL); |
|||
|
|||
//static lv_style_t tool_style;
|
|||
|
|||
lv_obj_set_style(scr, &tft_style_scr); |
|||
lv_scr_load(scr); |
|||
lv_obj_clean(scr); |
|||
|
|||
lv_obj_t * title = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(title, &tft_style_lable_rel); |
|||
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS); |
|||
lv_label_set_text(title, creat_title_text()); |
|||
|
|||
lv_refr_now(lv_refr_get_disp_refreshing()); |
|||
|
|||
LV_IMG_DECLARE(bmp_pic); |
|||
|
|||
/*Create an Image button*/ |
|||
//buttonWifi = lv_imgbtn_create(scr, NULL);
|
|||
buttonHomeAll = lv_imgbtn_create(scr, NULL); |
|||
buttonHomeX = lv_imgbtn_create(scr, NULL); |
|||
//buttonContinue = lv_imgbtn_create(scr, NULL);
|
|||
buttonHomeY = lv_imgbtn_create(scr, NULL); |
|||
buttonHomeZ = lv_imgbtn_create(scr, NULL); |
|||
buttonBack = lv_imgbtn_create(scr, NULL); |
|||
buttonOffAll = lv_imgbtn_create(scr, NULL); |
|||
buttonOffXY = lv_imgbtn_create(scr, NULL); |
|||
|
|||
//lv_obj_set_event_cb_mks(buttonWifi, event_handler,ID_S_WIFI,"bmp_Wifi.bin",0);
|
|||
//lv_imgbtn_set_src(buttonWifi, LV_BTN_STATE_REL, &bmp_pic);
|
|||
//lv_imgbtn_set_src(buttonWifi, LV_BTN_STATE_PR, &bmp_pic);
|
|||
//lv_imgbtn_set_style(buttonWifi, LV_BTN_STATE_PR, &tft_style_lable_pre);
|
|||
//lv_imgbtn_set_style(buttonWifi, LV_BTN_STATE_REL, &tft_style_lable_rel);
|
|||
//lv_obj_clear_protect(buttonWifi, LV_PROTECT_FOLLOW);
|
|||
#if 1 |
|||
lv_obj_set_event_cb_mks(buttonHomeAll, event_handler, ID_H_ALL, "bmp_Zero.bin", 0); |
|||
lv_imgbtn_set_src(buttonHomeAll, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonHomeAll, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonHomeAll, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonHomeAll, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonHomeX, event_handler, ID_H_X, "bmp_zeroX.bin", 0); |
|||
lv_imgbtn_set_src(buttonHomeX, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonHomeX, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonHomeX, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonHomeX, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
//lv_obj_set_event_cb_mks(buttonContinue, event_handler,ID_S_CONTINUE,"bmp_Breakpoint.bin",0);
|
|||
//lv_imgbtn_set_src(buttonContinue, LV_BTN_STATE_REL, &bmp_pic);
|
|||
//lv_imgbtn_set_src(buttonContinue, LV_BTN_STATE_PR, &bmp_pic);
|
|||
//lv_imgbtn_set_style(buttonContinue, LV_BTN_STATE_PR, &tft_style_lable_pre);
|
|||
//lv_imgbtn_set_style(buttonContinue, LV_BTN_STATE_REL, &tft_style_lable_rel);
|
|||
|
|||
lv_obj_set_event_cb_mks(buttonHomeY, event_handler, ID_H_Y, "bmp_zeroY.bin", 0); |
|||
lv_imgbtn_set_src(buttonHomeY, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonHomeY, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonHomeY, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonHomeY, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonHomeZ, event_handler, ID_H_Z, "bmp_zeroZ.bin", 0); |
|||
lv_imgbtn_set_src(buttonHomeZ, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonHomeZ, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonHomeZ, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonHomeZ, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonOffAll, event_handler, ID_H_OFF_ALL, "bmp_Motor_off.bin", 0); |
|||
lv_imgbtn_set_src(buttonOffAll, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonOffAll, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonOffAll, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonOffAll, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonOffXY, event_handler, ID_H_OFF_XY, "bmp_Motor_off.bin", 0); |
|||
lv_imgbtn_set_src(buttonOffXY, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonOffXY, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonOffXY, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonOffXY, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_H_RETURN, "bmp_Return.bin", 0); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
#endif |
|||
/*lv_obj_set_pos(buttonWifi,INTERVAL_V,titleHeight);
|
|||
lv_obj_set_pos(buttonFan,BTN_X_PIXEL+INTERVAL_V*2,titleHeight); |
|||
lv_obj_set_pos(buttonAbout,BTN_X_PIXEL*2+INTERVAL_V*3,titleHeight); |
|||
lv_obj_set_pos(buttonContinue,BTN_X_PIXEL*3+INTERVAL_V*4,titleHeight); |
|||
lv_obj_set_pos(buMotorOff,INTERVAL_V, BTN_Y_PIXEL+INTERVAL_H+titleHeight); |
|||
lv_obj_set_pos(buttonLanguage,BTN_X_PIXEL+INTERVAL_V*2,BTN_Y_PIXEL+INTERVAL_H+titleHeight); |
|||
lv_obj_set_pos(buttonBack,BTN_X_PIXEL*3+INTERVAL_V*4, BTN_Y_PIXEL+INTERVAL_H+titleHeight);*/ |
|||
|
|||
//lv_obj_set_pos(buttonWifi,INTERVAL_V,titleHeight);
|
|||
lv_obj_set_pos(buttonHomeX, BTN_X_PIXEL + INTERVAL_V * 2, titleHeight); |
|||
lv_obj_set_pos(buttonHomeY, BTN_X_PIXEL * 2 + INTERVAL_V * 3, titleHeight); |
|||
//lv_obj_set_pos(buttonContinue,BTN_X_PIXEL*3+INTERVAL_V*4,titleHeight);
|
|||
lv_obj_set_pos(buttonHomeZ, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight); |
|||
lv_obj_set_pos(buttonHomeAll, INTERVAL_V, titleHeight); |
|||
lv_obj_set_pos(buttonOffAll, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_obj_set_pos(buttonOffXY, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
|
|||
/*Create a label on the Image button*/ |
|||
//lv_btn_set_layout(buttonWifi, LV_LAYOUT_OFF);
|
|||
lv_btn_set_layout(buttonHomeAll, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonHomeX, LV_LAYOUT_OFF); |
|||
//lv_btn_set_layout(buttonContinue, LV_LAYOUT_OFF);
|
|||
lv_btn_set_layout(buttonHomeY, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonHomeZ, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonOffAll, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonOffXY, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF); |
|||
|
|||
//lv_obj_t * labelWifi= lv_label_create(buttonWifi, NULL);
|
|||
lv_obj_t * labelHomeAll = lv_label_create(buttonHomeAll, NULL); |
|||
lv_obj_t * labelHomeX = lv_label_create(buttonHomeX, NULL); |
|||
//lv_obj_t * label_Continue = lv_label_create(buttonContinue, NULL);
|
|||
lv_obj_t * labelHomeY = lv_label_create(buttonHomeY, NULL); |
|||
lv_obj_t * labelHomeZ = lv_label_create(buttonHomeZ, NULL); |
|||
lv_obj_t * labelOffAll = lv_label_create(buttonOffAll, NULL); |
|||
lv_obj_t * labelOffXY = lv_label_create(buttonOffXY, NULL); |
|||
lv_obj_t * label_Back = lv_label_create(buttonBack, NULL); |
|||
|
|||
|
|||
if (gCfgItems.multiple_language != 0) { |
|||
//lv_label_set_text(labelWifi, set_menu.wifi);
|
|||
//lv_obj_align(labelWifi, buttonWifi, LV_ALIGN_IN_BOTTOM_MID,0, BUTTON_TEXT_Y_OFFSET);
|
|||
|
|||
lv_label_set_text(labelHomeAll, home_menu.home_all); |
|||
lv_obj_align(labelHomeAll, buttonHomeAll, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(labelHomeX, home_menu.home_x); |
|||
lv_obj_align(labelHomeX, buttonHomeX, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
//lv_label_set_text(label_Continue, set_menu.breakpoint);
|
|||
//lv_obj_align(label_Continue, buttonContinue, LV_ALIGN_IN_BOTTOM_MID,0, BUTTON_TEXT_Y_OFFSET);
|
|||
|
|||
lv_label_set_text(labelHomeY, home_menu.home_y); |
|||
lv_obj_align(labelHomeY, buttonHomeY, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(labelHomeZ, home_menu.home_z); |
|||
lv_obj_align(labelHomeZ, buttonHomeZ, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(labelOffAll, set_menu.motoroff); |
|||
lv_obj_align(labelOffAll, buttonOffAll, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(labelOffXY, set_menu.motoroffXY); |
|||
lv_obj_align(labelOffXY, buttonOffXY, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_Back, common_menu.text_back); |
|||
lv_obj_align(label_Back, buttonBack, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
} |
|||
|
|||
void lv_clear_home() { lv_obj_del(scr); } |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,34 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { /* C-declarations for C++ */ |
|||
#endif |
|||
|
|||
extern void lv_draw_home(void); |
|||
extern void lv_clear_home(); |
|||
|
|||
//extern void disp_temp_ready_print();
|
|||
#ifdef __cplusplus |
|||
} /* C-declarations for C++ */ |
|||
#endif |
@ -0,0 +1,370 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include "lv_conf.h" |
|||
#include "draw_ui.h" |
|||
//#include "../lvgl/src/lv_objx/lv_imgbtn.h"
|
|||
//#include "../lvgl/src/lv_objx/lv_img.h"
|
|||
//#include "../lvgl/src/lv_core/lv_disp.h"
|
|||
//#include "../lvgl/src/lv_core/lv_refr.h"
|
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
#include <string.h> |
|||
|
|||
//static lv_obj_t *buttonMoveZ,*buttonTest,*buttonZ0,*buttonStop,*buttonReturn;
|
|||
|
|||
#define ID_CN 1 |
|||
#define ID_T_CN 2 |
|||
#define ID_EN 3 |
|||
#define ID_RU 4 |
|||
#define ID_ES 5 |
|||
#define ID_FR 6 |
|||
#define ID_IT 7 |
|||
#define ID_L_RETURN 8 |
|||
|
|||
#define SELECTED 1 |
|||
#define UNSELECTED 0 |
|||
|
|||
static void disp_language(uint8_t language, uint8_t state); |
|||
|
|||
static lv_obj_t * scr; |
|||
static lv_obj_t *buttonCN, *buttonT_CN, *buttonEN, *buttonRU; |
|||
static lv_obj_t *buttonES, *buttonFR, *buttonIT, *buttonBack; |
|||
|
|||
static void event_handler(lv_obj_t * obj, lv_event_t event) { |
|||
switch (obj->mks_obj_id) { |
|||
case ID_CN: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
disp_language(gCfgItems.language, UNSELECTED); |
|||
lv_obj_set_event_cb_mks(buttonCN, event_handler, ID_CN, "bmp_Simple_cn_sel.bin", 0); |
|||
gCfgItems.language = LANG_SIMPLE_CHINESE; |
|||
gCfg_to_spiFlah(); |
|||
disp_language_init(); |
|||
} |
|||
break; |
|||
case ID_T_CN: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
disp_language(gCfgItems.language, UNSELECTED); |
|||
lv_obj_set_event_cb_mks(buttonT_CN, event_handler, ID_T_CN, "bmp_Tradition_cn_sel.bin", 0); |
|||
gCfgItems.language = LANG_COMPLEX_CHINESE; |
|||
gCfg_to_spiFlah(); |
|||
disp_language_init(); |
|||
} |
|||
break; |
|||
case ID_EN: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
disp_language(gCfgItems.language, UNSELECTED); |
|||
lv_obj_set_event_cb_mks(buttonEN, event_handler, ID_EN, "bmp_English_sel.bin", 0); |
|||
gCfgItems.language = LANG_ENGLISH; |
|||
gCfg_to_spiFlah(); |
|||
disp_language_init(); |
|||
} |
|||
break; |
|||
case ID_RU: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
disp_language(gCfgItems.language, UNSELECTED); |
|||
lv_obj_set_event_cb_mks(buttonRU, event_handler, ID_RU, "bmp_Russian_sel.bin", 0); |
|||
gCfgItems.language = LANG_RUSSIAN; |
|||
gCfg_to_spiFlah(); |
|||
disp_language_init(); |
|||
} |
|||
break; |
|||
case ID_ES: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
disp_language(gCfgItems.language, UNSELECTED); |
|||
lv_obj_set_event_cb_mks(buttonES, event_handler, ID_ES, "bmp_Spanish_sel.bin", 0); |
|||
gCfgItems.language = LANG_SPANISH; |
|||
gCfg_to_spiFlah(); |
|||
disp_language_init(); |
|||
} |
|||
break; |
|||
case ID_FR: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
disp_language(gCfgItems.language, UNSELECTED); |
|||
lv_obj_set_event_cb_mks(buttonFR, event_handler, ID_FR, "bmp_French_sel.bin", 0); |
|||
gCfgItems.language = LANG_FRENCH; |
|||
gCfg_to_spiFlah(); |
|||
disp_language_init(); |
|||
} |
|||
break; |
|||
case ID_IT: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
disp_language(gCfgItems.language, UNSELECTED); |
|||
lv_obj_set_event_cb_mks(buttonIT, event_handler, ID_FR, "bmp_Italy_sel.bin", 0); |
|||
gCfgItems.language = LANG_ITALY; |
|||
gCfg_to_spiFlah(); |
|||
disp_language_init(); |
|||
} |
|||
break; |
|||
case ID_L_RETURN: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
|
|||
buttonCN = NULL; |
|||
buttonT_CN = NULL; |
|||
buttonEN = NULL; |
|||
buttonRU = NULL; |
|||
buttonES = NULL; |
|||
buttonFR = NULL; |
|||
buttonFR = NULL; |
|||
buttonIT = NULL; |
|||
buttonBack = NULL; |
|||
|
|||
lv_obj_del(scr); |
|||
lv_draw_set(); |
|||
} |
|||
break; |
|||
|
|||
} |
|||
} |
|||
|
|||
static void disp_language(uint8_t language, uint8_t state) { |
|||
uint16_t id; |
|||
lv_obj_t *obj; |
|||
|
|||
public_buf_l[0] = '\0'; |
|||
|
|||
switch (language) { |
|||
|
|||
case LANG_SIMPLE_CHINESE: |
|||
id = ID_CN; |
|||
strcat(public_buf_l, "bmp_Simple_cn"); |
|||
obj = buttonCN; |
|||
|
|||
break; |
|||
case LANG_COMPLEX_CHINESE: |
|||
id = ID_T_CN; |
|||
strcat(public_buf_l, "bmp_Tradition_cn"); |
|||
obj = buttonT_CN; |
|||
break; |
|||
case LANG_ENGLISH: |
|||
id = ID_EN; |
|||
strcat(public_buf_l, "bmp_English"); |
|||
obj = buttonEN; |
|||
break; |
|||
case LANG_RUSSIAN: |
|||
id = ID_RU; |
|||
strcat(public_buf_l, "bmp_Russian"); |
|||
obj = buttonRU; |
|||
break; |
|||
case LANG_SPANISH: |
|||
id = ID_ES; |
|||
strcat(public_buf_l, "bmp_Spanish"); |
|||
obj = buttonES; |
|||
break; |
|||
case LANG_FRENCH: |
|||
id = ID_FR; |
|||
strcat(public_buf_l, "bmp_French"); |
|||
obj = buttonFR; |
|||
break; |
|||
case LANG_ITALY: |
|||
id = ID_IT; |
|||
strcat(public_buf_l, "bmp_Italy"); |
|||
obj = buttonIT; |
|||
break; |
|||
default: |
|||
id = ID_CN; |
|||
strcat(public_buf_l, "bmp_Simple_cn"); |
|||
obj = buttonCN; |
|||
break; |
|||
} |
|||
|
|||
if (state == SELECTED) strcat(public_buf_l, "_sel.bin"); |
|||
else strcat(public_buf_l, ".bin"); |
|||
|
|||
lv_obj_set_event_cb_mks(obj, event_handler, id, public_buf_l, 0); |
|||
|
|||
if (state == UNSELECTED) lv_obj_refresh_ext_draw_pad(obj); |
|||
} |
|||
|
|||
void lv_draw_language(void) { |
|||
|
|||
if (disp_state_stack._disp_state[disp_state_stack._disp_index] != LANGUAGE_UI) { |
|||
disp_state_stack._disp_index++; |
|||
disp_state_stack._disp_state[disp_state_stack._disp_index] = LANGUAGE_UI; |
|||
} |
|||
disp_state = LANGUAGE_UI; |
|||
|
|||
scr = lv_obj_create(NULL, NULL); |
|||
|
|||
//static lv_style_t tool_style;
|
|||
|
|||
lv_obj_set_style(scr, &tft_style_scr); |
|||
lv_scr_load(scr); |
|||
lv_obj_clean(scr); |
|||
|
|||
lv_obj_t * title = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(title, &tft_style_lable_rel); |
|||
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS); |
|||
lv_label_set_text(title, creat_title_text()); |
|||
|
|||
lv_refr_now(lv_refr_get_disp_refreshing()); |
|||
|
|||
LV_IMG_DECLARE(bmp_pic); |
|||
|
|||
/*Create an Image button*/ |
|||
buttonCN = lv_imgbtn_create(scr, NULL); |
|||
buttonT_CN = lv_imgbtn_create(scr, NULL); |
|||
buttonEN = lv_imgbtn_create(scr, NULL); |
|||
buttonRU = lv_imgbtn_create(scr, NULL); |
|||
buttonES = lv_imgbtn_create(scr, NULL); |
|||
buttonFR = lv_imgbtn_create(scr, NULL); |
|||
buttonIT = lv_imgbtn_create(scr, NULL); |
|||
buttonBack = lv_imgbtn_create(scr, NULL); |
|||
|
|||
|
|||
lv_obj_set_event_cb_mks(buttonCN, event_handler, ID_CN, "bmp_Simple_cn.bin", 0); |
|||
lv_imgbtn_set_src(buttonCN, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonCN, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonCN, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonCN, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
lv_obj_clear_protect(buttonCN, LV_PROTECT_FOLLOW); |
|||
#if 1 |
|||
lv_obj_set_event_cb_mks(buttonT_CN, event_handler, ID_T_CN, "bmp_Tradition_cn.bin", 0); |
|||
lv_imgbtn_set_src(buttonT_CN, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonT_CN, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonT_CN, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonT_CN, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonEN, event_handler, ID_EN, "bmp_English.bin", 0); |
|||
lv_imgbtn_set_src(buttonEN, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonEN, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonEN, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonEN, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonRU, event_handler, ID_RU, "bmp_Russian.bin", 0); |
|||
lv_imgbtn_set_src(buttonRU, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonRU, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonRU, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonRU, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonES, event_handler, ID_ES, "bmp_Spanish.bin", 0); |
|||
lv_imgbtn_set_src(buttonES, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonES, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonES, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonES, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonFR, event_handler, ID_FR, "bmp_French.bin", 0); |
|||
lv_imgbtn_set_src(buttonFR, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonFR, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonFR, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonFR, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonIT, event_handler, ID_IT, "bmp_Italy.bin", 0); |
|||
lv_imgbtn_set_src(buttonIT, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonIT, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonIT, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonIT, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_L_RETURN, "bmp_Return.bin", 0); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
#endif |
|||
|
|||
lv_obj_set_pos(buttonCN, INTERVAL_V, titleHeight); |
|||
lv_obj_set_pos(buttonT_CN, BTN_X_PIXEL + INTERVAL_V * 2, titleHeight); |
|||
lv_obj_set_pos(buttonEN, BTN_X_PIXEL * 2 + INTERVAL_V * 3, titleHeight); |
|||
lv_obj_set_pos(buttonRU, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight); |
|||
lv_obj_set_pos(buttonES, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_obj_set_pos(buttonFR, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_obj_set_pos(buttonIT, BTN_X_PIXEL * 2 + INTERVAL_V * 3, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
|
|||
/*Create a label on the Image button*/ |
|||
lv_btn_set_layout(buttonCN, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonT_CN, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonEN, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonRU, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonES, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonFR, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonIT, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF); |
|||
|
|||
lv_obj_t * label_CN = lv_label_create(buttonCN, NULL); |
|||
lv_obj_t * label_T_CN = lv_label_create(buttonT_CN, NULL); |
|||
lv_obj_t * label_EN = lv_label_create(buttonEN, NULL); |
|||
lv_obj_t * label_RU = lv_label_create(buttonRU, NULL); |
|||
lv_obj_t * label_ES = lv_label_create(buttonES, NULL); |
|||
lv_obj_t * label_FR = lv_label_create(buttonFR, NULL); |
|||
lv_obj_t * label_IT = lv_label_create(buttonIT, NULL); |
|||
lv_obj_t * label_Back = lv_label_create(buttonBack, NULL); |
|||
|
|||
disp_language(gCfgItems.language, SELECTED); |
|||
|
|||
if (gCfgItems.multiple_language != 0) { |
|||
lv_label_set_text(label_CN, language_menu.chinese_s); |
|||
lv_obj_align(label_CN, buttonCN, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_T_CN, language_menu.chinese_t); |
|||
lv_obj_align(label_T_CN, buttonT_CN, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_EN, language_menu.english); |
|||
lv_obj_align(label_EN, buttonEN, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_RU, language_menu.russian); |
|||
lv_obj_align(label_RU, buttonRU, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_ES, language_menu.spanish); |
|||
lv_obj_align(label_ES, buttonES, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_FR, language_menu.french); |
|||
lv_obj_align(label_FR, buttonFR, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_IT, language_menu.italy); |
|||
lv_obj_align(label_IT, buttonIT, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_Back, common_menu.text_back); |
|||
lv_obj_align(label_Back, buttonBack, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
} |
|||
|
|||
void lv_clear_language() { lv_obj_del(scr); } |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,34 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { /* C-declarations for C++ */ |
|||
#endif |
|||
|
|||
extern void lv_draw_language(void); |
|||
extern void lv_clear_language(); |
|||
|
|||
//extern void disp_temp_ready_print();
|
|||
#ifdef __cplusplus |
|||
} /* C-declarations for C++ */ |
|||
#endif |
@ -0,0 +1,284 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
#include "lv_conf.h" |
|||
//#include "../lvgl/src/lv_objx/lv_imgbtn.h"
|
|||
//#include "../lvgl/src/lv_objx/lv_img.h"
|
|||
//#include "../lvgl/src/lv_core/lv_disp.h"
|
|||
//#include "../lvgl/src/lv_core/lv_refr.h"
|
|||
#include "draw_ui.h" |
|||
#include "../../../../gcode/queue.h" |
|||
|
|||
//static lv_obj_t *buttonMoveZ,*buttonTest,*buttonZ0,*buttonStop,*buttonReturn;
|
|||
static lv_obj_t * scr; |
|||
|
|||
#define ID_M_POINT1 1 |
|||
#define ID_M_POINT2 2 |
|||
#define ID_M_POINT3 3 |
|||
#define ID_M_POINT4 4 |
|||
#define ID_M_POINT5 5 |
|||
|
|||
#define ID_MANUAL_RETURN 6 |
|||
|
|||
static void event_handler(lv_obj_t * obj, lv_event_t event) { |
|||
switch (obj->mks_obj_id) { |
|||
case ID_M_POINT1: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
|
|||
if (queue.length == 0) { |
|||
if (uiCfg.leveling_first_time) { |
|||
queue.enqueue_one_P(PSTR("G28")); |
|||
uiCfg.leveling_first_time = 0; |
|||
} |
|||
|
|||
queue.enqueue_one_P(PSTR("G1 Z10")); |
|||
|
|||
memset(public_buf_l, 0, sizeof(public_buf_l)); |
|||
sprintf(public_buf_l, "G1 X%d Y%d", X_MIN_POS + 30, Y_MIN_POS + 30); |
|||
queue.enqueue_one_P(PSTR(public_buf_l)); |
|||
queue.enqueue_one_P(PSTR("G1 Z0")); |
|||
} |
|||
} |
|||
break; |
|||
case ID_M_POINT2: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (queue.length == 0) { |
|||
if (uiCfg.leveling_first_time) { |
|||
queue.enqueue_one_P(PSTR("G28")); |
|||
uiCfg.leveling_first_time = 0; |
|||
} |
|||
|
|||
queue.enqueue_one_P(PSTR("G1 Z10")); |
|||
|
|||
memset(public_buf_l, 0, sizeof(public_buf_l)); |
|||
sprintf(public_buf_l, "G1 X%d Y%d", X_MAX_POS - 30, Y_MIN_POS + 30); |
|||
queue.enqueue_one_P(PSTR(public_buf_l)); |
|||
queue.enqueue_one_P(PSTR("G1 Z0")); |
|||
} |
|||
} |
|||
break; |
|||
case ID_M_POINT3: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (queue.length == 0) { |
|||
if (uiCfg.leveling_first_time) { |
|||
queue.enqueue_one_P(PSTR("G28")); |
|||
uiCfg.leveling_first_time = 0; |
|||
} |
|||
|
|||
queue.enqueue_one_P(PSTR("G1 Z10")); |
|||
|
|||
memset(public_buf_l, 0, sizeof(public_buf_l)); |
|||
sprintf(public_buf_l, "G1 X%d Y%d", X_MAX_POS - 30, Y_MAX_POS - 30); |
|||
queue.enqueue_one_P(PSTR(public_buf_l)); |
|||
queue.enqueue_one_P(PSTR("G1 Z0")); |
|||
} |
|||
} |
|||
|
|||
break; |
|||
case ID_M_POINT4: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (queue.length == 0) { |
|||
if (uiCfg.leveling_first_time) { |
|||
queue.enqueue_one_P(PSTR("G28")); |
|||
uiCfg.leveling_first_time = 0; |
|||
} |
|||
|
|||
queue.enqueue_one_P(PSTR("G1 Z10")); |
|||
|
|||
memset(public_buf_l, 0, sizeof(public_buf_l)); |
|||
sprintf(public_buf_l, "G1 X%d Y%d", X_MIN_POS + 30, Y_MAX_POS - 30); |
|||
queue.enqueue_one_P(PSTR(public_buf_l)); |
|||
queue.enqueue_one_P(PSTR("G1 Z0")); |
|||
} |
|||
} |
|||
break; |
|||
case ID_M_POINT5: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (queue.length == 0) { |
|||
if (uiCfg.leveling_first_time) { |
|||
queue.enqueue_one_P(PSTR("G28")); |
|||
uiCfg.leveling_first_time = 0; |
|||
} |
|||
|
|||
queue.enqueue_one_P(PSTR("G1 Z10")); |
|||
|
|||
memset(public_buf_l, 0, sizeof(public_buf_l)); |
|||
sprintf(public_buf_l, "G1 X%d Y%d", X_BED_SIZE / 2, Y_BED_SIZE / 2); |
|||
queue.enqueue_one_P(PSTR(public_buf_l)); |
|||
queue.enqueue_one_P(PSTR("G1 Z0")); |
|||
} |
|||
} |
|||
|
|||
break; |
|||
case ID_MANUAL_RETURN: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
lv_clear_manualLevel(); |
|||
lv_draw_tool(); |
|||
} |
|||
break; |
|||
|
|||
} |
|||
} |
|||
|
|||
|
|||
void lv_draw_manualLevel(void) { |
|||
lv_obj_t *buttonPoint1, *buttonPoint2, *buttonPoint3, *buttonPoint4, *buttonPoint5; |
|||
lv_obj_t *buttonBack; |
|||
|
|||
if (disp_state_stack._disp_state[disp_state_stack._disp_index] != LEVELING_UI) { |
|||
disp_state_stack._disp_index++; |
|||
disp_state_stack._disp_state[disp_state_stack._disp_index] = LEVELING_UI; |
|||
} |
|||
disp_state = LEVELING_UI; |
|||
|
|||
scr = lv_obj_create(NULL, NULL); |
|||
|
|||
//static lv_style_t tool_style;
|
|||
|
|||
lv_obj_set_style(scr, &tft_style_scr); |
|||
lv_scr_load(scr); |
|||
lv_obj_clean(scr); |
|||
|
|||
lv_obj_t * title = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(title, &tft_style_lable_rel); |
|||
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS); |
|||
lv_label_set_text(title, creat_title_text()); |
|||
|
|||
lv_refr_now(lv_refr_get_disp_refreshing()); |
|||
|
|||
LV_IMG_DECLARE(bmp_pic); |
|||
|
|||
/*Create an Image button*/ |
|||
buttonPoint1 = lv_imgbtn_create(scr, NULL); |
|||
buttonPoint2 = lv_imgbtn_create(scr, NULL); |
|||
buttonPoint3 = lv_imgbtn_create(scr, NULL); |
|||
buttonPoint4 = lv_imgbtn_create(scr, NULL); |
|||
buttonPoint5 = lv_imgbtn_create(scr, NULL); |
|||
buttonBack = lv_imgbtn_create(scr, NULL); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonPoint1, event_handler, ID_M_POINT1, "bmp_Leveling1.bin", 0); |
|||
lv_imgbtn_set_src(buttonPoint1, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonPoint1, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonPoint1, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonPoint1, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
lv_obj_clear_protect(buttonPoint1, LV_PROTECT_FOLLOW); |
|||
#if 1 |
|||
lv_obj_set_event_cb_mks(buttonPoint2, event_handler, ID_M_POINT2, "bmp_Leveling2.bin", 0); |
|||
lv_imgbtn_set_src(buttonPoint2, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonPoint2, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonPoint2, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonPoint2, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonPoint3, event_handler, ID_M_POINT3, "bmp_Leveling3.bin", 0); |
|||
lv_imgbtn_set_src(buttonPoint3, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonPoint3, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonPoint3, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonPoint3, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonPoint4, event_handler, ID_M_POINT4, "bmp_Leveling4.bin", 0); |
|||
lv_imgbtn_set_src(buttonPoint4, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonPoint4, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonPoint4, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonPoint4, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonPoint5, event_handler, ID_M_POINT5, "bmp_Leveling5.bin", 0); |
|||
lv_imgbtn_set_src(buttonPoint5, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonPoint5, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonPoint5, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonPoint5, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_MANUAL_RETURN, "bmp_Return.bin", 0); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
#endif |
|||
|
|||
lv_obj_set_pos(buttonPoint1, INTERVAL_V, titleHeight); |
|||
lv_obj_set_pos(buttonPoint2, BTN_X_PIXEL + INTERVAL_V * 2, titleHeight); |
|||
lv_obj_set_pos(buttonPoint3, BTN_X_PIXEL * 2 + INTERVAL_V * 3, titleHeight); |
|||
lv_obj_set_pos(buttonPoint4, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight); |
|||
lv_obj_set_pos(buttonPoint5, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
|
|||
/*Create a label on the Image button*/ |
|||
lv_btn_set_layout(buttonPoint1, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonPoint2, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonPoint3, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonPoint4, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonPoint5, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF); |
|||
|
|||
lv_obj_t * label_Point1 = lv_label_create(buttonPoint1, NULL); |
|||
lv_obj_t * label_Point2 = lv_label_create(buttonPoint2, NULL); |
|||
lv_obj_t * label_Point3 = lv_label_create(buttonPoint3, NULL); |
|||
lv_obj_t * label_Point4 = lv_label_create(buttonPoint4, NULL); |
|||
lv_obj_t * label_Point5 = lv_label_create(buttonPoint5, NULL); |
|||
lv_obj_t * label_Back = lv_label_create(buttonBack, NULL); |
|||
|
|||
|
|||
if (gCfgItems.multiple_language != 0) { |
|||
lv_label_set_text(label_Point1, leveling_menu.position1); |
|||
lv_obj_align(label_Point1, buttonPoint1, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_Point2, leveling_menu.position2); |
|||
lv_obj_align(label_Point2, buttonPoint2, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_Point3, leveling_menu.position3); |
|||
lv_obj_align(label_Point3, buttonPoint3, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_Point4, leveling_menu.position4); |
|||
lv_obj_align(label_Point4, buttonPoint4, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_Point5, leveling_menu.position5); |
|||
lv_obj_align(label_Point5, buttonPoint5, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_Back, common_menu.text_back); |
|||
lv_obj_align(label_Back, buttonBack, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
} |
|||
|
|||
void lv_clear_manualLevel() { lv_obj_del(scr); } |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,34 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { /* C-declarations for C++ */ |
|||
#endif |
|||
|
|||
extern void lv_draw_manualLevel(void); |
|||
extern void lv_clear_manualLevel(); |
|||
|
|||
//extern void disp_temp_ready_print();
|
|||
#ifdef __cplusplus |
|||
} /* C-declarations for C++ */ |
|||
#endif |
@ -0,0 +1,329 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
#include "lv_conf.h" |
|||
//#include "../lvgl/src/lv_objx/lv_imgbtn.h"
|
|||
//#include "../lvgl/src/lv_objx/lv_img.h"
|
|||
//#include "../lvgl/src/lv_core/lv_disp.h"
|
|||
//#include "../lvgl/src/lv_core/lv_refr.h"
|
|||
#include "draw_ui.h" |
|||
#include "../../../../gcode/queue.h" |
|||
|
|||
static lv_obj_t * scr; |
|||
|
|||
static lv_obj_t * labelV, *buttonV; |
|||
|
|||
#define ID_M_X_P 1 |
|||
#define ID_M_X_N 2 |
|||
#define ID_M_Y_P 3 |
|||
#define ID_M_Y_N 4 |
|||
#define ID_M_Z_P 5 |
|||
#define ID_M_Z_N 6 |
|||
#define ID_M_STEP 7 |
|||
#define ID_M_RETURN 8 |
|||
|
|||
static void event_handler(lv_obj_t * obj, lv_event_t event) { |
|||
switch (obj->mks_obj_id) { |
|||
case ID_M_X_P: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (queue.length <= (BUFSIZE - 3)) { |
|||
memset(public_buf_l, 0, sizeof(public_buf_l)); |
|||
queue.enqueue_one_P(PSTR("G91")); |
|||
sprintf(public_buf_l, "G1 X%3.1f F%d", uiCfg.move_dist, uiCfg.moveSpeed); |
|||
queue.enqueue_one_P(PSTR(public_buf_l)); |
|||
queue.enqueue_one_P(PSTR("G90")); |
|||
} |
|||
} |
|||
break; |
|||
case ID_M_X_N: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (queue.length <= (BUFSIZE - 3)) { |
|||
memset(public_buf_l, 0, sizeof(public_buf_l)); |
|||
queue.enqueue_one_now(PSTR("G91")); |
|||
sprintf(public_buf_l, "G1 X-%3.1f F%d", uiCfg.move_dist, uiCfg.moveSpeed); |
|||
queue.enqueue_one_now(PSTR(public_buf_l)); |
|||
queue.enqueue_one_now(PSTR("G90")); |
|||
} |
|||
} |
|||
break; |
|||
case ID_M_Y_P: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (queue.length <= (BUFSIZE - 3)) { |
|||
memset(public_buf_l, 0, sizeof(public_buf_l)); |
|||
queue.enqueue_one_now(PSTR("G91")); |
|||
sprintf(public_buf_l, "G1 Y%3.1f F%d", uiCfg.move_dist, uiCfg.moveSpeed); |
|||
queue.enqueue_one_now(PSTR(public_buf_l)); |
|||
queue.enqueue_one_now(PSTR("G90")); |
|||
} |
|||
} |
|||
break; |
|||
case ID_M_Y_N: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (queue.length <= (BUFSIZE - 3)) { |
|||
memset(public_buf_l, 0, sizeof(public_buf_l)); |
|||
queue.enqueue_one_now(PSTR("G91")); |
|||
sprintf(public_buf_l, "G1 Y-%3.1f F%d", uiCfg.move_dist, uiCfg.moveSpeed); |
|||
queue.enqueue_one_now(PSTR(public_buf_l)); |
|||
queue.enqueue_one_now(PSTR("G90")); |
|||
} |
|||
} |
|||
break; |
|||
case ID_M_Z_P: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (queue.length <= (BUFSIZE - 3)) { |
|||
memset(public_buf_l, 0, sizeof(public_buf_l)); |
|||
queue.enqueue_one_now(PSTR("G91")); |
|||
sprintf(public_buf_l, "G1 Z%3.1f F%d", uiCfg.move_dist, uiCfg.moveSpeed); |
|||
queue.enqueue_one_now(PSTR(public_buf_l)); |
|||
queue.enqueue_one_now(PSTR("G90")); |
|||
} |
|||
} |
|||
break; |
|||
case ID_M_Z_N: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (queue.length <= (BUFSIZE - 3)) { |
|||
memset(public_buf_l, 0, sizeof(public_buf_l)); |
|||
queue.enqueue_one_now(PSTR("G91")); |
|||
sprintf(public_buf_l, "G1 Z-%3.1f F%d", uiCfg.move_dist, uiCfg.moveSpeed); |
|||
queue.enqueue_one_now(PSTR(public_buf_l)); |
|||
queue.enqueue_one_now(PSTR("G90")); |
|||
} |
|||
} |
|||
break; |
|||
case ID_M_STEP: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (abs(10 * (int)uiCfg.move_dist) == 100) |
|||
uiCfg.move_dist = 0.1; |
|||
else |
|||
uiCfg.move_dist *= (float)10; |
|||
|
|||
disp_move_dist(); |
|||
} |
|||
|
|||
break; |
|||
case ID_M_RETURN: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
clear_cur_ui(); |
|||
draw_return_ui(); |
|||
} |
|||
break; |
|||
|
|||
} |
|||
} |
|||
|
|||
|
|||
void lv_draw_move_motor(void) { |
|||
lv_obj_t *buttonXI, *buttonXD, *buttonYI, *buttonYD; |
|||
lv_obj_t *buttonZI, *buttonZD, *buttonBack; |
|||
|
|||
if (disp_state_stack._disp_state[disp_state_stack._disp_index] != MOVE_MOTOR_UI) { |
|||
disp_state_stack._disp_index++; |
|||
disp_state_stack._disp_state[disp_state_stack._disp_index] = MOVE_MOTOR_UI; |
|||
} |
|||
disp_state = MOVE_MOTOR_UI; |
|||
|
|||
scr = lv_obj_create(NULL, NULL); |
|||
|
|||
lv_obj_set_style(scr, &tft_style_scr); |
|||
lv_scr_load(scr); |
|||
lv_obj_clean(scr); |
|||
|
|||
lv_obj_t * title = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(title, &tft_style_lable_rel); |
|||
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS); |
|||
lv_label_set_text(title, creat_title_text()); |
|||
|
|||
lv_refr_now(lv_refr_get_disp_refreshing()); |
|||
|
|||
LV_IMG_DECLARE(bmp_pic); |
|||
|
|||
|
|||
/*Create an Image button*/ |
|||
buttonXI = lv_imgbtn_create(scr, NULL); |
|||
buttonXD = lv_imgbtn_create(scr, NULL); |
|||
buttonYI = lv_imgbtn_create(scr, NULL); |
|||
buttonYD = lv_imgbtn_create(scr, NULL); |
|||
buttonZI = lv_imgbtn_create(scr, NULL); |
|||
buttonZD = lv_imgbtn_create(scr, NULL); |
|||
buttonV = lv_imgbtn_create(scr, NULL); |
|||
buttonBack = lv_imgbtn_create(scr, NULL); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonXI, event_handler, ID_M_X_P, "bmp_xAdd.bin", 0); |
|||
lv_imgbtn_set_src(buttonXI, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonXI, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonXI, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonXI, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
lv_obj_clear_protect(buttonXI, LV_PROTECT_FOLLOW); |
|||
#if 1 |
|||
lv_obj_set_event_cb_mks(buttonXD, event_handler, ID_M_X_N, "bmp_xDec.bin", 0); |
|||
lv_imgbtn_set_src(buttonXD, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonXD, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonXD, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonXD, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonYI, event_handler, ID_M_Y_P, "bmp_yAdd.bin", 0); |
|||
lv_imgbtn_set_src(buttonYI, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonYI, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonYI, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonYI, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonYD, event_handler, ID_M_Y_N, "bmp_yDec.bin", 0); |
|||
lv_imgbtn_set_src(buttonYD, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonYD, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonYD, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonYD, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonZI, event_handler, ID_M_Z_P, "bmp_zAdd.bin", 0); |
|||
lv_imgbtn_set_src(buttonZI, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonZI, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonZI, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonZI, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonZD, event_handler, ID_M_Z_N, "bmp_zDec.bin", 0); |
|||
lv_imgbtn_set_src(buttonZD, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonZD, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonZD, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonZD, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
//lv_obj_set_event_cb_mks(buttonV, event_handler,ID_T_MORE,"bmp_More.bin",0);
|
|||
lv_imgbtn_set_src(buttonV, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonV, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonV, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonV, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_M_RETURN, "bmp_Return.bin", 0); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
#endif |
|||
lv_obj_set_pos(buttonXI, INTERVAL_V, titleHeight); |
|||
lv_obj_set_pos(buttonYI, BTN_X_PIXEL + INTERVAL_V * 2, titleHeight); |
|||
lv_obj_set_pos(buttonZI, BTN_X_PIXEL * 2 + INTERVAL_V * 3, titleHeight); |
|||
lv_obj_set_pos(buttonV, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight); |
|||
lv_obj_set_pos(buttonXD, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_obj_set_pos(buttonYD, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_obj_set_pos(buttonZD, BTN_X_PIXEL * 2 + INTERVAL_V * 3, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
|
|||
/*Create a label on the Image button*/ |
|||
lv_btn_set_layout(buttonXI, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonXD, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonYI, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonYD, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonZI, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonZD, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonV, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF); |
|||
|
|||
lv_obj_t * labelXI = lv_label_create(buttonXI, NULL); |
|||
lv_obj_t * labelXD = lv_label_create(buttonXD, NULL); |
|||
lv_obj_t * labelYI = lv_label_create(buttonYI, NULL); |
|||
lv_obj_t * labelYD = lv_label_create(buttonYD, NULL); |
|||
lv_obj_t * labelZI = lv_label_create(buttonZI, NULL); |
|||
lv_obj_t * labelZD = lv_label_create(buttonZD, NULL); |
|||
labelV = lv_label_create(buttonV, NULL); |
|||
lv_obj_t * label_Back = lv_label_create(buttonBack, NULL); |
|||
|
|||
|
|||
if (gCfgItems.multiple_language != 0) { |
|||
lv_label_set_text(labelXI, move_menu.x_add); |
|||
lv_obj_align(labelXI, buttonXI, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(labelXD, move_menu.x_dec); |
|||
lv_obj_align(labelXD, buttonXD, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(labelYI, move_menu.y_add); |
|||
lv_obj_align(labelYI, buttonYI, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(labelYD, move_menu.y_dec); |
|||
lv_obj_align(labelYD, buttonYD, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(labelZI, move_menu.z_add); |
|||
lv_obj_align(labelZI, buttonZI, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(labelZD, move_menu.z_dec); |
|||
lv_obj_align(labelZD, buttonZD, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_Back, common_menu.text_back); |
|||
lv_obj_align(label_Back, buttonBack, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
|
|||
disp_move_dist(); |
|||
} |
|||
|
|||
void disp_move_dist() { |
|||
//char buf[30] = {0};
|
|||
|
|||
if ((int)(10 * uiCfg.move_dist) == 1) |
|||
lv_obj_set_event_cb_mks(buttonV, event_handler, ID_M_STEP, "bmp_Step_move0_1.bin", 0); |
|||
else if ((int)(10 * uiCfg.move_dist) == 10) |
|||
lv_obj_set_event_cb_mks(buttonV, event_handler, ID_M_STEP, "bmp_Step_move1.bin", 0); |
|||
else if ((int)(10 * uiCfg.move_dist) == 100) |
|||
lv_obj_set_event_cb_mks(buttonV, event_handler, ID_M_STEP, "bmp_Step_move10.bin", 0); |
|||
if (gCfgItems.multiple_language != 0) { |
|||
if ((int)(10 * uiCfg.move_dist) == 1) { |
|||
lv_label_set_text(labelV, move_menu.step_01mm); |
|||
lv_obj_align(labelV, buttonV, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
else if ((int)(10 * uiCfg.move_dist) == 10) { |
|||
lv_label_set_text(labelV, move_menu.step_1mm); |
|||
lv_obj_align(labelV, buttonV, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
else if ((int)(10 * uiCfg.move_dist) == 100) { |
|||
lv_label_set_text(labelV, move_menu.step_10mm); |
|||
lv_obj_align(labelV, buttonV, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
} |
|||
} |
|||
|
|||
void lv_clear_move_motor() { lv_obj_del(scr); } |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,35 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { /* C-declarations for C++ */ |
|||
#endif |
|||
|
|||
extern void lv_draw_move_motor(void); |
|||
extern void lv_clear_move_motor(); |
|||
extern void disp_move_dist(); |
|||
|
|||
//extern void disp_temp_ready_print();
|
|||
#ifdef __cplusplus |
|||
} /* C-declarations for C++ */ |
|||
#endif |
@ -0,0 +1,322 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include "lv_conf.h" |
|||
#include "draw_ui.h" |
|||
//#include "../lvgl/src/lv_objx/lv_imgbtn.h"
|
|||
//#include "../lvgl/src/lv_objx/lv_img.h"
|
|||
//#include "../lvgl/src/lv_core/lv_disp.h"
|
|||
//#include "../lvgl/src/lv_core/lv_refr.h"
|
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
|
|||
static lv_obj_t * scr; |
|||
|
|||
#define ID_O_PRE_HEAT 1 |
|||
#define ID_O_EXTRUCT 2 |
|||
#define ID_O_MOV 3 |
|||
#define ID_O_FILAMENT 4 |
|||
#define ID_O_SPEED 5 |
|||
#define ID_O_RETURN 6 |
|||
#define ID_O_FAN 7 |
|||
#define ID_O_POWER_OFF 8 |
|||
|
|||
static lv_obj_t *label_PowerOff; |
|||
static lv_obj_t *buttonPowerOff; |
|||
|
|||
static void event_handler(lv_obj_t * obj, lv_event_t event) { |
|||
switch (obj->mks_obj_id) { |
|||
case ID_O_PRE_HEAT: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
lv_clear_opration(); |
|||
lv_draw_preHeat(); |
|||
} |
|||
break; |
|||
case ID_O_EXTRUCT: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
lv_clear_opration(); |
|||
lv_draw_extrusion(); |
|||
} |
|||
break; |
|||
case ID_O_MOV: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
lv_clear_opration(); |
|||
lv_draw_move_motor(); |
|||
} |
|||
break; |
|||
case ID_O_FILAMENT: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
} |
|||
break; |
|||
case ID_O_FAN: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
lv_clear_opration(); |
|||
lv_draw_fan(); |
|||
} |
|||
break; |
|||
case ID_O_SPEED: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
lv_clear_opration(); |
|||
lv_draw_change_speed(); |
|||
} |
|||
break; |
|||
case ID_O_RETURN: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
clear_cur_ui(); |
|||
draw_return_ui(); |
|||
} |
|||
break; |
|||
case ID_O_POWER_OFF: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (gCfgItems.finish_power_off == 1) { |
|||
gCfgItems.finish_power_off = 0; |
|||
lv_obj_set_event_cb_mks(obj, event_handler, ID_O_POWER_OFF, "bmp_Mamual.bin", 0); |
|||
lv_label_set_text(label_PowerOff, printing_more_menu.manual); |
|||
lv_obj_align(label_PowerOff, buttonPowerOff, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
lv_obj_refresh_ext_draw_pad(label_PowerOff); |
|||
update_spi_flash(); |
|||
} |
|||
else { |
|||
gCfgItems.finish_power_off = 1; |
|||
lv_obj_set_event_cb_mks(obj, event_handler, ID_O_POWER_OFF, "bmp_Auto.bin", 0); |
|||
lv_label_set_text(label_PowerOff, printing_more_menu.auto_close); |
|||
lv_obj_align(label_PowerOff, buttonPowerOff, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
lv_obj_refresh_ext_draw_pad(label_PowerOff); |
|||
update_spi_flash(); |
|||
} |
|||
} |
|||
break; |
|||
|
|||
} |
|||
} |
|||
|
|||
void lv_draw_opration(void) { |
|||
lv_obj_t *buttonPreHeat, *buttonExtrusion, *buttonSpeed; |
|||
lv_obj_t *buttonBack, *buttonFan; |
|||
lv_obj_t *labelPreHeat, *labelExtrusion; |
|||
lv_obj_t *label_Back, *label_Speed, *label_Fan; |
|||
lv_obj_t *buttonMove = NULL, *label_Move = NULL; |
|||
|
|||
if (disp_state_stack._disp_state[disp_state_stack._disp_index] != OPERATE_UI) { |
|||
disp_state_stack._disp_index++; |
|||
disp_state_stack._disp_state[disp_state_stack._disp_index] = OPERATE_UI; |
|||
} |
|||
disp_state = OPERATE_UI; |
|||
|
|||
scr = lv_obj_create(NULL, NULL); |
|||
|
|||
lv_obj_set_style(scr, &tft_style_scr); |
|||
lv_scr_load(scr); |
|||
lv_obj_clean(scr); |
|||
|
|||
lv_obj_t * title = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(title, &tft_style_lable_rel); |
|||
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS); |
|||
lv_label_set_text(title, creat_title_text()); |
|||
|
|||
lv_refr_now(lv_refr_get_disp_refreshing()); |
|||
|
|||
LV_IMG_DECLARE(bmp_pic); |
|||
|
|||
/*Create an Image button*/ |
|||
buttonPreHeat = lv_imgbtn_create(scr, NULL); |
|||
buttonExtrusion = lv_imgbtn_create(scr, NULL); |
|||
buttonFan = lv_imgbtn_create(scr, NULL); |
|||
buttonSpeed = lv_imgbtn_create(scr, NULL); |
|||
|
|||
if (uiCfg.print_state != WORKING) |
|||
//buttonFilament = lv_imgbtn_create(scr, NULL);
|
|||
//else
|
|||
buttonMove = lv_imgbtn_create(scr, NULL); |
|||
buttonPowerOff = lv_imgbtn_create(scr, NULL); |
|||
buttonBack = lv_imgbtn_create(scr, NULL); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonPreHeat, event_handler, ID_O_PRE_HEAT, "bmp_PreHeat.bin", 0); |
|||
lv_imgbtn_set_src(buttonPreHeat, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonPreHeat, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonPreHeat, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonPreHeat, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
lv_obj_clear_protect(buttonPreHeat, LV_PROTECT_FOLLOW); |
|||
#if 1 |
|||
lv_obj_set_event_cb_mks(buttonExtrusion, event_handler, ID_O_EXTRUCT, "bmp_Extruct.bin", 0); |
|||
lv_imgbtn_set_src(buttonExtrusion, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonExtrusion, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonExtrusion, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonExtrusion, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonFan, event_handler, ID_O_FAN, "bmp_Fan.bin", 0); |
|||
lv_imgbtn_set_src(buttonFan, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonFan, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonFan, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonFan, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonSpeed, event_handler, ID_O_SPEED, "bmp_Speed.bin", 0); |
|||
lv_imgbtn_set_src(buttonSpeed, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonSpeed, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonSpeed, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonSpeed, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
if (uiCfg.print_state != WORKING) { |
|||
/*{
|
|||
lv_obj_set_event_cb_mks(buttonFilament, event_handler,ID_O_FILAMENT,"bmp_Filamentchange.bin",0); |
|||
lv_imgbtn_set_src(buttonFilament, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonFilament, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonFilament, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonFilament, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
} |
|||
else*/ |
|||
lv_obj_set_event_cb_mks(buttonMove, event_handler, ID_O_MOV, "bmp_Mov.bin", 0); |
|||
lv_imgbtn_set_src(buttonMove, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonMove, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonMove, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonMove, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
} |
|||
if (gCfgItems.finish_power_off == 1) |
|||
lv_obj_set_event_cb_mks(buttonPowerOff, event_handler, ID_O_POWER_OFF, "bmp_Auto.bin", 0); |
|||
else |
|||
lv_obj_set_event_cb_mks(buttonPowerOff, event_handler, ID_O_POWER_OFF, "bmp_Mamual.bin", 0); |
|||
lv_imgbtn_set_src(buttonPowerOff, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonPowerOff, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonPowerOff, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonPowerOff, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_O_RETURN, "bmp_Return.bin", 0); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
#endif |
|||
|
|||
lv_obj_set_pos(buttonPreHeat, INTERVAL_V, titleHeight); |
|||
lv_obj_set_pos(buttonExtrusion, BTN_X_PIXEL + INTERVAL_V * 2, titleHeight); |
|||
|
|||
lv_obj_set_pos(buttonFan, BTN_X_PIXEL * 2 + INTERVAL_V * 3, titleHeight); |
|||
lv_obj_set_pos(buttonSpeed, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight); |
|||
|
|||
if (uiCfg.print_state != WORKING) { |
|||
/*{
|
|||
lv_obj_set_pos(buttonFilament,INTERVAL_V,BTN_Y_PIXEL+INTERVAL_H+titleHeight); |
|||
} |
|||
else*/ |
|||
lv_obj_set_pos(buttonMove, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_obj_set_pos(buttonPowerOff, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
} |
|||
else { |
|||
lv_obj_set_pos(buttonPowerOff, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
} |
|||
lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
|
|||
/*Create a label on the Image button*/ |
|||
lv_btn_set_layout(buttonPreHeat, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonExtrusion, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonFan, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonSpeed, LV_LAYOUT_OFF); |
|||
|
|||
if (uiCfg.print_state != WORKING) |
|||
/*{
|
|||
lv_btn_set_layout(buttonFilament, LV_LAYOUT_OFF); |
|||
} |
|||
else*/ |
|||
lv_btn_set_layout(buttonMove, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonPowerOff, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF); |
|||
|
|||
labelPreHeat = lv_label_create(buttonPreHeat, NULL); |
|||
labelExtrusion = lv_label_create(buttonExtrusion, NULL); |
|||
|
|||
label_Fan = lv_label_create(buttonFan, NULL); |
|||
label_Speed = lv_label_create(buttonSpeed, NULL); |
|||
|
|||
if (uiCfg.print_state != WORKING) |
|||
/*{
|
|||
label_Filament = lv_label_create(buttonFilament, NULL); |
|||
} |
|||
else*/ |
|||
label_Move = lv_label_create(buttonMove, NULL); |
|||
label_PowerOff = lv_label_create(buttonPowerOff, NULL); |
|||
|
|||
label_Back = lv_label_create(buttonBack, NULL); |
|||
|
|||
if (gCfgItems.multiple_language != 0) { |
|||
lv_label_set_text(labelPreHeat, operation_menu.temp); |
|||
lv_obj_align(labelPreHeat, buttonPreHeat, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(labelExtrusion, operation_menu.extr); |
|||
lv_obj_align(labelExtrusion, buttonExtrusion, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_Fan, operation_menu.fan); |
|||
lv_obj_align(label_Fan, buttonFan, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_Speed, operation_menu.speed); |
|||
lv_obj_align(label_Speed, buttonSpeed, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
if (uiCfg.print_state != WORKING) { |
|||
/*{
|
|||
lv_label_set_text(label_Filament, operation_menu.filament); |
|||
lv_obj_align(label_Filament, buttonFilament, LV_ALIGN_IN_BOTTOM_MID,0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
else*/ |
|||
lv_label_set_text(label_Move, operation_menu.move); |
|||
lv_obj_align(label_Move, buttonMove, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
|
|||
if (gCfgItems.finish_power_off == 1) |
|||
lv_label_set_text(label_PowerOff, printing_more_menu.auto_close); |
|||
else |
|||
lv_label_set_text(label_PowerOff, printing_more_menu.manual); |
|||
lv_obj_align(label_PowerOff, buttonPowerOff, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_Back, common_menu.text_back); |
|||
lv_obj_align(label_Back, buttonBack, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
} |
|||
|
|||
void lv_clear_opration() { lv_obj_del(scr); } |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,34 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { /* C-declarations for C++ */ |
|||
#endif |
|||
|
|||
extern void lv_draw_opration(void); |
|||
extern void lv_clear_opration(); |
|||
|
|||
//extern void disp_temp_ready_print();
|
|||
#ifdef __cplusplus |
|||
} /* C-declarations for C++ */ |
|||
#endif |
@ -0,0 +1,55 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if BOTH(TFT_LITTLE_VGL_UI, ADVANCED_PAUSE_FEATURE) |
|||
|
|||
#include "draw_ui.h" |
|||
#include "lv_conf.h" |
|||
//#include "../lvgl/src/lv_objx/lv_imgbtn.h"
|
|||
//#include "../lvgl/src/lv_objx/lv_img.h"
|
|||
//#include "../lvgl/src/lv_core/lv_disp.h"
|
|||
//#include "../lvgl/src/lv_core/lv_refr.h"
|
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
#include "../../../../feature/pause.h" |
|||
|
|||
void lv_draw_pause_message(const PauseMessage msg) { |
|||
switch (msg) { |
|||
case PAUSE_MESSAGE_PAUSING: clear_cur_ui(); lv_draw_dialog(DIALOG_PAUSE_MESSAGE_PAUSING); break; |
|||
case PAUSE_MESSAGE_CHANGING: clear_cur_ui(); lv_draw_dialog(DIALOG_PAUSE_MESSAGE_CHANGING); break; |
|||
case PAUSE_MESSAGE_UNLOAD: clear_cur_ui(); lv_draw_dialog(DIALOG_PAUSE_MESSAGE_UNLOAD); break; |
|||
case PAUSE_MESSAGE_WAITING: clear_cur_ui(); lv_draw_dialog(DIALOG_PAUSE_MESSAGE_WAITING); break; |
|||
case PAUSE_MESSAGE_INSERT: clear_cur_ui(); lv_draw_dialog(DIALOG_PAUSE_MESSAGE_INSERT); break; |
|||
case PAUSE_MESSAGE_LOAD: clear_cur_ui(); lv_draw_dialog(DIALOG_PAUSE_MESSAGE_LOAD); break; |
|||
case PAUSE_MESSAGE_PURGE: clear_cur_ui(); lv_draw_dialog(DIALOG_PAUSE_MESSAGE_PURGE); break; |
|||
case PAUSE_MESSAGE_RESUME: clear_cur_ui(); lv_draw_dialog(DIALOG_PAUSE_MESSAGE_RESUME); break; |
|||
case PAUSE_MESSAGE_HEAT: clear_cur_ui(); lv_draw_dialog(DIALOG_PAUSE_MESSAGE_HEAT); break; |
|||
case PAUSE_MESSAGE_HEATING: clear_cur_ui(); lv_draw_dialog(DIALOG_PAUSE_MESSAGE_HEATING); break; |
|||
case PAUSE_MESSAGE_OPTION: pause_menu_response = PAUSE_RESPONSE_WAIT_FOR; |
|||
clear_cur_ui(); lv_draw_dialog(DIALOG_PAUSE_MESSAGE_OPTION); break; |
|||
case PAUSE_MESSAGE_STATUS: |
|||
default: break; |
|||
} |
|||
} |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI && ADVANCED_PAUSE_FEATURE
|
@ -0,0 +1,33 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { /* C-declarations for C++ */ |
|||
#endif |
|||
|
|||
extern void lv_draw_pause_message(const PauseMessage msg); |
|||
|
|||
//extern void disp_temp_ready_print();
|
|||
#ifdef __cplusplus |
|||
} /* C-declarations for C++ */ |
|||
#endif |
@ -0,0 +1,392 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include "lv_conf.h" |
|||
#include "draw_ui.h" |
|||
//#include "../lvgl/src/lv_objx/lv_imgbtn.h"
|
|||
//#include "../lvgl/src/lv_objx/lv_img.h"
|
|||
//#include "../lvgl/src/lv_core/lv_disp.h"
|
|||
//#include "../lvgl/src/lv_core/lv_refr.h"
|
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
#include "../../../../module/temperature.h" |
|||
|
|||
static lv_obj_t * scr; |
|||
static lv_obj_t *buttoType, *buttonStep; |
|||
static lv_obj_t * labelType; |
|||
static lv_obj_t * labelStep; |
|||
static lv_obj_t * tempText1; |
|||
|
|||
#define ID_P_ADD 1 |
|||
#define ID_P_DEC 2 |
|||
#define ID_P_TYPE 3 |
|||
#define ID_P_STEP 4 |
|||
#define ID_P_OFF 5 |
|||
#define ID_P_RETURN 6 |
|||
|
|||
static void event_handler(lv_obj_t * obj, lv_event_t event) { |
|||
switch (obj->mks_obj_id) { |
|||
case ID_P_ADD: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (uiCfg.curTempType == 0) { |
|||
thermalManager.temp_hotend[uiCfg.curSprayerChoose].target += uiCfg.stepHeat; |
|||
if (uiCfg.curSprayerChoose == 0) { |
|||
if ((int)thermalManager.temp_hotend[uiCfg.curSprayerChoose].target > (HEATER_0_MAXTEMP - (WATCH_TEMP_INCREASE + TEMP_HYSTERESIS + 1))) { |
|||
thermalManager.temp_hotend[uiCfg.curSprayerChoose].target = (float)HEATER_0_MAXTEMP - (WATCH_TEMP_INCREASE + TEMP_HYSTERESIS + 1); |
|||
|
|||
thermalManager.start_watching_hotend(uiCfg.curSprayerChoose); |
|||
} |
|||
} |
|||
#if !defined(SINGLENOZZLE) && EXTRUDERS >= 2 |
|||
else if ((int)thermalManager.temp_hotend[uiCfg.curSprayerChoose].target > (HEATER_1_MAXTEMP - (WATCH_TEMP_INCREASE + TEMP_HYSTERESIS + 1))) { |
|||
thermalManager.temp_hotend[uiCfg.curSprayerChoose].target = (float)HEATER_1_MAXTEMP - (WATCH_TEMP_INCREASE + TEMP_HYSTERESIS + 1); |
|||
|
|||
thermalManager.start_watching_hotend(uiCfg.curSprayerChoose); |
|||
} |
|||
#endif |
|||
} |
|||
#if HAS_HEATED_BED |
|||
else { |
|||
|
|||
thermalManager.temp_bed.target += uiCfg.stepHeat; |
|||
|
|||
if ((int)thermalManager.temp_bed.target > BED_MAXTEMP - (WATCH_BED_TEMP_INCREASE + TEMP_BED_HYSTERESIS + 1)) { |
|||
thermalManager.temp_bed.target = (float)BED_MAXTEMP - (WATCH_BED_TEMP_INCREASE + TEMP_BED_HYSTERESIS + 1); |
|||
thermalManager.start_watching_bed(); |
|||
} |
|||
|
|||
} |
|||
#endif |
|||
disp_desire_temp(); |
|||
} |
|||
break; |
|||
case ID_P_DEC: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (uiCfg.curTempType == 0) { |
|||
if ((int)thermalManager.temp_hotend[uiCfg.curSprayerChoose].target > uiCfg.stepHeat) { |
|||
thermalManager.temp_hotend[uiCfg.curSprayerChoose].target -= uiCfg.stepHeat; |
|||
thermalManager.start_watching_hotend(uiCfg.curSprayerChoose); |
|||
} |
|||
else { |
|||
thermalManager.temp_hotend[uiCfg.curSprayerChoose].target = (float)0; |
|||
thermalManager.start_watching_hotend(uiCfg.curSprayerChoose); |
|||
} |
|||
} |
|||
#if HAS_HEATED_BED |
|||
else { |
|||
if ((int)thermalManager.temp_bed.target > uiCfg.stepHeat) { |
|||
thermalManager.temp_bed.target -= uiCfg.stepHeat; |
|||
thermalManager.start_watching_bed(); |
|||
} |
|||
else { |
|||
thermalManager.temp_bed.target = (float)0; |
|||
thermalManager.start_watching_bed(); |
|||
} |
|||
} |
|||
#endif |
|||
disp_desire_temp(); |
|||
} |
|||
|
|||
break; |
|||
case ID_P_TYPE: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (uiCfg.curTempType == 0) { |
|||
if (EXTRUDERS == 2) { |
|||
if (uiCfg.curSprayerChoose == 0) { |
|||
uiCfg.curSprayerChoose = 1; |
|||
} |
|||
else if (uiCfg.curSprayerChoose == 1) { |
|||
if (TEMP_SENSOR_BED != 0) { |
|||
uiCfg.curTempType = 1; |
|||
} |
|||
else { |
|||
uiCfg.curTempType = 0; |
|||
uiCfg.curSprayerChoose = 0; |
|||
} |
|||
} |
|||
} |
|||
else if (uiCfg.curSprayerChoose == 0) { |
|||
if (TEMP_SENSOR_BED != 0) |
|||
uiCfg.curTempType = 1; |
|||
else |
|||
uiCfg.curTempType = 0; |
|||
} |
|||
} |
|||
else if (uiCfg.curTempType == 1) { |
|||
uiCfg.curSprayerChoose = 0; |
|||
uiCfg.curTempType = 0; |
|||
} |
|||
disp_temp_type(); |
|||
} |
|||
break; |
|||
case ID_P_STEP: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
switch (uiCfg.stepHeat) { |
|||
case 1: uiCfg.stepHeat = 5; break; |
|||
case 5: uiCfg.stepHeat = 10; break; |
|||
case 10: uiCfg.stepHeat = 1; break; |
|||
default: break; |
|||
} |
|||
disp_step_heat(); |
|||
} |
|||
break; |
|||
case ID_P_OFF: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (uiCfg.curTempType == 0) { |
|||
thermalManager.temp_hotend[uiCfg.curSprayerChoose].target = (float)0; |
|||
thermalManager.start_watching_hotend(uiCfg.curSprayerChoose); |
|||
} |
|||
#if HAS_HEATED_BED |
|||
else { |
|||
thermalManager.temp_bed.target = (float)0; |
|||
thermalManager.start_watching_bed(); |
|||
} |
|||
#endif |
|||
disp_desire_temp(); |
|||
} |
|||
break; |
|||
case ID_P_RETURN: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
clear_cur_ui(); |
|||
draw_return_ui(); |
|||
} |
|||
break; |
|||
} |
|||
} |
|||
|
|||
void lv_draw_preHeat(void) { |
|||
lv_obj_t *buttonAdd, *buttonDec; |
|||
lv_obj_t *buttonOff, *buttonBack; |
|||
|
|||
if (disp_state_stack._disp_state[disp_state_stack._disp_index] != PRE_HEAT_UI) { |
|||
disp_state_stack._disp_index++; |
|||
disp_state_stack._disp_state[disp_state_stack._disp_index] = PRE_HEAT_UI; |
|||
} |
|||
disp_state = PRE_HEAT_UI; |
|||
|
|||
scr = lv_obj_create(NULL, NULL); |
|||
|
|||
lv_obj_set_style(scr, &tft_style_scr); |
|||
lv_scr_load(scr); |
|||
lv_obj_clean(scr); |
|||
|
|||
lv_obj_t * title = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(title, &tft_style_lable_rel); |
|||
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS); |
|||
lv_label_set_text(title, creat_title_text()); |
|||
|
|||
lv_refr_now(lv_refr_get_disp_refreshing()); |
|||
|
|||
LV_IMG_DECLARE(bmp_pic); |
|||
|
|||
/*Create an Image button*/ |
|||
buttonAdd = lv_imgbtn_create(scr, NULL); |
|||
buttonDec = lv_imgbtn_create(scr, NULL); |
|||
buttoType = lv_imgbtn_create(scr, NULL); |
|||
buttonStep = lv_imgbtn_create(scr, NULL); |
|||
buttonOff = lv_imgbtn_create(scr, NULL); |
|||
buttonBack = lv_imgbtn_create(scr, NULL); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonAdd, event_handler, ID_P_ADD, "bmp_Add.bin", 0); |
|||
lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
lv_obj_clear_protect(buttonAdd, LV_PROTECT_FOLLOW); |
|||
#if 1 |
|||
lv_obj_set_event_cb_mks(buttonDec, event_handler, ID_P_DEC, "bmp_Dec.bin", 0); |
|||
lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
|
|||
lv_imgbtn_set_src(buttoType, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttoType, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttoType, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttoType, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
|
|||
lv_imgbtn_set_src(buttonStep, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonStep, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonOff, event_handler, ID_P_OFF, "bmp_Speed0.bin", 0); |
|||
lv_imgbtn_set_src(buttonOff, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonOff, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonOff, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonOff, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_P_RETURN, "bmp_Return.bin", 0); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
#endif |
|||
|
|||
lv_obj_set_pos(buttonAdd, INTERVAL_V, titleHeight); |
|||
lv_obj_set_pos(buttonDec, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight); |
|||
lv_obj_set_pos(buttoType, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_obj_set_pos(buttonStep, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_obj_set_pos(buttonOff, BTN_X_PIXEL * 2 + INTERVAL_V * 3, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
|
|||
/*Create a label on the Image button*/ |
|||
lv_btn_set_layout(buttonAdd, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonDec, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttoType, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonStep, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonOff, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF); |
|||
|
|||
lv_obj_t * labelAdd = lv_label_create(buttonAdd, NULL); |
|||
lv_obj_t * labelDec = lv_label_create(buttonDec, NULL); |
|||
labelType = lv_label_create(buttoType, NULL); |
|||
labelStep = lv_label_create(buttonStep, NULL); |
|||
lv_obj_t * labelOff = lv_label_create(buttonOff, NULL); |
|||
lv_obj_t * label_Back = lv_label_create(buttonBack, NULL); |
|||
|
|||
|
|||
if (gCfgItems.multiple_language != 0) { |
|||
lv_label_set_text(labelAdd, preheat_menu.add); |
|||
lv_obj_align(labelAdd, buttonAdd, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(labelDec, preheat_menu.dec); |
|||
lv_obj_align(labelDec, buttonDec, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(labelOff, preheat_menu.off); |
|||
lv_obj_align(labelOff, buttonOff, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_Back, common_menu.text_back); |
|||
lv_obj_align(label_Back, buttonBack, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
|
|||
disp_temp_type(); |
|||
disp_step_heat(); |
|||
|
|||
tempText1 = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(tempText1, &tft_style_lable_rel); |
|||
disp_desire_temp(); |
|||
} |
|||
|
|||
void disp_temp_type() { |
|||
|
|||
if (uiCfg.curTempType == 0) { |
|||
if (uiCfg.curSprayerChoose == 1) { |
|||
lv_obj_set_event_cb_mks(buttoType, event_handler, ID_P_TYPE, "bmp_Extru2.bin", 0); |
|||
if (gCfgItems.multiple_language != 0) { |
|||
lv_label_set_text(labelType, preheat_menu.ext2); |
|||
lv_obj_align(labelType, buttoType, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
} |
|||
else { |
|||
lv_obj_set_event_cb_mks(buttoType, event_handler, ID_P_TYPE, "bmp_Extru1.bin", 0); |
|||
if (gCfgItems.multiple_language != 0) { |
|||
lv_label_set_text(labelType, preheat_menu.ext1); |
|||
lv_obj_align(labelType, buttoType, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
} |
|||
|
|||
} |
|||
else { |
|||
lv_obj_set_event_cb_mks(buttoType, event_handler, ID_P_TYPE, "bmp_Bed.bin", 0); |
|||
if (gCfgItems.multiple_language != 0) { |
|||
lv_label_set_text(labelType, preheat_menu.hotbed); |
|||
lv_obj_align(labelType, buttoType, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
} |
|||
|
|||
} |
|||
|
|||
void disp_desire_temp() { |
|||
char buf[20] = {0}; |
|||
|
|||
public_buf_l[0] = '\0'; |
|||
|
|||
if (uiCfg.curTempType == 0) { |
|||
if (uiCfg.curSprayerChoose < 1) |
|||
strcat(public_buf_l, preheat_menu.ext1); |
|||
else |
|||
strcat(public_buf_l, preheat_menu.ext2); |
|||
sprintf(buf, preheat_menu.value_state, (int)thermalManager.temp_hotend[uiCfg.curSprayerChoose].celsius, (int)thermalManager.temp_hotend[uiCfg.curSprayerChoose].target); |
|||
} |
|||
#if HAS_HEATED_BED |
|||
else { |
|||
strcat(public_buf_l, preheat_menu.hotbed); |
|||
sprintf(buf, preheat_menu.value_state, (int)thermalManager.temp_bed.celsius, (int)thermalManager.temp_bed.target); |
|||
} |
|||
#endif |
|||
strcat(public_buf_l, ": "); |
|||
strcat(public_buf_l, buf); |
|||
lv_label_set_text(tempText1, public_buf_l); |
|||
lv_obj_align(tempText1, NULL, LV_ALIGN_CENTER, 0, -50); |
|||
} |
|||
|
|||
void disp_step_heat() { |
|||
if (uiCfg.stepHeat == 1) |
|||
lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_P_STEP, "bmp_Step1_degree.bin", 0); |
|||
else if (uiCfg.stepHeat == 5) |
|||
lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_P_STEP, "bmp_Step5_degree.bin", 0); |
|||
else if (uiCfg.stepHeat == 10) |
|||
lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_P_STEP, "bmp_Step10_degree.bin", 0); |
|||
|
|||
if (gCfgItems.multiple_language != 0) { |
|||
if (uiCfg.stepHeat == 1) { |
|||
lv_label_set_text(labelStep, preheat_menu.step_1c); |
|||
lv_obj_align(labelStep, buttonStep, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
else if (uiCfg.stepHeat == 5) { |
|||
lv_label_set_text(labelStep, preheat_menu.step_5c); |
|||
lv_obj_align(labelStep, buttonStep, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
else if (uiCfg.stepHeat == 10) { |
|||
lv_label_set_text(labelStep, preheat_menu.step_10c); |
|||
lv_obj_align(labelStep, buttonStep, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
} |
|||
} |
|||
|
|||
void lv_clear_preHeat() { lv_obj_del(scr); } |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,37 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { /* C-declarations for C++ */ |
|||
#endif |
|||
|
|||
extern void lv_draw_preHeat(void); |
|||
extern void lv_clear_preHeat(); |
|||
extern void disp_temp_type(); |
|||
extern void disp_step_heat(); |
|||
extern void disp_desire_temp(); |
|||
|
|||
//extern void disp_temp_ready_print();
|
|||
#ifdef __cplusplus |
|||
} /* C-declarations for C++ */ |
|||
#endif |
@ -0,0 +1,595 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
#include "lv_conf.h" |
|||
//#include "../lvgl/src/lv_objx/lv_imgbtn.h"
|
|||
//#include "../lvgl/src/lv_objx/lv_img.h"
|
|||
//#include "../lvgl/src/lv_core/lv_disp.h"
|
|||
//#include "../lvgl/src/lv_core/lv_refr.h"
|
|||
#include "draw_ui.h" |
|||
#include "../../../../sd/cardreader.h" |
|||
|
|||
static lv_obj_t * scr; |
|||
|
|||
static lv_obj_t *buttonPageUp, *buttonPageDown, *buttonBack, *buttonGcode[FILE_BTN_CNT]; |
|||
static lv_obj_t * labelPageUp[FILE_BTN_CNT]; |
|||
static lv_obj_t *buttonText[FILE_BTN_CNT]; |
|||
|
|||
#define ID_P_UP 7 |
|||
#define ID_P_DOWN 8 |
|||
#define ID_P_RETURN 9 |
|||
|
|||
int8_t curDirLever = 0; |
|||
LIST_FILE list_file; |
|||
DIR_OFFSET dir_offset[10]; |
|||
|
|||
extern uint8_t public_buf[512]; |
|||
extern char public_buf_m[100]; |
|||
|
|||
uint8_t sel_id = 0; |
|||
|
|||
#if ENABLED(SDSUPPORT) |
|||
|
|||
static uint8_t search_file() { |
|||
int valid_name_cnt = 0; |
|||
//char tmp[SHORT_NEME_LEN*MAX_DIR_LEVEL+1];
|
|||
|
|||
list_file.Sd_file_cnt = 0; |
|||
//list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_first_offset;
|
|||
|
|||
//root2.rewind();
|
|||
//SERIAL_ECHOLN(list_file.curDirPath);
|
|||
|
|||
if (curDirLever != 0) card.cd(list_file.curDirPath); |
|||
else card.cdroot(); //while(card.cdup());
|
|||
|
|||
const uint16_t fileCnt = card.get_num_Files(); |
|||
|
|||
for (uint16_t i = 0; i < fileCnt; i++) { |
|||
if (list_file.Sd_file_cnt == list_file.Sd_file_offset) { |
|||
const uint16_t nr = SD_ORDER(i, fileCnt); |
|||
card.getfilename_sorted(nr); |
|||
|
|||
if (card.flag.filenameIsDir) |
|||
/*
|
|||
SERIAL_ECHOLN(card.longest_filename); |
|||
*/ |
|||
list_file.IsFolder[valid_name_cnt] = 1; |
|||
else |
|||
//SERIAL_ECHOLN(card.longFilename);
|
|||
list_file.IsFolder[valid_name_cnt] = 0; |
|||
|
|||
#if 1 |
|||
//
|
|||
memset(list_file.file_name[valid_name_cnt], 0, strlen(list_file.file_name[valid_name_cnt])); |
|||
strcpy(list_file.file_name[valid_name_cnt], list_file.curDirPath); |
|||
strcat(list_file.file_name[valid_name_cnt], "/"); |
|||
strcat(list_file.file_name[valid_name_cnt], card.filename); |
|||
//
|
|||
memset(list_file.long_name[valid_name_cnt], 0, strlen(list_file.long_name[valid_name_cnt])); |
|||
if (card.longFilename[0] == 0) |
|||
strncpy(list_file.long_name[valid_name_cnt], card.filename, strlen(card.filename)); |
|||
else |
|||
strncpy(list_file.long_name[valid_name_cnt], card.longFilename, strlen(card.longFilename)); |
|||
|
|||
valid_name_cnt++; |
|||
if (valid_name_cnt == 1) |
|||
dir_offset[curDirLever].cur_page_first_offset = list_file.Sd_file_offset; |
|||
if (valid_name_cnt >= FILE_NUM) { |
|||
dir_offset[curDirLever].cur_page_last_offset = list_file.Sd_file_offset; |
|||
list_file.Sd_file_offset++; |
|||
break; |
|||
} |
|||
list_file.Sd_file_offset++; |
|||
#endif |
|||
} |
|||
list_file.Sd_file_cnt++; |
|||
} |
|||
//card.closefile(false);
|
|||
return valid_name_cnt; |
|||
} |
|||
|
|||
#endif // SDSUPPORT
|
|||
|
|||
uint8_t have_pre_pic(char *path) { |
|||
#if ENABLED(SDSUPPORT) |
|||
char *ps1, *ps2, *cur_name = strrchr(path, '/'); |
|||
|
|||
card.openFileRead(cur_name); |
|||
card.read(public_buf, 512); |
|||
ps1 = strstr((char *)public_buf, ";simage:"); |
|||
card.read(public_buf, 512); |
|||
ps2 = strstr((char *)public_buf, ";simage:"); |
|||
if (ps1 || ps2) { |
|||
card.closefile(); |
|||
return 1; |
|||
} |
|||
card.closefile(); |
|||
#endif |
|||
|
|||
return 0; |
|||
} |
|||
|
|||
LV_IMG_DECLARE(bmp_pic_117x92); |
|||
LV_IMG_DECLARE(bmp_pic_100x100); |
|||
LV_IMG_DECLARE(bmp_pic); |
|||
LV_IMG_DECLARE(bmp_pic_100x40); |
|||
|
|||
static void event_handler(lv_obj_t * obj, lv_event_t event) { |
|||
uint8_t i, file_count = 0; |
|||
//switch (obj->mks_obj_id)
|
|||
//{
|
|||
if (obj->mks_obj_id == ID_P_UP) { |
|||
if (event == LV_EVENT_CLICKED) { |
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (dir_offset[curDirLever].curPage > 0) { |
|||
//2015.05.19
|
|||
list_file.Sd_file_cnt = 0; |
|||
|
|||
if (dir_offset[curDirLever].cur_page_first_offset >= FILE_NUM) |
|||
list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_first_offset - FILE_NUM; |
|||
|
|||
#if ENABLED(SDSUPPORT) |
|||
file_count = search_file(); |
|||
#endif |
|||
if (file_count != 0) { |
|||
dir_offset[curDirLever].curPage--; |
|||
lv_obj_del(scr); |
|||
disp_gcode_icon(file_count); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
else if (obj->mks_obj_id == ID_P_DOWN) { |
|||
if (event == LV_EVENT_CLICKED) { |
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (dir_offset[curDirLever].cur_page_last_offset > 0) { |
|||
list_file.Sd_file_cnt = 0; |
|||
list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_last_offset + 1; |
|||
#if ENABLED(SDSUPPORT) |
|||
file_count = search_file(); |
|||
#endif |
|||
if (file_count != 0) { |
|||
dir_offset[curDirLever].curPage++; |
|||
lv_obj_del(scr); |
|||
disp_gcode_icon(file_count); |
|||
} |
|||
if (file_count < FILE_NUM) |
|||
dir_offset[curDirLever].cur_page_last_offset = 0; |
|||
} |
|||
} |
|||
} |
|||
else if (obj->mks_obj_id == ID_P_RETURN) { |
|||
if (event == LV_EVENT_CLICKED) { |
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (curDirLever > 0) { |
|||
int8_t *ch = (int8_t *)strrchr(list_file.curDirPath, '/'); |
|||
if (ch) { |
|||
*ch = 0; |
|||
#if ENABLED(SDSUPPORT) |
|||
card.cdup(); |
|||
#endif |
|||
dir_offset[curDirLever].curPage = 0; |
|||
dir_offset[curDirLever].cur_page_first_offset = 0; |
|||
dir_offset[curDirLever].cur_page_last_offset = 0; |
|||
curDirLever--; |
|||
list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_first_offset; |
|||
#if ENABLED(SDSUPPORT) |
|||
file_count = search_file(); |
|||
#endif |
|||
lv_obj_del(scr); |
|||
disp_gcode_icon(file_count); |
|||
} |
|||
} |
|||
else { |
|||
lv_obj_del(scr); |
|||
lv_draw_ready_print(); |
|||
} |
|||
} |
|||
} |
|||
else { |
|||
for (i = 0; i < FILE_BTN_CNT; i++) { |
|||
if (obj->mks_obj_id == (i + 1)) { |
|||
if (event == LV_EVENT_CLICKED) { |
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (list_file.file_name[i][0] != 0) { |
|||
if (list_file.IsFolder[i] == 1) { |
|||
memset(list_file.curDirPath, 0, sizeof(list_file.curDirPath)); |
|||
strcpy(list_file.curDirPath, list_file.file_name[i]); |
|||
curDirLever++; |
|||
list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_first_offset; |
|||
#if ENABLED(SDSUPPORT) |
|||
file_count = search_file(); |
|||
#endif |
|||
lv_obj_del(scr); |
|||
disp_gcode_icon(file_count); |
|||
} |
|||
else { |
|||
sel_id = i; |
|||
lv_obj_del(scr); |
|||
lv_draw_dialog(DIALOG_TYPE_PRINT_FILE); |
|||
} |
|||
break; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
void lv_draw_print_file(void) { |
|||
//uint8_t i;
|
|||
uint8_t file_count; |
|||
if (disp_state_stack._disp_state[disp_state_stack._disp_index] != PRINT_FILE_UI) { |
|||
disp_state_stack._disp_index++; |
|||
disp_state_stack._disp_state[disp_state_stack._disp_index] = PRINT_FILE_UI; |
|||
} |
|||
disp_state = PRINT_FILE_UI; |
|||
|
|||
curDirLever = 0; |
|||
dir_offset[curDirLever].curPage = 0; |
|||
|
|||
list_file.Sd_file_offset = 0; |
|||
list_file.Sd_file_cnt = 0; |
|||
|
|||
ZERO(dir_offset); |
|||
ZERO(list_file.IsFolder); |
|||
ZERO(list_file.curDirPath); |
|||
|
|||
list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_first_offset; |
|||
#if ENABLED(SDSUPPORT) |
|||
card.mount(); |
|||
file_count = search_file(); |
|||
#endif |
|||
disp_gcode_icon(file_count); |
|||
|
|||
//lv_obj_t * labelPageUp = lv_label_create(buttonPageUp, NULL);
|
|||
//lv_obj_t * labelPageDown = lv_label_create(buttonPageDown, NULL);
|
|||
//lv_obj_t * label_Back = lv_label_create(buttonBack, NULL);
|
|||
|
|||
/*
|
|||
if (gCfgItems.multiple_language != 0) { |
|||
lv_label_set_text(labelPageUp, tool_menu.preheat); |
|||
lv_obj_align(labelPageUp, buttonPageUp, LV_ALIGN_IN_BOTTOM_MID,0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(labelPageDown, tool_menu.extrude); |
|||
lv_obj_align(labelPageDown, buttonPageDown, LV_ALIGN_IN_BOTTOM_MID,0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_Back, common_menu.text_back); |
|||
lv_obj_align(label_Back, buttonBack, LV_ALIGN_IN_BOTTOM_MID,0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
*/ |
|||
} |
|||
|
|||
void disp_gcode_icon(uint8_t file_num) { |
|||
uint8_t i; |
|||
|
|||
scr = lv_obj_create(NULL, NULL); |
|||
|
|||
//static lv_style_t tool_style;
|
|||
|
|||
lv_obj_set_style(scr, &tft_style_scr); |
|||
lv_scr_load(scr); |
|||
lv_obj_clean(scr); |
|||
|
|||
lv_obj_t * title = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(title, &tft_style_lable_rel); |
|||
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS); |
|||
lv_label_set_text(title, creat_title_text()); |
|||
|
|||
lv_refr_now(lv_refr_get_disp_refreshing()); |
|||
|
|||
buttonPageUp = lv_imgbtn_create(scr, NULL); |
|||
buttonPageDown = lv_imgbtn_create(scr, NULL); |
|||
buttonBack = lv_imgbtn_create(scr, NULL); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonPageUp, event_handler, ID_P_UP, "bmp_pageUp.bin", 0); |
|||
lv_imgbtn_set_src(buttonPageUp, LV_BTN_STATE_REL, &bmp_pic_117x92); |
|||
lv_imgbtn_set_src(buttonPageUp, LV_BTN_STATE_PR, &bmp_pic_117x92); |
|||
lv_imgbtn_set_style(buttonPageUp, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonPageUp, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
lv_obj_clear_protect(buttonPageUp, LV_PROTECT_FOLLOW); |
|||
|
|||
#if 1 |
|||
lv_obj_set_event_cb_mks(buttonPageDown, event_handler, ID_P_DOWN, "bmp_pageDown.bin", 0); |
|||
lv_imgbtn_set_src(buttonPageDown, LV_BTN_STATE_REL, &bmp_pic_117x92); |
|||
lv_imgbtn_set_src(buttonPageDown, LV_BTN_STATE_PR, &bmp_pic_117x92); |
|||
lv_imgbtn_set_style(buttonPageDown, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonPageDown, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_P_RETURN, "bmp_Back.bin", 0); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic_117x92); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic_117x92); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
#endif |
|||
|
|||
lv_obj_set_pos(buttonPageUp, OTHER_BTN_XPIEL * 3 + INTERVAL_V * 4, titleHeight); |
|||
lv_obj_set_pos(buttonPageDown, OTHER_BTN_XPIEL * 3 + INTERVAL_V * 4, titleHeight + OTHER_BTN_YPIEL + INTERVAL_H); |
|||
lv_obj_set_pos(buttonBack, OTHER_BTN_XPIEL * 3 + INTERVAL_V * 4, titleHeight + OTHER_BTN_YPIEL * 2 + INTERVAL_H * 2); |
|||
|
|||
/*Create a label on the Image button*/ |
|||
|
|||
lv_btn_set_layout(buttonPageUp, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonPageDown, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF); |
|||
|
|||
for (i = 0; i < FILE_BTN_CNT; i++) { |
|||
/*
|
|||
if(seq) { |
|||
j = (FILE_BTN_CNT-1) - i; |
|||
back_flg = 1; |
|||
} |
|||
else { |
|||
j = i; |
|||
back_flg = 0; |
|||
} |
|||
*/ |
|||
if (i >= file_num) break; |
|||
|
|||
#ifdef TFT35 |
|||
buttonGcode[i] = lv_imgbtn_create(scr, NULL); |
|||
|
|||
lv_imgbtn_set_style(buttonGcode[i], LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonGcode[i], LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
lv_obj_clear_protect(buttonGcode[i], LV_PROTECT_FOLLOW); |
|||
lv_btn_set_layout(buttonGcode[i], LV_LAYOUT_OFF); |
|||
|
|||
ZERO(public_buf_m); |
|||
cutFileName((char *)list_file.long_name[i], 16, 8, (char *)public_buf_m); |
|||
|
|||
if (list_file.IsFolder[i] == 1) { |
|||
lv_obj_set_event_cb_mks(buttonGcode[i], event_handler, (i + 1), "bmp_Dir.bin", 0); |
|||
lv_imgbtn_set_src(buttonGcode[i], LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonGcode[i], LV_BTN_STATE_PR, &bmp_pic); |
|||
if (i < 3) |
|||
lv_obj_set_pos(buttonGcode[i], BTN_X_PIXEL * i + INTERVAL_V * (i + 1), titleHeight); |
|||
else |
|||
lv_obj_set_pos(buttonGcode[i], BTN_X_PIXEL * (i - 3) + INTERVAL_V * ((i - 3) + 1), BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
|
|||
labelPageUp[i] = lv_label_create(buttonGcode[i], NULL); |
|||
lv_obj_set_style(labelPageUp[i], &tft_style_lable_rel); |
|||
lv_label_set_text(labelPageUp[i], public_buf_m); |
|||
lv_obj_align(labelPageUp[i], buttonGcode[i], LV_ALIGN_IN_BOTTOM_MID, 0, -5); |
|||
} |
|||
else { |
|||
if (have_pre_pic((char *)list_file.file_name[i])) { |
|||
lv_obj_set_event_cb_mks(buttonGcode[i], event_handler, (i + 1), list_file.file_name[i], 1); |
|||
lv_imgbtn_set_src(buttonGcode[i], LV_BTN_STATE_REL, &bmp_pic_100x100); |
|||
lv_imgbtn_set_src(buttonGcode[i], LV_BTN_STATE_PR, &bmp_pic_100x100); |
|||
if (i < 3) { |
|||
lv_obj_set_pos(buttonGcode[i], BTN_X_PIXEL * i + INTERVAL_V * (i + 1) + FILE_PRE_PIC_X_OFFSET, titleHeight + FILE_PRE_PIC_Y_OFFSET); |
|||
buttonText[i] = lv_btn_create(scr, NULL); |
|||
//lv_obj_set_event_cb(buttonText[i], event_handler);
|
|||
|
|||
lv_btn_set_style(buttonText[i], LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_btn_set_style(buttonText[i], LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
//lv_obj_set_style(buttonText[i], &tft_style_lable_pre);
|
|||
//lv_obj_set_style(buttonText[i], &tft_style_lable_rel);
|
|||
lv_obj_clear_protect(buttonText[i], LV_PROTECT_FOLLOW); |
|||
lv_btn_set_layout(buttonText[i], LV_LAYOUT_OFF); |
|||
//lv_obj_set_event_cb_mks(buttonText[i], event_handler,(i+10),NULL,0);
|
|||
//lv_imgbtn_set_src(buttonText[i], LV_BTN_STATE_REL, &bmp_pic_100x40);
|
|||
//lv_imgbtn_set_src(buttonText[i], LV_BTN_STATE_PR, &bmp_pic_100x40);
|
|||
lv_obj_set_pos(buttonText[i], BTN_X_PIXEL * i + INTERVAL_V * (i + 1) + FILE_PRE_PIC_X_OFFSET, titleHeight + FILE_PRE_PIC_Y_OFFSET + 100); |
|||
lv_obj_set_size(buttonText[i], 100, 40); |
|||
} |
|||
else { |
|||
lv_obj_set_pos(buttonGcode[i], BTN_X_PIXEL * (i - 3) + INTERVAL_V * ((i - 3) + 1) + FILE_PRE_PIC_X_OFFSET, BTN_Y_PIXEL + INTERVAL_H + titleHeight + FILE_PRE_PIC_Y_OFFSET); |
|||
buttonText[i] = lv_btn_create(scr, NULL); |
|||
//lv_obj_set_event_cb(buttonText[i], event_handler);
|
|||
|
|||
lv_btn_set_style(buttonText[i], LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_btn_set_style(buttonText[i], LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
//lv_imgbtn_set_style(buttonText[i], LV_BTN_STATE_REL, &tft_style_lable_rel);
|
|||
lv_obj_clear_protect(buttonText[i], LV_PROTECT_FOLLOW); |
|||
lv_btn_set_layout(buttonText[i], LV_LAYOUT_OFF); |
|||
//lv_obj_set_event_cb_mks(buttonText[i], event_handler,(i+10),NULL,0);
|
|||
//lv_imgbtn_set_src(buttonText[i], LV_BTN_STATE_REL, &bmp_pic_100x40);
|
|||
//lv_imgbtn_set_src(buttonText[i], LV_BTN_STATE_PR, &bmp_pic_100x40);
|
|||
lv_obj_set_pos(buttonText[i], BTN_X_PIXEL * (i - 3) + INTERVAL_V * ((i - 3) + 1) + FILE_PRE_PIC_X_OFFSET, BTN_Y_PIXEL + INTERVAL_H + titleHeight + FILE_PRE_PIC_Y_OFFSET + 100); |
|||
lv_obj_set_size(buttonText[i], 100, 40); |
|||
} |
|||
labelPageUp[i] = lv_label_create(buttonText[i], NULL); |
|||
lv_obj_set_style(labelPageUp[i], &tft_style_lable_rel); |
|||
lv_label_set_text(labelPageUp[i], public_buf_m); |
|||
lv_obj_align(labelPageUp[i], buttonText[i], LV_ALIGN_IN_BOTTOM_MID, 0, 0); |
|||
} |
|||
else { |
|||
lv_obj_set_event_cb_mks(buttonGcode[i], event_handler, (i + 1), "bmp_File.bin", 0); |
|||
lv_imgbtn_set_src(buttonGcode[i], LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonGcode[i], LV_BTN_STATE_PR, &bmp_pic); |
|||
if (i < 3) |
|||
lv_obj_set_pos(buttonGcode[i], BTN_X_PIXEL * i + INTERVAL_V * (i + 1), titleHeight); |
|||
else |
|||
lv_obj_set_pos(buttonGcode[i], BTN_X_PIXEL * (i - 3) + INTERVAL_V * ((i - 3) + 1), BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
|
|||
labelPageUp[i] = lv_label_create(buttonGcode[i], NULL); |
|||
lv_obj_set_style(labelPageUp[i], &tft_style_lable_rel); |
|||
lv_label_set_text(labelPageUp[i], public_buf_m); |
|||
lv_obj_align(labelPageUp[i], buttonGcode[i], LV_ALIGN_IN_BOTTOM_MID, 0, -5); |
|||
} |
|||
} |
|||
#else // ifdef TFT35
|
|||
#endif // ifdef TFT35
|
|||
} |
|||
} |
|||
|
|||
void lv_open_gcode_file(char *path) { |
|||
#if ENABLED(SDSUPPORT) |
|||
//uint32_t read;
|
|||
uint32_t *ps4; |
|||
int pre_sread_cnt; |
|||
char *cur_name; |
|||
|
|||
cur_name = strrchr(path, '/'); |
|||
|
|||
card.openFileRead(cur_name); |
|||
card.read(public_buf, 512); |
|||
ps4 = (uint32_t *)strstr((char *)public_buf, ";simage:"); |
|||
|
|||
if (ps4) { |
|||
pre_sread_cnt = (uint32_t)ps4 - (uint32_t)((uint32_t *)(&public_buf[0])); |
|||
card.setIndex(pre_sread_cnt + 8); |
|||
} |
|||
#endif |
|||
} |
|||
|
|||
int ascii2dec_test(char *ascii) { |
|||
int result = 0; |
|||
|
|||
if (ascii == 0) return 0; |
|||
|
|||
if (*(ascii) >= '0' && *(ascii) <= '9') |
|||
result = *(ascii) - '0'; |
|||
else if (*(ascii) >= 'a' && *(ascii) <= 'f') |
|||
result = *(ascii) - 'a' + 0x0a; |
|||
else if (*(ascii) >= 'A' && *(ascii) <= 'F') |
|||
result = *(ascii) - 'A' + 0x0a; |
|||
else |
|||
return 0; |
|||
|
|||
return result; |
|||
} |
|||
|
|||
void lv_gcode_file_read(uint8_t *data_buf) { |
|||
#if ENABLED(SDSUPPORT) |
|||
uint16_t i = 0, j = 0, k = 0; |
|||
//uint32_t read;
|
|||
uint16_t row_1 = 0; |
|||
char temp_test[200]; |
|||
|
|||
while (1) { |
|||
card.read(temp_test, 200); |
|||
for (i = 0; i < 200;) { |
|||
public_buf[row_1 * 200 + 100 * k + j] = (char)(ascii2dec_test(&temp_test[i]) << 4 | ascii2dec_test(&temp_test[i + 1])); |
|||
j++; |
|||
i += 2; |
|||
} |
|||
k++; |
|||
j = 0; |
|||
if (k >= 2) { |
|||
k = 0; |
|||
card.read(temp_test, 9); |
|||
break; |
|||
} |
|||
} |
|||
memcpy(data_buf, public_buf, 200); |
|||
#endif |
|||
} |
|||
|
|||
void lv_close_gcode_file() {TERN_(SDSUPPORT, card.closefile());} |
|||
|
|||
void cutFileName(char *path, int len, int bytePerLine, char *outStr) { |
|||
#if _LFN_UNICODE |
|||
TCHAR *tmpFile; |
|||
TCHAR *strIndex1 = 0, *strIndex2 = 0, *beginIndex; |
|||
TCHAR secSeg[10] = {0}; |
|||
TCHAR gFileTail[4] = {'~', '.', 'g', '\0'}; |
|||
#else |
|||
char *tmpFile; |
|||
char *strIndex1 = 0, *strIndex2 = 0, *beginIndex; |
|||
char secSeg[10] = {0}; |
|||
#endif |
|||
|
|||
if (path == 0 || len <= 3 || outStr == 0) return; |
|||
|
|||
tmpFile = path; |
|||
#if _LFN_UNICODE |
|||
strIndex1 = (WCHAR *)wcsstr((const WCHAR *)tmpFile, (const WCHAR *)'/'); |
|||
strIndex2 = (WCHAR *)wcsstr((const WCHAR *)tmpFile, (const WCHAR *)'.'); |
|||
#else |
|||
strIndex1 = (char *)strrchr(tmpFile, '/'); |
|||
strIndex2 = (char *)strrchr(tmpFile, '.'); |
|||
#endif |
|||
|
|||
beginIndex = (strIndex1 != 0 |
|||
// && (strIndex2 != 0) && (strIndex1 < strIndex2)
|
|||
) ? strIndex1 + 1 : tmpFile; |
|||
|
|||
if (strIndex2 == 0 || (strIndex1 > strIndex2)) { // not gcode file
|
|||
#if _LFN_UNICODE |
|||
if (wcslen(beginIndex) > len) |
|||
wcsncpy(outStr, beginIndex, len); |
|||
else |
|||
wcscpy(outStr, beginIndex); |
|||
#else |
|||
if ((int)strlen(beginIndex) > len) |
|||
strncpy(outStr, beginIndex, len); |
|||
else |
|||
strcpy(outStr, beginIndex); |
|||
#endif |
|||
} |
|||
else { //gcode file
|
|||
if (strIndex2 - beginIndex > (len - 2)) { |
|||
#if _LFN_UNICODE |
|||
wcsncpy(outStr, (const WCHAR *)beginIndex, len - 3); |
|||
wcscat(outStr, (const WCHAR *)gFileTail); |
|||
#else |
|||
//strncpy(outStr, beginIndex, len - 3);
|
|||
strncpy(outStr, beginIndex, len - 4); |
|||
strcat(outStr, "~.g"); |
|||
#endif |
|||
} |
|||
else { |
|||
#if _LFN_UNICODE |
|||
wcsncpy(outStr, (const WCHAR *)beginIndex, strIndex2 - beginIndex + 1); |
|||
wcscat(outStr, (const WCHAR *)&gFileTail[3]); |
|||
#else |
|||
strncpy(outStr, beginIndex, strIndex2 - beginIndex + 1); |
|||
strcat(outStr, "g"); |
|||
#endif |
|||
} |
|||
} |
|||
|
|||
#if _LFN_UNICODE |
|||
if (wcslen(outStr) > bytePerLine) { |
|||
wcscpy(secSeg, (const WCHAR *)&outStr[bytePerLine]); |
|||
outStr[bytePerLine] = '\n'; |
|||
outStr[bytePerLine + 1] = '\0'; |
|||
wcscat(outStr, (const WCHAR *)secSeg); |
|||
} |
|||
#else |
|||
if ((int)strlen(outStr) > bytePerLine) { |
|||
strcpy(secSeg, &outStr[bytePerLine]); |
|||
outStr[bytePerLine] = '\n'; |
|||
outStr[bytePerLine + 1] = '\0'; |
|||
strcat(outStr, secSeg); |
|||
} |
|||
else { |
|||
strcat(outStr, "\n"); |
|||
} |
|||
#endif |
|||
} |
|||
|
|||
void lv_clear_print_file() { lv_obj_del(scr); } |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,65 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { /* C-declarations for C++ */ |
|||
#endif |
|||
|
|||
typedef struct { |
|||
int cur_page_first_offset; |
|||
int cur_page_last_offset; |
|||
int curPage; |
|||
} DIR_OFFSET; |
|||
extern DIR_OFFSET dir_offset[10]; |
|||
|
|||
#define FILE_NUM 6 |
|||
#define SHORT_NEME_LEN 13 |
|||
#define NAME_CUT_LEN 23 |
|||
|
|||
#define MAX_DIR_LEVEL 10 |
|||
|
|||
typedef struct { |
|||
//char longName[FILE_NUM][LONG_FILENAME_LENGTH];
|
|||
char file_name[FILE_NUM][SHORT_NEME_LEN * MAX_DIR_LEVEL + 1]; |
|||
char curDirPath[SHORT_NEME_LEN * MAX_DIR_LEVEL + 1]; |
|||
char long_name[FILE_NUM][SHORT_NEME_LEN * 2 + 1]; |
|||
char IsFolder[FILE_NUM]; |
|||
char Sd_file_cnt; |
|||
char sd_file_index; |
|||
char Sd_file_offset; |
|||
} LIST_FILE; |
|||
extern LIST_FILE list_file; |
|||
|
|||
extern void disp_gcode_icon(uint8_t file_num); |
|||
extern void lv_draw_print_file(void); |
|||
extern void lv_open_gcode_file(char *path); |
|||
extern void lv_gcode_file_read(uint8_t *data_buf); |
|||
extern void lv_close_gcode_file(); |
|||
extern void cutFileName(char *path, int len, int bytePerLine, char *outStr); |
|||
extern int ascii2dec_test(char *ascii); |
|||
extern void lv_clear_print_file(); |
|||
|
|||
//extern void disp_temp_ready_print();
|
|||
#ifdef __cplusplus |
|||
} /* C-declarations for C++ */ |
|||
#endif |
@ -0,0 +1,435 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include "lv_conf.h" |
|||
#include "draw_ui.h" |
|||
//#include "../lvgl/src/lv_objx/lv_imgbtn.h"
|
|||
//#include "../lvgl/src/lv_objx/lv_img.h"
|
|||
//#include "../lvgl/src/lv_core/lv_disp.h"
|
|||
//#include "../lvgl/src/lv_core/lv_refr.h"
|
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
#include "../../../../module/temperature.h" |
|||
#include "../../../../module/motion.h" |
|||
#include "../../../../sd/cardreader.h" |
|||
#include "../../../../gcode/queue.h" |
|||
|
|||
#if ENABLED(POWER_LOSS_RECOVERY) |
|||
#include "../../../../feature/powerloss.h" |
|||
#endif |
|||
|
|||
static lv_obj_t * scr; |
|||
static lv_obj_t * labelExt1, * labelExt2, * labelFan, * labelZpos, * labelTime; |
|||
static lv_obj_t * labelPause, * labelStop, * labelOperat; |
|||
static lv_obj_t * bar1; |
|||
static lv_obj_t * buttonPause, *buttonOperat, *buttonStop; |
|||
|
|||
#if HAS_HEATED_BED |
|||
static lv_obj_t* labelBed; |
|||
#endif |
|||
|
|||
#define ID_PAUSE 1 |
|||
#define ID_STOP 2 |
|||
#define ID_OPTION 3 |
|||
|
|||
lv_style_t lv_bar_style_indic; |
|||
|
|||
uint8_t once_flag = 0; |
|||
extern uint32_t To_pre_view; |
|||
extern uint8_t flash_preview_begin; |
|||
extern uint8_t default_preview_flg; |
|||
extern uint8_t gcode_preview_over; |
|||
|
|||
static void event_handler(lv_obj_t * obj, lv_event_t event) { |
|||
switch (obj->mks_obj_id) { |
|||
case ID_PAUSE: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (gcode_preview_over != 1) { |
|||
if (uiCfg.print_state == WORKING) { |
|||
//#if ENABLED(PARK_HEAD_ON_PAUSE)
|
|||
//queue.inject_P(PSTR("M25 P\nM24"));
|
|||
#if ENABLED(SDSUPPORT) |
|||
//queue.inject_P(PSTR("M25\nG91\nG1 Z10\nG90"));
|
|||
card.pauseSDPrint(); |
|||
stop_print_time(); |
|||
uiCfg.print_state = PAUSING; |
|||
#endif |
|||
lv_obj_set_event_cb_mks(buttonPause, event_handler, ID_PAUSE, "bmp_Pause.bin", 0); |
|||
lv_label_set_text(labelPause, printing_menu.resume); |
|||
lv_obj_align(labelPause, buttonPause, LV_ALIGN_CENTER, 30, 0); |
|||
} |
|||
else if (uiCfg.print_state == PAUSED) { |
|||
uiCfg.print_state = RESUMING; |
|||
//if (IS_SD_PAUSED())queue.inject_P(PSTR("M24"));// queue.inject_P(M24_STR);
|
|||
lv_obj_set_event_cb_mks(obj, event_handler, ID_PAUSE, "bmp_Resume.bin", 0); |
|||
lv_label_set_text(labelPause, printing_menu.pause); |
|||
lv_obj_align(labelPause, buttonPause, LV_ALIGN_CENTER, 30, 0); |
|||
} |
|||
#if ENABLED(POWER_LOSS_RECOVERY) |
|||
else if (uiCfg.print_state == REPRINTING) { |
|||
uiCfg.print_state = REPRINTED; |
|||
lv_obj_set_event_cb_mks(obj, event_handler, ID_PAUSE, "bmp_Resume.bin", 0); |
|||
lv_label_set_text(labelPause, printing_menu.pause); |
|||
lv_obj_align(labelPause, buttonPause, LV_ALIGN_CENTER, 30, 0); |
|||
//recovery.resume();
|
|||
print_time.minutes = recovery.info.print_job_elapsed / 60; |
|||
print_time.seconds = recovery.info.print_job_elapsed % 60; |
|||
print_time.hours = print_time.minutes / 60; |
|||
} |
|||
#endif |
|||
} |
|||
} |
|||
break; |
|||
|
|||
case ID_STOP: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (gcode_preview_over != 1) { |
|||
lv_obj_del(scr); |
|||
lv_draw_dialog(DIALOG_TYPE_STOP); |
|||
} |
|||
} |
|||
break; |
|||
case ID_OPTION: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
if (gcode_preview_over != 1) { |
|||
lv_obj_del(scr); |
|||
lv_draw_opration(); |
|||
} |
|||
} |
|||
break; |
|||
} |
|||
} |
|||
|
|||
void lv_draw_printing(void) { |
|||
lv_obj_t *buttonExt1, *buttonExt2, *buttonFanstate, *buttonZpos, *buttonTime; |
|||
TERN_(HAS_HEATED_BED, lv_obj_t * buttonBedstate); |
|||
|
|||
disp_state_stack._disp_index = 0; |
|||
ZERO(disp_state_stack._disp_state); |
|||
disp_state_stack._disp_state[disp_state_stack._disp_index] = PRINTING_UI; |
|||
|
|||
disp_state = PRINTING_UI; |
|||
|
|||
scr = lv_obj_create(NULL, NULL); |
|||
|
|||
//static lv_style_t tool_style;
|
|||
|
|||
lv_obj_set_style(scr, &tft_style_scr); |
|||
lv_scr_load(scr); |
|||
lv_obj_clean(scr); |
|||
|
|||
lv_obj_t * title = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(title, &tft_style_lable_rel); |
|||
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS); |
|||
lv_label_set_text(title, creat_title_text()); |
|||
|
|||
lv_refr_now(lv_refr_get_disp_refreshing()); |
|||
|
|||
LV_IMG_DECLARE(bmp_pic_150x80); |
|||
LV_IMG_DECLARE(bmp_pic_45x45); |
|||
|
|||
/*Create an Image button*/ |
|||
buttonExt1 = lv_imgbtn_create(scr, NULL); |
|||
if (EXTRUDERS == 2) |
|||
buttonExt2 = lv_imgbtn_create(scr, NULL); |
|||
|
|||
#if HAS_HEATED_BED |
|||
buttonBedstate = lv_imgbtn_create(scr, NULL); |
|||
#endif |
|||
|
|||
buttonFanstate = lv_imgbtn_create(scr, NULL); |
|||
buttonZpos = lv_imgbtn_create(scr, NULL); |
|||
buttonPause = lv_imgbtn_create(scr, NULL); |
|||
buttonStop = lv_imgbtn_create(scr, NULL); |
|||
buttonOperat = lv_imgbtn_create(scr, NULL); |
|||
buttonTime = lv_imgbtn_create(scr, NULL); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonExt1, event_handler, 0, "bmp_Ext1_state.bin", 0); |
|||
lv_imgbtn_set_src(buttonExt1, LV_BTN_STATE_REL, &bmp_pic_45x45); |
|||
lv_imgbtn_set_src(buttonExt1, LV_BTN_STATE_PR, &bmp_pic_45x45); |
|||
lv_imgbtn_set_style(buttonExt1, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonExt1, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
lv_obj_clear_protect(buttonExt1, LV_PROTECT_FOLLOW); |
|||
#if 1 |
|||
if (EXTRUDERS == 2) { |
|||
lv_obj_set_event_cb_mks(buttonExt2, event_handler, 0, "bmp_Ext2_state.bin", 0); |
|||
lv_imgbtn_set_src(buttonExt2, LV_BTN_STATE_REL, &bmp_pic_45x45); |
|||
lv_imgbtn_set_src(buttonExt2, LV_BTN_STATE_PR, &bmp_pic_45x45); |
|||
lv_imgbtn_set_style(buttonExt2, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonExt2, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
} |
|||
#if HAS_HEATED_BED |
|||
lv_obj_set_event_cb_mks(buttonBedstate, event_handler, 0, "bmp_Bed_state.bin", 0); |
|||
lv_imgbtn_set_src(buttonBedstate, LV_BTN_STATE_REL, &bmp_pic_45x45); |
|||
lv_imgbtn_set_src(buttonBedstate, LV_BTN_STATE_PR, &bmp_pic_45x45); |
|||
lv_imgbtn_set_style(buttonBedstate, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonBedstate, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
#endif |
|||
|
|||
lv_obj_set_event_cb_mks(buttonFanstate, event_handler, 0, "bmp_Fan_state.bin", 0); |
|||
lv_imgbtn_set_src(buttonFanstate, LV_BTN_STATE_REL, &bmp_pic_45x45); |
|||
lv_imgbtn_set_src(buttonFanstate, LV_BTN_STATE_PR, &bmp_pic_45x45); |
|||
lv_imgbtn_set_style(buttonFanstate, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonFanstate, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonTime, event_handler, 0, "bmp_Time_state.bin", 0); |
|||
lv_imgbtn_set_src(buttonTime, LV_BTN_STATE_REL, &bmp_pic_45x45); |
|||
lv_imgbtn_set_src(buttonTime, LV_BTN_STATE_PR, &bmp_pic_45x45); |
|||
lv_imgbtn_set_style(buttonTime, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonTime, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonZpos, event_handler, 0, "bmp_Zpos_state.bin", 0); |
|||
lv_imgbtn_set_src(buttonZpos, LV_BTN_STATE_REL, &bmp_pic_45x45); |
|||
lv_imgbtn_set_src(buttonZpos, LV_BTN_STATE_PR, &bmp_pic_45x45); |
|||
lv_imgbtn_set_style(buttonZpos, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonZpos, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
if (uiCfg.print_state == WORKING) |
|||
lv_obj_set_event_cb_mks(buttonPause, event_handler, ID_PAUSE, "bmp_Resume.bin", 0); |
|||
else |
|||
lv_obj_set_event_cb_mks(buttonPause, event_handler, ID_PAUSE, "bmp_Pause.bin", 0); |
|||
|
|||
lv_imgbtn_set_src(buttonPause, LV_BTN_STATE_REL, &bmp_pic_150x80); |
|||
lv_imgbtn_set_src(buttonPause, LV_BTN_STATE_PR, &bmp_pic_150x80); |
|||
lv_imgbtn_set_style(buttonPause, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonPause, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonStop, event_handler, ID_STOP, "bmp_Stop.bin", 0); |
|||
lv_imgbtn_set_src(buttonStop, LV_BTN_STATE_REL, &bmp_pic_150x80); |
|||
lv_imgbtn_set_src(buttonStop, LV_BTN_STATE_PR, &bmp_pic_150x80); |
|||
lv_imgbtn_set_style(buttonStop, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonStop, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonOperat, event_handler, ID_OPTION, "bmp_Operate.bin", 0); |
|||
lv_imgbtn_set_src(buttonOperat, LV_BTN_STATE_REL, &bmp_pic_150x80); |
|||
lv_imgbtn_set_src(buttonOperat, LV_BTN_STATE_PR, &bmp_pic_150x80); |
|||
lv_imgbtn_set_style(buttonOperat, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonOperat, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
#endif |
|||
|
|||
lv_obj_set_pos(buttonExt1, 205, 136); |
|||
if (EXTRUDERS == 2) |
|||
lv_obj_set_pos(buttonExt2, 350, 136); |
|||
|
|||
#if HAS_HEATED_BED |
|||
lv_obj_set_pos(buttonBedstate, 205, 186); |
|||
#endif |
|||
|
|||
lv_obj_set_pos(buttonFanstate, 350, 186); |
|||
lv_obj_set_pos(buttonTime, 205, 86); |
|||
lv_obj_set_pos(buttonZpos, 350, 86); |
|||
lv_obj_set_pos(buttonPause, 5, 240); |
|||
lv_obj_set_pos(buttonStop, 165, 240); |
|||
lv_obj_set_pos(buttonOperat, 325, 240); |
|||
|
|||
/*Create a label on the Image button*/ |
|||
lv_btn_set_layout(buttonExt1, LV_LAYOUT_OFF); |
|||
if (EXTRUDERS == 2) |
|||
lv_btn_set_layout(buttonExt2, LV_LAYOUT_OFF); |
|||
|
|||
#if HAS_HEATED_BED |
|||
lv_btn_set_layout(buttonBedstate, LV_LAYOUT_OFF); |
|||
#endif |
|||
|
|||
lv_btn_set_layout(buttonFanstate, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonZpos, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonPause, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonStop, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonOperat, LV_LAYOUT_OFF); |
|||
|
|||
labelExt1 = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(labelExt1, &tft_style_lable_rel); |
|||
lv_obj_set_pos(labelExt1, 250, 146); |
|||
|
|||
if (EXTRUDERS == 2) { |
|||
labelExt2 = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(labelExt2, &tft_style_lable_rel); |
|||
lv_obj_set_pos(labelExt2, 395, 146); |
|||
} |
|||
|
|||
#if HAS_HEATED_BED |
|||
labelBed = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(labelBed, &tft_style_lable_rel); |
|||
lv_obj_set_pos(labelBed, 250, 196); |
|||
#endif |
|||
|
|||
labelFan = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(labelFan, &tft_style_lable_rel); |
|||
lv_obj_set_pos(labelFan, 395, 196); |
|||
|
|||
labelZpos = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(labelZpos, &tft_style_lable_rel); |
|||
lv_obj_set_pos(labelZpos, 395, 96); |
|||
|
|||
labelTime = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(labelTime, &tft_style_lable_rel); |
|||
lv_obj_set_pos(labelTime, 250, 96); |
|||
|
|||
labelPause = lv_label_create(buttonPause, NULL); |
|||
labelStop = lv_label_create(buttonStop, NULL); |
|||
labelOperat = lv_label_create(buttonOperat, NULL); |
|||
|
|||
if (gCfgItems.multiple_language != 0) { |
|||
if (uiCfg.print_state == WORKING) |
|||
lv_label_set_text(labelPause, printing_menu.pause); |
|||
else |
|||
lv_label_set_text(labelPause, printing_menu.resume); |
|||
lv_obj_align(labelPause, buttonPause, LV_ALIGN_CENTER, 30, 0); |
|||
|
|||
lv_label_set_text(labelStop, printing_menu.stop); |
|||
lv_obj_align(labelStop, buttonStop, LV_ALIGN_CENTER, 30, 0); |
|||
|
|||
lv_label_set_text(labelOperat, printing_menu.option); |
|||
lv_obj_align(labelOperat, buttonOperat, LV_ALIGN_CENTER, 30, 0); |
|||
} |
|||
|
|||
lv_style_copy(&lv_bar_style_indic, &lv_style_pretty_color); |
|||
lv_bar_style_indic.text.color = lv_color_hex3(0xADF); |
|||
lv_bar_style_indic.image.color = lv_color_hex3(0xADF); |
|||
lv_bar_style_indic.line.color = lv_color_hex3(0xADF); |
|||
lv_bar_style_indic.body.main_color = lv_color_hex3(0xADF); |
|||
lv_bar_style_indic.body.grad_color = lv_color_hex3(0xADF); |
|||
lv_bar_style_indic.body.border.color = lv_color_hex3(0xADF); |
|||
|
|||
bar1 = lv_bar_create(scr, NULL); |
|||
lv_obj_set_pos(bar1, 205, 36); |
|||
lv_obj_set_size(bar1, 270, 40); |
|||
lv_bar_set_style(bar1, LV_BAR_STYLE_INDIC, &lv_bar_style_indic); |
|||
lv_bar_set_anim_time(bar1, 1000); |
|||
lv_bar_set_value(bar1, 0, LV_ANIM_ON); |
|||
|
|||
disp_ext_temp(); |
|||
disp_bed_temp(); |
|||
disp_fan_speed(); |
|||
disp_print_time(); |
|||
disp_fan_Zpos(); |
|||
} |
|||
|
|||
void disp_ext_temp() { |
|||
memset(public_buf_l, 0, sizeof(public_buf_l)); |
|||
sprintf(public_buf_l, printing_menu.temp1, (int)thermalManager.temp_hotend[0].celsius, (int)thermalManager.temp_hotend[0].target); |
|||
lv_label_set_text(labelExt1, public_buf_l); |
|||
|
|||
if (EXTRUDERS == 2) { |
|||
memset(public_buf_l, 0, sizeof(public_buf_l)); |
|||
sprintf(public_buf_l, printing_menu.temp1, (int)thermalManager.temp_hotend[1].celsius, (int)thermalManager.temp_hotend[1].target); |
|||
lv_label_set_text(labelExt2, public_buf_l); |
|||
} |
|||
} |
|||
|
|||
void disp_bed_temp() { |
|||
#if HAS_HEATED_BED |
|||
memset(public_buf_l, 0, sizeof(public_buf_l)); |
|||
sprintf(public_buf_l, printing_menu.bed_temp, (int)thermalManager.temp_bed.celsius, (int)thermalManager.temp_bed.target); |
|||
lv_label_set_text(labelBed, public_buf_l); |
|||
#endif |
|||
} |
|||
|
|||
void disp_fan_speed() { |
|||
memset(public_buf_l, 0, sizeof(public_buf_l)); |
|||
sprintf(public_buf_l, "%3d", thermalManager.fan_speed[0]); |
|||
lv_label_set_text(labelFan, public_buf_l); |
|||
} |
|||
|
|||
void disp_print_time() { |
|||
memset(public_buf_l, 0, sizeof(public_buf_l)); |
|||
sprintf(public_buf_l, "%d%d:%d%d:%d%d", print_time.hours / 10, print_time.hours % 10, print_time.minutes / 10, print_time.minutes % 10, print_time.seconds / 10, print_time.seconds % 10); |
|||
lv_label_set_text(labelTime, public_buf_l); |
|||
} |
|||
|
|||
void disp_fan_Zpos() { |
|||
memset(public_buf_l, 0, sizeof(public_buf_l)); |
|||
sprintf(public_buf_l, "%.3f", current_position[Z_AXIS]); |
|||
lv_label_set_text(labelZpos, public_buf_l); |
|||
} |
|||
|
|||
void reset_print_time() { |
|||
//print_time.days = 0;
|
|||
print_time.hours = 0; |
|||
print_time.minutes = 0; |
|||
print_time.seconds = 0; |
|||
print_time.ms_10 = 0; |
|||
//print_time.start = 1;
|
|||
} |
|||
|
|||
void start_print_time() { print_time.start = 1; } |
|||
|
|||
void stop_print_time() { print_time.start = 0; } |
|||
|
|||
void setProBarRate() { |
|||
int rate; |
|||
volatile long long rate_tmp_r; |
|||
|
|||
if (gCfgItems.from_flash_pic != 1) { |
|||
#if ENABLED(SDSUPPORT) |
|||
rate_tmp_r = (long long)card.getIndex() * 100; |
|||
#endif |
|||
rate = rate_tmp_r / gCfgItems.curFilesize; |
|||
} |
|||
else { |
|||
#if ENABLED(SDSUPPORT) |
|||
rate_tmp_r = (long long)card.getIndex(); |
|||
#endif |
|||
rate = (rate_tmp_r - (PREVIEW_SIZE + To_pre_view)) * 100 / (gCfgItems.curFilesize - (PREVIEW_SIZE + To_pre_view)); |
|||
} |
|||
//gCurFileState.totalSend = rate;
|
|||
|
|||
if (rate <= 0) return; |
|||
|
|||
if (disp_state == PRINTING_UI) { |
|||
lv_bar_set_value(bar1, rate, LV_ANIM_ON); |
|||
|
|||
if (marlin_state == MF_SD_COMPLETE) { |
|||
if (once_flag == 0) { |
|||
stop_print_time(); |
|||
|
|||
flash_preview_begin = 0; |
|||
default_preview_flg = 0; |
|||
lv_clear_printing(); |
|||
lv_draw_dialog(DIALOG_TYPE_FINISH_PRINT); |
|||
|
|||
once_flag = 1; |
|||
|
|||
#if HAS_SUICIDE |
|||
if (gCfgItems.finish_power_off == 1) |
|||
suicide(); |
|||
#endif |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
void lv_clear_printing() { lv_obj_del(scr); } |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,52 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { /* C-declarations for C++ */ |
|||
#endif |
|||
|
|||
#define IDLE 0 |
|||
#define WORKING 1 |
|||
#define PAUSING 2 |
|||
#define PAUSED 3 |
|||
#define REPRINTING 4 |
|||
#define REPRINTED 5 |
|||
#define RESUMING 6 |
|||
#define STOP 7 |
|||
|
|||
extern void lv_draw_printing(void); |
|||
extern void lv_clear_printing(); |
|||
extern void disp_ext_temp(); |
|||
extern void disp_bed_temp(); |
|||
extern void disp_fan_speed(); |
|||
extern void disp_print_time(); |
|||
extern void disp_fan_Zpos(); |
|||
extern void reset_print_time(); |
|||
extern void start_print_time(); |
|||
extern void stop_print_time(); |
|||
extern void setProBarRate(); |
|||
|
|||
//extern void disp_temp_ready_print();
|
|||
#ifdef __cplusplus |
|||
} /* C-declarations for C++ */ |
|||
#endif |
@ -0,0 +1,319 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include "draw_ready_print.h" |
|||
#include "draw_tool.h" |
|||
#include "lv_conf.h" |
|||
#include "lvgl.h" |
|||
//#include "../lvgl/src/lv_objx/lv_imgbtn.h"
|
|||
//#include "../lvgl/src/lv_objx/lv_img.h"
|
|||
//#include "../lvgl/src/lv_core/lv_disp.h"
|
|||
//#include "../lvgl/src/lv_core/lv_refr.h"
|
|||
#include "tft_lvgl_configuration.h" |
|||
#include "mks_hardware_test.h" |
|||
#include "draw_ui.h" |
|||
|
|||
#include <stdio.h> |
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
#include "../../../../module/temperature.h" |
|||
|
|||
//static lv_obj_t *buttonPrint,*buttonTool,*buttonSet;
|
|||
static lv_obj_t * scr; |
|||
#if ENABLED(MKS_TEST) |
|||
uint8_t curent_disp_ui = 0; |
|||
#endif |
|||
|
|||
#define ID_TOOL 1 |
|||
#define ID_SET 2 |
|||
#define ID_PRINT 3 |
|||
|
|||
static void event_handler(lv_obj_t * obj, lv_event_t event) { |
|||
switch (obj->mks_obj_id) { |
|||
case ID_TOOL: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
#if ENABLED(MKS_TEST) |
|||
curent_disp_ui = 2; |
|||
#endif |
|||
lv_obj_del(scr); |
|||
lv_draw_tool(); |
|||
} |
|||
break; |
|||
case ID_SET: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
lv_obj_del(scr); |
|||
lv_draw_set(); |
|||
} |
|||
break; |
|||
case ID_PRINT: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
lv_obj_del(scr); |
|||
lv_draw_print_file(); |
|||
} |
|||
break; |
|||
} |
|||
} |
|||
|
|||
|
|||
#if ENABLED(MKS_TEST) |
|||
|
|||
lv_obj_t *limit_info, *det_info; |
|||
lv_style_t limit_style, det_style; |
|||
void disp_Limit_ok() { |
|||
limit_style.text.color.full = 0xFFFF; |
|||
lv_obj_set_style(limit_info, &limit_style); |
|||
lv_label_set_text(limit_info, "Limit:ok"); |
|||
} |
|||
void disp_Limit_error() { |
|||
limit_style.text.color.full = 0xF800; |
|||
lv_obj_set_style(limit_info, &limit_style); |
|||
lv_label_set_text(limit_info, "Limit:error"); |
|||
} |
|||
|
|||
void disp_det_ok() { |
|||
det_style.text.color.full = 0xFFFF; |
|||
lv_obj_set_style(det_info, &det_style); |
|||
lv_label_set_text(det_info, "det:ok"); |
|||
} |
|||
void disp_det_error() { |
|||
det_style.text.color.full = 0xF800; |
|||
lv_obj_set_style(det_info, &det_style); |
|||
lv_label_set_text(det_info, "det:error"); |
|||
} |
|||
|
|||
lv_obj_t *e1, *e2, *e3, *bed; |
|||
void disp_test() { |
|||
char buf[30] = {0}; |
|||
//lv_obj_t * label_tool2 = lv_label_create(scr, NULL);
|
|||
//lv_obj_set_pos(label_tool,20,50);
|
|||
memset(buf, 0, sizeof(buf)); |
|||
sprintf(buf, "e1:%d", (int)thermalManager.temp_hotend[0].celsius); |
|||
lv_label_set_text(e1, buf); |
|||
|
|||
memset(buf, 0, sizeof(buf)); |
|||
sprintf(buf, "e2:%d", (int)thermalManager.temp_hotend[1].celsius); |
|||
lv_label_set_text(e2, buf); |
|||
|
|||
memset(buf, 0, sizeof(buf)); |
|||
sprintf(buf, "e3:%d", (int)thermalManager.temp_hotend[2].celsius); |
|||
lv_label_set_text(e3, buf); |
|||
|
|||
memset(buf, 0, sizeof(buf)); |
|||
sprintf(buf, "bed:%d", (int)thermalManager.temp_bed.celsius); |
|||
lv_label_set_text(bed, buf); |
|||
} |
|||
|
|||
#endif // MKS_TEST
|
|||
|
|||
void lv_draw_ready_print(void) { |
|||
#if ENABLED(MKS_TEST) |
|||
char buf[30] = {0}; |
|||
lv_obj_t *buttonTool; |
|||
|
|||
static lv_style_t style_pr, style_rel; |
|||
|
|||
curent_disp_ui = 1; |
|||
|
|||
scr = lv_obj_create(NULL, NULL); |
|||
|
|||
static lv_style_t ready_style; |
|||
|
|||
lv_style_copy(&ready_style, &lv_style_scr); |
|||
//ready_style.body.main_color.full = 0X18C3;
|
|||
//ready_style.body.grad_color.full = 0X18C3;
|
|||
ready_style.body.main_color.full = 0X0000; |
|||
ready_style.body.grad_color.full = 0X0000; |
|||
ready_style.text.color.full = 0Xffff; |
|||
lv_obj_set_style(scr, &ready_style); |
|||
lv_scr_load(scr); |
|||
lv_obj_clean(scr); |
|||
//lv_obj_set_hidden(scr,true);
|
|||
lv_refr_now(lv_refr_get_disp_refreshing()); |
|||
|
|||
LV_IMG_DECLARE(bmp_pic); |
|||
//LV_IMG_DECLARE(bmp_pic2);
|
|||
//LV_IMG_DECLARE(bmp_pic3);
|
|||
|
|||
//scr = lv_obj_create(NULL, NULL);
|
|||
//lv_scr_load(scr);
|
|||
|
|||
/*Create an Image button*/ |
|||
buttonTool = lv_imgbtn_create(scr, NULL); |
|||
|
|||
//lv_btn_setting(&style_pr,0x5d8f16,0x5d8f16);
|
|||
//lv_btn_setting(&style_rel,0x5d8f16,0x5d8f16);
|
|||
|
|||
lv_obj_set_event_cb_mks(buttonTool, event_handler, 3, "bmp_Tool.bin", 0); |
|||
//lv_imgbtn_set_src_mks(buttonTool, LV_BTN_STATE_REL, &bmp_pic,(uint8_t *)"bmp_tool.bin");
|
|||
lv_imgbtn_set_src(buttonTool, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonTool, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonTool, LV_BTN_STATE_PR, &style_pr); |
|||
lv_imgbtn_set_style(buttonTool, LV_BTN_STATE_REL, &style_rel); |
|||
|
|||
lv_obj_set_pos(buttonTool, 360, 180); |
|||
|
|||
lv_btn_set_layout(buttonTool, LV_LAYOUT_OFF); |
|||
|
|||
lv_obj_t * label_tool = lv_label_create(buttonTool, NULL); |
|||
|
|||
lv_obj_set_pos(label_tool, 30, 100); |
|||
lv_label_set_text(label_tool, "Back"); |
|||
|
|||
e1 = lv_label_create(scr, NULL); |
|||
lv_obj_set_pos(e1, 20, 20); |
|||
sprintf(buf, "e1: %d", (int)thermalManager.temp_hotend[0].celsius); |
|||
lv_label_set_text(e1, buf); |
|||
|
|||
e2 = lv_label_create(scr, NULL); |
|||
lv_obj_set_pos(e2, 20, 45); |
|||
sprintf(buf, "e1: %d", (int)thermalManager.temp_hotend[1].celsius); |
|||
lv_label_set_text(e2, buf); |
|||
|
|||
e3 = lv_label_create(scr, NULL); |
|||
lv_obj_set_pos(e3, 20, 70); |
|||
sprintf(buf, "e1: %d", (int)thermalManager.temp_hotend[2].celsius); |
|||
lv_label_set_text(e3, buf); |
|||
|
|||
bed = lv_label_create(scr, NULL); |
|||
lv_obj_set_pos(bed, 20, 95); |
|||
sprintf(buf, "bed: %d", (int)thermalManager.temp_bed.celsius); |
|||
lv_label_set_text(bed, buf); |
|||
|
|||
limit_info = lv_label_create(scr, NULL); |
|||
|
|||
lv_style_copy(&limit_style, &lv_style_scr); |
|||
limit_style.body.main_color.full = 0X0000; |
|||
limit_style.body.grad_color.full = 0X0000; |
|||
limit_style.text.color.full = 0Xffff; |
|||
lv_obj_set_style(limit_info, &limit_style); |
|||
|
|||
lv_obj_set_pos(limit_info, 20, 120); |
|||
lv_label_set_text(limit_info, " "); |
|||
|
|||
det_info = lv_label_create(scr, NULL); |
|||
|
|||
lv_style_copy(&det_style, &lv_style_scr); |
|||
det_style.body.main_color.full = 0X0000; |
|||
det_style.body.grad_color.full = 0X0000; |
|||
det_style.text.color.full = 0Xffff; |
|||
lv_obj_set_style(det_info, &det_style); |
|||
|
|||
lv_obj_set_pos(det_info, 20, 145); |
|||
lv_label_set_text(det_info, " "); |
|||
#else // !MKS_TEST
|
|||
lv_obj_t *buttonPrint, *buttonTool, *buttonSet; |
|||
|
|||
disp_state_stack._disp_index = 0; |
|||
memset(disp_state_stack._disp_state, 0, sizeof(disp_state_stack._disp_state)); |
|||
disp_state_stack._disp_state[disp_state_stack._disp_index] = PRINT_READY_UI; |
|||
|
|||
disp_state = PRINT_READY_UI; |
|||
|
|||
scr = lv_obj_create(NULL, NULL); |
|||
|
|||
lv_obj_set_style(scr, &tft_style_scr); |
|||
lv_scr_load(scr); |
|||
lv_obj_clean(scr); |
|||
//lv_obj_set_hidden(scr,true);
|
|||
lv_refr_now(lv_refr_get_disp_refreshing()); |
|||
|
|||
LV_IMG_DECLARE(bmp_pic); |
|||
|
|||
//lv_obj_t * title = lv_label_create(scr, NULL);
|
|||
//lv_obj_set_style(title, &tft_style_lable_rel);
|
|||
//lv_obj_set_pos(title,TITLE_XPOS,TITLE_YPOS);
|
|||
//lv_label_set_text(title, creat_title_text());
|
|||
|
|||
/*Create an Image button*/ |
|||
buttonPrint = lv_imgbtn_create(scr, NULL); |
|||
buttonTool = lv_imgbtn_create(scr, NULL); |
|||
buttonSet = lv_imgbtn_create(scr, NULL); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonPrint, event_handler, ID_PRINT, "bmp_Print.bin", 0); |
|||
//lv_imgbtn_set_src_mks(buttonPrint, LV_BTN_STATE_REL, &bmp_pic,(uint8_t *)"bmp_printing.bin");
|
|||
lv_imgbtn_set_src(buttonPrint, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonPrint, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonPrint, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonPrint, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
lv_obj_clear_protect(buttonPrint, LV_PROTECT_FOLLOW); |
|||
#if 1 |
|||
lv_obj_set_event_cb_mks(buttonSet, event_handler, ID_SET, "bmp_Set.bin", 0); |
|||
//lv_imgbtn_set_src_mks(buttonSet, LV_BTN_STATE_REL, &bmp_pic,(uint8_t *)"bmp_set.bin");
|
|||
lv_imgbtn_set_src(buttonSet, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonSet, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonSet, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonSet, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonTool, event_handler, ID_TOOL, "bmp_Tool.bin", 0); |
|||
//lv_imgbtn_set_src_mks(buttonTool, LV_BTN_STATE_REL, &bmp_pic,(uint8_t *)"bmp_tool.bin");
|
|||
lv_imgbtn_set_src(buttonTool, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonTool, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonTool, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonTool, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
#endif |
|||
lv_obj_set_pos(buttonTool, 20, 90); |
|||
lv_obj_set_pos(buttonSet, 180, 90); |
|||
lv_obj_set_pos(buttonPrint, 340, 90); |
|||
|
|||
//lv_obj_set_pos(buttonTool,SIMPLE_FIRST_PAGE_GRAP+1,(TFT_HEIGHT-BTN_Y_PIXEL)/2+2);
|
|||
//lv_obj_set_pos(buttonSet,BTN_X_PIXEL+SIMPLE_FIRST_PAGE_GRAP*2+1,(TFT_HEIGHT-BTN_Y_PIXEL)/2+2);
|
|||
//lv_obj_set_pos(buttonPrint,BTN_X_PIXEL*2+SIMPLE_FIRST_PAGE_GRAP*3+1,(TFT_HEIGHT-BTN_Y_PIXEL)/2+2);
|
|||
|
|||
/*Create a label on the Image button*/ |
|||
lv_btn_set_layout(buttonPrint, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonSet, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonTool, LV_LAYOUT_OFF); |
|||
|
|||
lv_obj_t * label_print = lv_label_create(buttonPrint, NULL); |
|||
lv_obj_t * label_set = lv_label_create(buttonSet, NULL); |
|||
lv_obj_t * label_tool = lv_label_create(buttonTool, NULL); |
|||
if (gCfgItems.multiple_language != 0) { |
|||
|
|||
lv_label_set_text(label_print, main_menu.print); |
|||
lv_obj_align(label_print, buttonPrint, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_set, main_menu.set); |
|||
lv_obj_align(label_set, buttonSet, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
//lv_label_set_style(label_tool,LV_BTN_STATE_PR,&tft_style_lable_pre);
|
|||
//lv_label_set_style(label_tool,LV_BTN_STATE_REL,&tft_style_lable_rel);
|
|||
lv_label_set_text(label_tool, main_menu.tool); |
|||
lv_obj_align(label_tool, buttonTool, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
#endif // !MKS_TEST
|
|||
} |
|||
|
|||
void lv_clear_ready_print() { lv_obj_del(scr); } |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,39 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { /* C-declarations for C++ */ |
|||
#endif |
|||
|
|||
extern void lv_draw_ready_print(void); |
|||
extern void disp_test(); |
|||
extern void disp_Limit_ok(); |
|||
extern void disp_Limit_error(); |
|||
extern void disp_det_error(); |
|||
extern void disp_det_ok(); |
|||
extern void lv_clear_ready_print(); |
|||
|
|||
//extern void disp_temp_ready_print();
|
|||
#ifdef __cplusplus |
|||
} /* C-declarations for C++ */ |
|||
#endif |
@ -0,0 +1,258 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
#include "draw_ready_print.h" |
|||
#include "draw_set.h" |
|||
#include "lv_conf.h" |
|||
//#include "../lvgl/src/lv_objx/lv_imgbtn.h"
|
|||
//#include "../lvgl/src/lv_objx/lv_img.h"
|
|||
//#include "../lvgl/src/lv_core/lv_disp.h"
|
|||
//#include "../lvgl/src/lv_core/lv_refr.h"
|
|||
#include "draw_ui.h" |
|||
#include "../../../../gcode/queue.h" |
|||
|
|||
static lv_obj_t * scr; |
|||
|
|||
#define ID_S_WIFI 1 |
|||
#define ID_S_FAN 2 |
|||
#define ID_S_ABOUT 3 |
|||
#define ID_S_CONTINUE 4 |
|||
#define ID_S_MOTOR_OFF 5 |
|||
#define ID_S_LANGUAGE 6 |
|||
#define ID_S_RETURN 7 |
|||
|
|||
static void event_handler(lv_obj_t * obj, lv_event_t event) { |
|||
switch (obj->mks_obj_id) { |
|||
case ID_S_WIFI: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
} |
|||
break; |
|||
case ID_S_FAN: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
lv_obj_del(scr); |
|||
lv_draw_fan(); |
|||
} |
|||
break; |
|||
case ID_S_ABOUT: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
lv_obj_del(scr); |
|||
lv_draw_about(); |
|||
} |
|||
break; |
|||
case ID_S_CONTINUE: |
|||
|
|||
break; |
|||
case ID_S_MOTOR_OFF: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
#if HAS_SUICIDE |
|||
suicide(); |
|||
#else |
|||
queue.enqueue_one_now(PSTR("M84")); |
|||
#endif |
|||
} |
|||
break; |
|||
case ID_S_LANGUAGE: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
lv_obj_del(scr); |
|||
lv_draw_language(); |
|||
} |
|||
break; |
|||
case ID_S_RETURN: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
lv_obj_del(scr); |
|||
lv_draw_ready_print(); |
|||
} |
|||
break; |
|||
|
|||
} |
|||
} |
|||
|
|||
void lv_draw_set(void) { |
|||
lv_obj_t *buttonFan, *buttonAbout; |
|||
lv_obj_t *buMotorOff, *buttonLanguage, *buttonBack; |
|||
|
|||
if (disp_state_stack._disp_state[disp_state_stack._disp_index] != SET_UI) { |
|||
disp_state_stack._disp_index++; |
|||
disp_state_stack._disp_state[disp_state_stack._disp_index] = SET_UI; |
|||
} |
|||
disp_state = SET_UI; |
|||
|
|||
scr = lv_obj_create(NULL, NULL); |
|||
|
|||
//static lv_style_t tool_style;
|
|||
|
|||
lv_obj_set_style(scr, &tft_style_scr); |
|||
lv_scr_load(scr); |
|||
lv_obj_clean(scr); |
|||
|
|||
lv_obj_t * title = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(title, &tft_style_lable_rel); |
|||
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS); |
|||
lv_label_set_text(title, creat_title_text()); |
|||
|
|||
lv_refr_now(lv_refr_get_disp_refreshing()); |
|||
|
|||
LV_IMG_DECLARE(bmp_pic); |
|||
|
|||
/*Create an Image button*/ |
|||
//buttonWifi = lv_imgbtn_create(scr, NULL);
|
|||
buttonFan = lv_imgbtn_create(scr, NULL); |
|||
buttonAbout = lv_imgbtn_create(scr, NULL); |
|||
//buttonContinue = lv_imgbtn_create(scr, NULL);
|
|||
buMotorOff = lv_imgbtn_create(scr, NULL); |
|||
buttonLanguage = lv_imgbtn_create(scr, NULL); |
|||
buttonBack = lv_imgbtn_create(scr, NULL); |
|||
|
|||
|
|||
//lv_obj_set_event_cb_mks(buttonWifi, event_handler,ID_S_WIFI,"bmp_Wifi.bin",0);
|
|||
//lv_imgbtn_set_src(buttonWifi, LV_BTN_STATE_REL, &bmp_pic);
|
|||
//lv_imgbtn_set_src(buttonWifi, LV_BTN_STATE_PR, &bmp_pic);
|
|||
//lv_imgbtn_set_style(buttonWifi, LV_BTN_STATE_PR, &tft_style_lable_pre);
|
|||
//lv_imgbtn_set_style(buttonWifi, LV_BTN_STATE_REL, &tft_style_lable_rel);
|
|||
//lv_obj_clear_protect(buttonWifi, LV_PROTECT_FOLLOW);
|
|||
#if 1 |
|||
lv_obj_set_event_cb_mks(buttonFan, event_handler, ID_S_FAN, "bmp_Fan.bin", 0); |
|||
lv_imgbtn_set_src(buttonFan, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonFan, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonFan, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonFan, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonAbout, event_handler, ID_S_ABOUT, "bmp_About.bin", 0); |
|||
lv_imgbtn_set_src(buttonAbout, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonAbout, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonAbout, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonAbout, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
//lv_obj_set_event_cb_mks(buttonContinue, event_handler,ID_S_CONTINUE,"bmp_Breakpoint.bin",0);
|
|||
//lv_imgbtn_set_src(buttonContinue, LV_BTN_STATE_REL, &bmp_pic);
|
|||
//lv_imgbtn_set_src(buttonContinue, LV_BTN_STATE_PR, &bmp_pic);
|
|||
//lv_imgbtn_set_style(buttonContinue, LV_BTN_STATE_PR, &tft_style_lable_pre);
|
|||
//lv_imgbtn_set_style(buttonContinue, LV_BTN_STATE_REL, &tft_style_lable_rel);
|
|||
#if HAS_SUICIDE |
|||
lv_obj_set_event_cb_mks(buMotorOff, event_handler, ID_S_MOTOR_OFF, "bmp_Mamual.bin", 0); |
|||
#else |
|||
lv_obj_set_event_cb_mks(buMotorOff, event_handler, ID_S_MOTOR_OFF, "bmp_Motor_off.bin", 0); |
|||
#endif |
|||
lv_imgbtn_set_src(buMotorOff, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buMotorOff, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buMotorOff, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buMotorOff, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonLanguage, event_handler, ID_S_LANGUAGE, "bmp_Language.bin", 0); |
|||
lv_imgbtn_set_src(buttonLanguage, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonLanguage, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonLanguage, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonLanguage, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_S_RETURN, "bmp_Return.bin", 0); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
#endif |
|||
|
|||
/*lv_obj_set_pos(buttonWifi,INTERVAL_V,titleHeight);
|
|||
lv_obj_set_pos(buttonFan,BTN_X_PIXEL+INTERVAL_V*2,titleHeight); |
|||
lv_obj_set_pos(buttonAbout,BTN_X_PIXEL*2+INTERVAL_V*3,titleHeight); |
|||
lv_obj_set_pos(buttonContinue,BTN_X_PIXEL*3+INTERVAL_V*4,titleHeight); |
|||
lv_obj_set_pos(buMotorOff,INTERVAL_V, BTN_Y_PIXEL+INTERVAL_H+titleHeight); |
|||
lv_obj_set_pos(buttonLanguage,BTN_X_PIXEL+INTERVAL_V*2,BTN_Y_PIXEL+INTERVAL_H+titleHeight); |
|||
lv_obj_set_pos(buttonBack,BTN_X_PIXEL*3+INTERVAL_V*4, BTN_Y_PIXEL+INTERVAL_H+titleHeight);*/ |
|||
|
|||
//lv_obj_set_pos(buttonWifi,INTERVAL_V,titleHeight);
|
|||
lv_obj_set_pos(buttonFan, BTN_X_PIXEL + INTERVAL_V * 2, titleHeight); |
|||
lv_obj_set_pos(buttonAbout, BTN_X_PIXEL * 2 + INTERVAL_V * 3, titleHeight); |
|||
//lv_obj_set_pos(buttonContinue,BTN_X_PIXEL*3+INTERVAL_V*4,titleHeight);
|
|||
lv_obj_set_pos(buMotorOff, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight); |
|||
lv_obj_set_pos(buttonLanguage, INTERVAL_V, titleHeight); |
|||
lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
|
|||
/*Create a label on the Image button*/ |
|||
//lv_btn_set_layout(buttonWifi, LV_LAYOUT_OFF);
|
|||
lv_btn_set_layout(buttonFan, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonAbout, LV_LAYOUT_OFF); |
|||
//lv_btn_set_layout(buttonContinue, LV_LAYOUT_OFF);
|
|||
lv_btn_set_layout(buMotorOff, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonLanguage, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF); |
|||
|
|||
//lv_obj_t * labelWifi= lv_label_create(buttonWifi, NULL);
|
|||
lv_obj_t * labelFan = lv_label_create(buttonFan, NULL); |
|||
lv_obj_t * label_About = lv_label_create(buttonAbout, NULL); |
|||
//lv_obj_t * label_Continue = lv_label_create(buttonContinue, NULL);
|
|||
lv_obj_t * label_MotorOff = lv_label_create(buMotorOff, NULL); |
|||
lv_obj_t * label_Language = lv_label_create(buttonLanguage, NULL); |
|||
lv_obj_t * label_Back = lv_label_create(buttonBack, NULL); |
|||
|
|||
|
|||
if (gCfgItems.multiple_language != 0) { |
|||
//lv_label_set_text(labelWifi, set_menu.wifi);
|
|||
//lv_obj_align(labelWifi, buttonWifi, LV_ALIGN_IN_BOTTOM_MID,0, BUTTON_TEXT_Y_OFFSET);
|
|||
|
|||
lv_label_set_text(labelFan, set_menu.fan); |
|||
lv_obj_align(labelFan, buttonFan, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_About, set_menu.about); |
|||
lv_obj_align(label_About, buttonAbout, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
//lv_label_set_text(label_Continue, set_menu.breakpoint);
|
|||
//lv_obj_align(label_Continue, buttonContinue, LV_ALIGN_IN_BOTTOM_MID,0, BUTTON_TEXT_Y_OFFSET);
|
|||
#if HAS_SUICIDE |
|||
lv_label_set_text(label_MotorOff, set_menu.shutdown); |
|||
#else |
|||
lv_label_set_text(label_MotorOff, set_menu.motoroff); |
|||
#endif |
|||
lv_obj_align(label_MotorOff, buMotorOff, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_Language, set_menu.language); |
|||
lv_obj_align(label_Language, buttonLanguage, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_Back, common_menu.text_back); |
|||
lv_obj_align(label_Back, buttonBack, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
} |
|||
|
|||
void lv_clear_set() { lv_obj_del(scr); } |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,34 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { /* C-declarations for C++ */ |
|||
#endif |
|||
|
|||
extern void lv_draw_set(void); |
|||
extern void lv_clear_set(); |
|||
|
|||
//extern void disp_temp_ready_print();
|
|||
#ifdef __cplusplus |
|||
} /* C-declarations for C++ */ |
|||
#endif |
@ -0,0 +1,270 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include "lv_conf.h" |
|||
#include "draw_ui.h" |
|||
//#include "../lvgl/src/lv_objx/lv_imgbtn.h"
|
|||
//#include "../lvgl/src/lv_objx/lv_img.h"
|
|||
//#include "../lvgl/src/lv_core/lv_disp.h"
|
|||
//#include "../lvgl/src/lv_core/lv_refr.h"
|
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
#include "../../../../gcode/queue.h" |
|||
|
|||
//static lv_obj_t *buttonMoveZ,*buttonTest,*buttonZ0,*buttonStop,*buttonReturn;
|
|||
static lv_obj_t * scr; |
|||
#if ENABLED(MKS_TEST) |
|||
extern uint8_t curent_disp_ui; |
|||
#endif |
|||
|
|||
#define ID_T_PRE_HEAT 1 |
|||
#define ID_T_EXTRUCT 2 |
|||
#define ID_T_MOV 3 |
|||
#define ID_T_HOME 4 |
|||
#define ID_T_LEVELING 5 |
|||
#define ID_T_FILAMENT 6 |
|||
#define ID_T_MORE 7 |
|||
#define ID_T_RETURN 8 |
|||
|
|||
static void event_handler(lv_obj_t * obj, lv_event_t event) { |
|||
switch (obj->mks_obj_id) { |
|||
case ID_T_PRE_HEAT: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
lv_clear_tool(); |
|||
lv_draw_preHeat(); |
|||
} |
|||
break; |
|||
case ID_T_EXTRUCT: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
lv_clear_tool(); |
|||
lv_draw_extrusion(); |
|||
} |
|||
break; |
|||
case ID_T_MOV: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
lv_clear_tool(); |
|||
lv_draw_move_motor(); |
|||
} |
|||
break; |
|||
case ID_T_HOME: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
lv_clear_tool(); |
|||
lv_draw_home(); |
|||
} |
|||
break; |
|||
case ID_T_LEVELING: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
#if ENABLED(AUTO_BED_LEVELING_BILINEAR) |
|||
queue.enqueue_one_P(PSTR("G28")); |
|||
queue.enqueue_one_P(PSTR("G29")); |
|||
#else |
|||
uiCfg.leveling_first_time = 1; |
|||
lv_clear_tool(); |
|||
lv_draw_manualLevel(); |
|||
#endif |
|||
} |
|||
break; |
|||
case ID_T_FILAMENT: break; |
|||
case ID_T_MORE: break; |
|||
case ID_T_RETURN: |
|||
if (event == LV_EVENT_CLICKED) { |
|||
// nothing to do
|
|||
} |
|||
else if (event == LV_EVENT_RELEASED) { |
|||
TERN_(MKS_TEST, curent_disp_ui = 1); |
|||
lv_obj_del(scr); |
|||
lv_draw_ready_print(); |
|||
} |
|||
break; |
|||
} |
|||
} |
|||
|
|||
void lv_draw_tool(void) { |
|||
lv_obj_t *buttonPreHeat, *buttonExtrusion, *buttonMove, *buttonHome, *buttonLevel; |
|||
lv_obj_t *buttonBack; |
|||
|
|||
if (disp_state_stack._disp_state[disp_state_stack._disp_index] != TOOL_UI) { |
|||
disp_state_stack._disp_index++; |
|||
disp_state_stack._disp_state[disp_state_stack._disp_index] = TOOL_UI; |
|||
} |
|||
disp_state = TOOL_UI; |
|||
|
|||
scr = lv_obj_create(NULL, NULL); |
|||
|
|||
//static lv_style_t tool_style;
|
|||
|
|||
lv_obj_set_style(scr, &tft_style_scr); |
|||
lv_scr_load(scr); |
|||
lv_obj_clean(scr); |
|||
|
|||
lv_obj_t * title = lv_label_create(scr, NULL); |
|||
lv_obj_set_style(title, &tft_style_lable_rel); |
|||
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS); |
|||
lv_label_set_text(title, creat_title_text()); |
|||
|
|||
lv_refr_now(lv_refr_get_disp_refreshing()); |
|||
|
|||
LV_IMG_DECLARE(bmp_pic); |
|||
|
|||
/*Create an Image button*/ |
|||
buttonPreHeat = lv_imgbtn_create(scr, NULL); |
|||
buttonExtrusion = lv_imgbtn_create(scr, NULL); |
|||
buttonMove = lv_imgbtn_create(scr, NULL); |
|||
buttonHome = lv_imgbtn_create(scr, NULL); |
|||
buttonLevel = lv_imgbtn_create(scr, NULL); |
|||
//buttonFilament = lv_imgbtn_create(scr, NULL);
|
|||
//buttonMore = lv_imgbtn_create(scr, NULL);
|
|||
buttonBack = lv_imgbtn_create(scr, NULL); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonPreHeat, event_handler, ID_T_PRE_HEAT, "bmp_PreHeat.bin", 0); |
|||
lv_imgbtn_set_src(buttonPreHeat, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonPreHeat, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonPreHeat, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonPreHeat, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
lv_obj_clear_protect(buttonPreHeat, LV_PROTECT_FOLLOW); |
|||
|
|||
#if 1 |
|||
lv_obj_set_event_cb_mks(buttonExtrusion, event_handler, ID_T_EXTRUCT, "bmp_Extruct.bin", 0); |
|||
lv_imgbtn_set_src(buttonExtrusion, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonExtrusion, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonExtrusion, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonExtrusion, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonMove, event_handler, ID_T_MOV, "bmp_Mov.bin", 0); |
|||
lv_imgbtn_set_src(buttonMove, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonMove, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonMove, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonMove, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonHome, event_handler, ID_T_HOME, "bmp_Zero.bin", 0); |
|||
lv_imgbtn_set_src(buttonHome, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonHome, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonHome, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonHome, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
lv_obj_set_event_cb_mks(buttonLevel, event_handler, ID_T_LEVELING, "bmp_Leveling.bin", 0); |
|||
lv_imgbtn_set_src(buttonLevel, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonLevel, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonLevel, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonLevel, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
|
|||
//lv_obj_set_event_cb_mks(buttonFilament, event_handler,ID_T_FILAMENT,"bmp_Filamentchange.bin",0);
|
|||
//lv_imgbtn_set_src(buttonFilament, LV_BTN_STATE_REL, &bmp_pic);
|
|||
//lv_imgbtn_set_src(buttonFilament, LV_BTN_STATE_PR, &bmp_pic);
|
|||
//lv_imgbtn_set_style(buttonFilament, LV_BTN_STATE_PR, &tft_style_lable_pre);
|
|||
//lv_imgbtn_set_style(buttonFilament, LV_BTN_STATE_REL, &tft_style_lable_rel);
|
|||
|
|||
//lv_obj_set_event_cb_mks(buttonMore, event_handler,ID_T_MORE,"bmp_More.bin",0);
|
|||
//lv_imgbtn_set_src(buttonMore, LV_BTN_STATE_REL, &bmp_pic);
|
|||
//lv_imgbtn_set_src(buttonMore, LV_BTN_STATE_PR, &bmp_pic);
|
|||
//lv_imgbtn_set_style(buttonMore, LV_BTN_STATE_PR, &tft_style_lable_pre);
|
|||
//lv_imgbtn_set_style(buttonMore, LV_BTN_STATE_REL, &tft_style_lable_rel);
|
|||
|
|||
lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_T_RETURN, "bmp_Return.bin", 0); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic); |
|||
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre); |
|||
lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel); |
|||
#endif |
|||
|
|||
lv_obj_set_pos(buttonPreHeat, INTERVAL_V, titleHeight); |
|||
lv_obj_set_pos(buttonExtrusion, BTN_X_PIXEL + INTERVAL_V * 2, titleHeight); |
|||
lv_obj_set_pos(buttonMove, BTN_X_PIXEL * 2 + INTERVAL_V * 3, titleHeight); |
|||
lv_obj_set_pos(buttonHome, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight); |
|||
lv_obj_set_pos(buttonLevel, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
//lv_obj_set_pos(buttonFilament,BTN_X_PIXEL+INTERVAL_V*2,BTN_Y_PIXEL+INTERVAL_H+titleHeight);
|
|||
//lv_obj_set_pos(buttonMore,BTN_X_PIXEL*2+INTERVAL_V*3, BTN_Y_PIXEL+INTERVAL_H+titleHeight);
|
|||
lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight); |
|||
|
|||
/*Create a label on the Image button*/ |
|||
lv_btn_set_layout(buttonPreHeat, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonExtrusion, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonMove, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonHome, LV_LAYOUT_OFF); |
|||
lv_btn_set_layout(buttonLevel, LV_LAYOUT_OFF); |
|||
//lv_btn_set_layout(buttonFilament, LV_LAYOUT_OFF);
|
|||
//lv_btn_set_layout(buttonMore, LV_LAYOUT_OFF);
|
|||
lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF); |
|||
|
|||
lv_obj_t * labelPreHeat = lv_label_create(buttonPreHeat, NULL); |
|||
lv_obj_t * labelExtrusion = lv_label_create(buttonExtrusion, NULL); |
|||
lv_obj_t * label_Move = lv_label_create(buttonMove, NULL); |
|||
lv_obj_t * label_Home = lv_label_create(buttonHome, NULL); |
|||
lv_obj_t * label_Level = lv_label_create(buttonLevel, NULL); |
|||
//lv_obj_t * label_Filament = lv_label_create(buttonFilament, NULL);
|
|||
//lv_obj_t * label_More = lv_label_create(buttonMore, NULL);
|
|||
lv_obj_t * label_Back = lv_label_create(buttonBack, NULL); |
|||
|
|||
if (gCfgItems.multiple_language != 0) { |
|||
lv_label_set_text(labelPreHeat, tool_menu.preheat); |
|||
lv_obj_align(labelPreHeat, buttonPreHeat, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(labelExtrusion, tool_menu.extrude); |
|||
lv_obj_align(labelExtrusion, buttonExtrusion, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_Move, tool_menu.move); |
|||
lv_obj_align(label_Move, buttonMove, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
lv_label_set_text(label_Home, tool_menu.home); |
|||
lv_obj_align(label_Home, buttonHome, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
/*
|
|||
if (gCfgItems.leveling_mode != 2) { |
|||
lv_label_set_text(label_Level, gCfgItems.leveling_mode == 1 ? tool_menu.autoleveling : tool_menu.leveling); |
|||
lv_obj_align(label_Level, buttonLevel, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
*/ |
|||
lv_label_set_text(label_Level, tool_menu.TERN(AUTO_BED_LEVELING_BILINEAR, autoleveling, leveling)); |
|||
lv_obj_align(label_Level, buttonLevel, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
|
|||
//lv_label_set_text(label_Filament, tool_menu.filament);
|
|||
//lv_obj_align(label_Filament, buttonFilament, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
|
|||
|
|||
//lv_label_set_text(label_More, tool_menu.more);
|
|||
//lv_obj_align(label_More, buttonMore, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
|
|||
|
|||
lv_label_set_text(label_Back, common_menu.text_back); |
|||
lv_obj_align(label_Back, buttonBack, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); |
|||
} |
|||
} |
|||
|
|||
void lv_clear_tool() { lv_obj_del(scr); } |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,34 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { /* C-declarations for C++ */ |
|||
#endif |
|||
|
|||
extern void lv_draw_tool(void); |
|||
extern void lv_clear_tool(); |
|||
|
|||
//extern void disp_temp_ready_print();
|
|||
#ifdef __cplusplus |
|||
} /* C-declarations for C++ */ |
|||
#endif |
File diff suppressed because it is too large
@ -0,0 +1,229 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { /* C-declarations for C++ */ |
|||
#endif |
|||
|
|||
#include <stdint.h> |
|||
#include <string.h> |
|||
#include "lvgl.h" |
|||
#include "inc/tft_multi_language.h" |
|||
#include "inc/draw_ready_print.h" |
|||
#include "inc/draw_language.h" |
|||
#include "inc/draw_set.h" |
|||
#include "inc/draw_tool.h" |
|||
#include "inc/draw_print_file.h" |
|||
#include "inc/draw_dialog.h" |
|||
#include "inc/draw_printing.h" |
|||
#include "inc/draw_opration.h" |
|||
#include "inc/draw_preHeat.h" |
|||
#include "inc/draw_extrusion.h" |
|||
#include "inc/draw_home.h" |
|||
#include "inc/draw_move_motor.h" |
|||
#include "inc/draw_fan.h" |
|||
#include "inc/draw_about.h" |
|||
#include "inc/draw_change_speed.h" |
|||
#include "inc/draw_manuaLevel.h" |
|||
#include "inc/draw_error_message.h" |
|||
#include "inc/printer_opration.h" |
|||
|
|||
#define TFT35 |
|||
|
|||
#ifdef TFT35 |
|||
|
|||
#define TFT_WIDTH 480 |
|||
#define TFT_HEIGHT 320 |
|||
|
|||
#define titleHeight 36 // TFT_screen.title_high
|
|||
#define INTERVAL_H 2 // TFT_screen.gap_h // 2
|
|||
#define INTERVAL_V 2 // TFT_screen.gap_v // 2
|
|||
#define BTN_X_PIXEL 117 // TFT_screen.btn_x_pixel
|
|||
#define BTN_Y_PIXEL 140 // TFT_screen.btn_y_pixel
|
|||
|
|||
#define SIMPLE_FIRST_PAGE_GRAP 30 |
|||
|
|||
#define BUTTON_TEXT_Y_OFFSET -20 |
|||
|
|||
#define TITLE_XPOS 3 //TFT_screen.title_xpos
|
|||
#define TITLE_YPOS 5 //TFT_screen.title_ypos
|
|||
|
|||
#define FILE_BTN_CNT 6 |
|||
|
|||
#define OTHER_BTN_XPIEL 117 |
|||
#define OTHER_BTN_YPIEL 92 |
|||
|
|||
#define FILE_PRE_PIC_X_OFFSET 8 |
|||
#define FILE_PRE_PIC_Y_OFFSET 0 |
|||
|
|||
#define PREVIEW_LITTLE_PIC_SIZE 40910//400*100+9*101+1
|
|||
#define PREVIEW_SIZE 202720//(PREVIEW_LITTLE_PIC_SIZE+800*200+201*9+1)
|
|||
|
|||
#define GCFG_FLAG_VALUE 0xEE |
|||
|
|||
#else |
|||
|
|||
#define TFT_WIDTH 320 |
|||
#define TFT_HEIGHT 240 |
|||
|
|||
#endif |
|||
|
|||
extern char public_buf_m[100]; |
|||
extern char public_buf_l[30]; |
|||
|
|||
typedef struct { |
|||
uint8_t spi_flash_flag; |
|||
uint8_t multiple_language; |
|||
uint8_t language; |
|||
uint8_t leveling_mode; |
|||
uint8_t from_flash_pic; |
|||
uint8_t finish_power_off; |
|||
uint8_t pause_reprint; |
|||
uint32_t curFilesize; |
|||
} CFG_ITMES; |
|||
|
|||
typedef struct { |
|||
uint8_t curTempType : 1, |
|||
curSprayerChoose : 3, |
|||
stepHeat : 4; |
|||
uint8_t leveling_first_time : 1; |
|||
uint8_t extruStep; |
|||
uint8_t extruSpeed; |
|||
uint8_t print_state; |
|||
uint8_t stepPrintSpeed; |
|||
uint8_t waitEndMoves; |
|||
uint16_t moveSpeed; |
|||
float move_dist; |
|||
} UI_CFG; |
|||
|
|||
typedef enum { |
|||
MAIN_UI, |
|||
PRINT_READY_UI, |
|||
PRINT_FILE_UI, |
|||
PRINTING_UI, |
|||
MOVE_MOTOR_UI, |
|||
OPERATE_UI, |
|||
PAUSE_UI, |
|||
EXTRUSION_UI, |
|||
FAN_UI, |
|||
PRE_HEAT_UI, |
|||
CHANGE_SPEED_UI, |
|||
TEMP_UI, |
|||
SET_UI, |
|||
ZERO_UI, |
|||
SPRAYER_UI, |
|||
MACHINE_UI, |
|||
LANGUAGE_UI, |
|||
ABOUT_UI, |
|||
LOG_UI, |
|||
DISK_UI, |
|||
CALIBRATE_UI, |
|||
DIALOG_UI, |
|||
WIFI_UI, |
|||
MORE_UI, |
|||
FILETRANSFER_UI, |
|||
FILETRANSFERSTATE_UI, |
|||
PRINT_MORE_UI, |
|||
FILAMENTCHANGE_UI, |
|||
LEVELING_UI, |
|||
MESHLEVELING_UI, |
|||
BIND_UI, |
|||
ZOFFSET_UI, |
|||
TOOL_UI, |
|||
HARDWARE_TEST_UI, |
|||
WIFI_LIST_UI, |
|||
KEY_BOARD_UI, |
|||
TIPS_UI, |
|||
MACHINE_PARA_UI, |
|||
MACHINE_SETTINGS_UI, |
|||
TEMPERATURE_SETTINGS_UI, |
|||
MOTOR_SETTINGS_UI, |
|||
MACHINETYPE_UI, |
|||
STROKE_UI, |
|||
HOME_DIR_UI, |
|||
ENDSTOP_TYPE_UI, |
|||
FILAMENT_SETTINGS_UI, |
|||
LEVELING_SETTIGNS_UI, |
|||
LEVELING_PARA_UI, |
|||
DELTA_LEVELING_PARA_UI, |
|||
XYZ_LEVELING_PARA_UI, |
|||
MAXFEEDRATE_UI, |
|||
STEPS_UI, |
|||
ACCELERATION_UI, |
|||
JERK_UI, |
|||
MOTORDIR_UI, |
|||
HOMESPEED_UI, |
|||
NOZZLE_CONFIG_UI, |
|||
HOTBED_CONFIG_UI, |
|||
ADVANCED_UI, |
|||
DOUBLE_Z_UI, |
|||
ENABLE_INVERT_UI, |
|||
NUMBER_KEY_UI, |
|||
BABY_STEP_UI, |
|||
ERROR_MESSAGE_UI |
|||
} DISP_STATE; |
|||
|
|||
typedef struct { |
|||
DISP_STATE _disp_state[100]; |
|||
int _disp_index; |
|||
} DISP_STATE_STACK; |
|||
|
|||
typedef struct { |
|||
int16_t days; |
|||
uint16_t hours; |
|||
uint8_t minutes; |
|||
volatile int8_t seconds; |
|||
int8_t ms_10; |
|||
int8_t start; |
|||
} PRINT_TIME; |
|||
extern PRINT_TIME print_time; |
|||
|
|||
extern CFG_ITMES gCfgItems; |
|||
extern UI_CFG uiCfg; |
|||
extern DISP_STATE disp_state; |
|||
extern DISP_STATE last_disp_state; |
|||
extern DISP_STATE_STACK disp_state_stack; |
|||
|
|||
extern lv_style_t tft_style_scr; |
|||
extern lv_style_t tft_style_lable_pre; |
|||
extern lv_style_t tft_style_lable_rel; |
|||
|
|||
extern void gCfgItems_init(); |
|||
extern void ui_cfg_init(); |
|||
extern void tft_style_init(); |
|||
extern char *creat_title_text(void); |
|||
extern void preview_gcode_prehandle(char *path); |
|||
extern void update_spi_flash(); |
|||
extern void disp_pre_gcode(int xpos_pixel, int ypos_pixel); |
|||
extern void GUI_RefreshPage(); |
|||
extern void clear_cur_ui(); |
|||
extern void draw_return_ui(); |
|||
extern void sd_detection(); |
|||
extern void gCfg_to_spiFlah(); |
|||
extern void print_time_count(); |
|||
|
|||
extern void LV_TASK_HANDLER(); |
|||
|
|||
#ifdef __cplusplus |
|||
} /* C-declarations for C++ */ |
|||
#endif |
@ -0,0 +1,111 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
#include "lvgl.h" |
|||
#include "pic_manager.h" |
|||
|
|||
typedef struct { |
|||
uint16_t min; |
|||
uint16_t max; |
|||
uint8_t bpp; |
|||
uint8_t reserved[3]; |
|||
} x_header_t; |
|||
|
|||
typedef struct { |
|||
uint32_t pos; |
|||
} x_table_t; |
|||
|
|||
typedef struct { |
|||
uint8_t adv_w; |
|||
uint8_t box_w; |
|||
} glyph_dsc_t; |
|||
|
|||
static x_header_t __g_xbf_hd = { .min = 0, .max = 0, .bpp = 0 }; |
|||
static uint8_t __g_font_buf[75]; |
|||
|
|||
static uint8_t *__user_font_getdata(int offset, int size) { |
|||
//memset(__g_font_buf,0,sizeof(__g_font_buf));
|
|||
get_spi_flash_data((char *)__g_font_buf, offset, size); |
|||
return __g_font_buf; |
|||
//return &buf_test[offset];
|
|||
} |
|||
|
|||
static const uint8_t * __user_font_get_bitmap(const lv_font_t * font, uint32_t unicode_letter) { |
|||
if (__g_xbf_hd.max == 0) { |
|||
uint8_t *p = __user_font_getdata(0, sizeof(x_header_t)); |
|||
memcpy(&__g_xbf_hd, p, sizeof(x_header_t)); |
|||
} |
|||
if (unicode_letter > __g_xbf_hd.max || unicode_letter < __g_xbf_hd.min) |
|||
return NULL; |
|||
uint32_t unicode_offset = sizeof(x_header_t) + (unicode_letter - __g_xbf_hd.min) * 4; |
|||
uint32_t *p_pos = (uint32_t *)__user_font_getdata(unicode_offset, 4); |
|||
if (p_pos[0] != 0) { |
|||
uint32_t pos = p_pos[0]; |
|||
//glyph_dsc_t * gdsc = (glyph_dsc_t*)__user_font_getdata(pos, 2);
|
|||
__user_font_getdata(pos, 2); |
|||
//return __user_font_getdata(pos+2, gdsc->box_w*__g_xbf_hd.bpp/8);
|
|||
return __user_font_getdata(pos + 2, sizeof(__g_font_buf)); |
|||
} |
|||
return NULL; |
|||
} |
|||
|
|||
static bool __user_font_get_glyph_dsc(const lv_font_t * font, lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter, uint32_t unicode_letter_next) { |
|||
if (__g_xbf_hd.max == 0) { |
|||
uint8_t *p = __user_font_getdata(0, sizeof(x_header_t)); |
|||
memcpy(&__g_xbf_hd, p, sizeof(x_header_t)); |
|||
} |
|||
if (unicode_letter > __g_xbf_hd.max || unicode_letter < __g_xbf_hd.min) |
|||
return NULL; |
|||
uint32_t unicode_offset = sizeof(x_header_t) + (unicode_letter - __g_xbf_hd.min) * 4; |
|||
uint32_t *p_pos = (uint32_t *)__user_font_getdata(unicode_offset, 4); |
|||
if (p_pos[0] != 0) { |
|||
glyph_dsc_t * gdsc = (glyph_dsc_t*)__user_font_getdata(p_pos[0], 2); |
|||
dsc_out->adv_w = gdsc->adv_w; |
|||
dsc_out->box_h = font->line_height; |
|||
dsc_out->box_w = gdsc->box_w; |
|||
dsc_out->ofs_x = 0; |
|||
dsc_out->ofs_y = 0; |
|||
dsc_out->bpp = __g_xbf_hd.bpp; |
|||
return true; |
|||
} |
|||
return false; |
|||
} |
|||
|
|||
/*lv_font_t gb2312_puhui32 = {
|
|||
.get_glyph_bitmap = __user_font_get_bitmap, |
|||
.get_glyph_dsc = __user_font_get_glyph_dsc, |
|||
.line_height = 25, |
|||
.base_line = 0, |
|||
};*/ |
|||
lv_font_t gb2312_puhui32; |
|||
void init_gb2312_font() { |
|||
gb2312_puhui32.get_glyph_bitmap = __user_font_get_bitmap; |
|||
gb2312_puhui32.get_glyph_dsc = __user_font_get_glyph_dsc; |
|||
gb2312_puhui32.line_height = 25; |
|||
gb2312_puhui32.base_line = 0; |
|||
} |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,594 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include "tft_lvgl_configuration.h" |
|||
#include "lvgl.h" |
|||
#include "draw_ready_print.h" |
|||
#include "W25Qxx.h" |
|||
#include "pic_manager.h" |
|||
#include "mks_hardware_test.h" |
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
#include "../../../../module/temperature.h" |
|||
#include "../../../../feature/touch/xpt2046.h" |
|||
|
|||
#if ENABLED(MKS_TEST) |
|||
|
|||
extern uint8_t curent_disp_ui; |
|||
|
|||
uint8_t pw_det_sta, pw_off_sta, mt_det_sta, mt_det2_sta, mt_det3_sta; |
|||
uint8_t endstopx1_sta, endstopx2_sta, endstopy1_sta, endstopy2_sta, endstopz1_sta, endstopz2_sta; |
|||
void test_gpio_readlevel_L() { |
|||
volatile uint32_t itest; |
|||
WRITE(WIFI_IO2_PIN, HIGH); |
|||
itest = 10000; |
|||
while (itest--); |
|||
pw_det_sta = (READ(POWER_LOSS_PIN) == 0); |
|||
pw_off_sta = (READ(PS_ON_PIN) == 0); |
|||
mt_det_sta = (READ(FIL_RUNOUT_PIN) == 0); |
|||
mt_det2_sta = (READ(FIL_RUNOUT_2_PIN) == 0); |
|||
mt_det3_sta = (READ(FIL_RUNOUT_3_PIN) == 0); |
|||
endstopx1_sta = (READ(X_MIN_PIN) == 0); |
|||
endstopx2_sta = (READ(X_MAX_PIN) == 0); |
|||
endstopy1_sta = (READ(Y_MIN_PIN) == 0); |
|||
endstopy2_sta = (READ(Y_MAX_PIN) == 0); |
|||
endstopz1_sta = (READ(Z_MIN_PIN) == 0); |
|||
endstopz2_sta = (READ(Z_MAX_PIN) == 0); |
|||
} |
|||
|
|||
void test_gpio_readlevel_H() { |
|||
volatile uint32_t itest; |
|||
WRITE(WIFI_IO2_PIN, LOW); |
|||
itest = 10000; |
|||
while (itest--); |
|||
pw_det_sta = (READ(POWER_LOSS_PIN) == 1); |
|||
pw_off_sta = (READ(PS_ON_PIN) == 1); |
|||
mt_det_sta = (READ(FIL_RUNOUT_PIN) == 1); |
|||
mt_det2_sta = (READ(FIL_RUNOUT_2_PIN) == 1); |
|||
mt_det3_sta = (READ(FIL_RUNOUT_3_PIN) == 1); |
|||
endstopx1_sta = (READ(X_MIN_PIN) == 1); |
|||
endstopx2_sta = (READ(X_MAX_PIN) == 1); |
|||
endstopy1_sta = (READ(Y_MIN_PIN) == 1); |
|||
endstopy2_sta = (READ(Y_MAX_PIN) == 1); |
|||
endstopz1_sta = (READ(Z_MIN_PIN) == 1); |
|||
endstopz2_sta = (READ(Z_MAX_PIN) == 1); |
|||
} |
|||
|
|||
void init_Tst_GPIO() { |
|||
SET_INPUT_PULLUP(X_MIN_PIN); |
|||
SET_INPUT_PULLUP(X_MAX_PIN); |
|||
SET_INPUT_PULLUP(Y_MIN_PIN); |
|||
SET_INPUT_PULLUP(Y_MAX_PIN); |
|||
SET_INPUT_PULLUP(Z_MIN_PIN); |
|||
SET_INPUT_PULLUP(Z_MAX_PIN); |
|||
|
|||
SET_OUTPUT(WIFI_IO2_PIN); |
|||
|
|||
SET_INPUT_PULLUP(FIL_RUNOUT_PIN); |
|||
SET_INPUT_PULLUP(FIL_RUNOUT_2_PIN); |
|||
SET_INPUT_PULLUP(FIL_RUNOUT_3_PIN); |
|||
|
|||
SET_INPUT_PULLUP(POWER_LOSS_PIN); |
|||
SET_INPUT_PULLUP(PS_ON_PIN); |
|||
|
|||
SET_INPUT_PULLUP(SERVO0_PIN); |
|||
|
|||
SET_OUTPUT(E0_ENABLE_PIN); |
|||
SET_OUTPUT(X_ENABLE_PIN); |
|||
|
|||
WRITE(X_ENABLE_PIN, LOW); |
|||
WRITE(Y_ENABLE_PIN, LOW); |
|||
WRITE(Z_ENABLE_PIN, LOW); |
|||
WRITE(E0_ENABLE_PIN, LOW); |
|||
WRITE(E1_ENABLE_PIN, LOW); |
|||
WRITE(E2_ENABLE_PIN, LOW); |
|||
} |
|||
|
|||
void mks_test_beeper() { |
|||
WRITE(BEEPER_PIN, HIGH); |
|||
delay(100); |
|||
WRITE(BEEPER_PIN, LOW); |
|||
delay(100); |
|||
} |
|||
|
|||
void Test_GPIO() { |
|||
init_Tst_GPIO(); |
|||
|
|||
test_gpio_readlevel_L(); |
|||
test_gpio_readlevel_H(); |
|||
test_gpio_readlevel_L(); |
|||
if ((pw_det_sta == 1) && (mt_det_sta == 1) && (mt_det2_sta == 1) && (mt_det3_sta == 1)) { |
|||
if (curent_disp_ui == 1) disp_det_ok(); |
|||
} |
|||
else if (curent_disp_ui == 1) disp_det_error(); |
|||
if ((endstopx1_sta == 1) |
|||
&& (endstopx2_sta == 1) |
|||
&& (endstopy1_sta == 1) |
|||
&& (endstopy2_sta == 1) |
|||
&& (endstopz1_sta == 1) |
|||
&& (endstopz2_sta == 1) |
|||
) { |
|||
if (curent_disp_ui == 1) disp_Limit_ok(); |
|||
} |
|||
else if (curent_disp_ui == 1) |
|||
disp_Limit_error(); |
|||
//mks_test_beeper();
|
|||
|
|||
} |
|||
|
|||
void mks_test() { |
|||
if (millis() % 2000 < 1000) { |
|||
WRITE(X_DIR_PIN, LOW); |
|||
WRITE(Y_DIR_PIN, LOW); |
|||
WRITE(Z_DIR_PIN, LOW); |
|||
WRITE(E0_DIR_PIN, LOW); |
|||
WRITE(E1_DIR_PIN, LOW); |
|||
WRITE(E2_DIR_PIN, LOW); |
|||
thermalManager.fan_speed[0] = 255; |
|||
WRITE(HEATER_2_PIN, HIGH); // HE2
|
|||
WRITE(HEATER_1_PIN, HIGH); // HE1
|
|||
WRITE(HEATER_0_PIN, HIGH); // HE0
|
|||
WRITE(HEATER_BED_PIN, HIGH); // HOT-BED
|
|||
} |
|||
else { |
|||
WRITE(X_DIR_PIN, HIGH); |
|||
WRITE(Y_DIR_PIN, HIGH); |
|||
WRITE(Z_DIR_PIN, HIGH); |
|||
WRITE(E0_DIR_PIN, HIGH); |
|||
WRITE(E1_DIR_PIN, HIGH); |
|||
WRITE(E2_DIR_PIN, HIGH); |
|||
thermalManager.fan_speed[0] = 0; |
|||
WRITE(HEATER_2_PIN, LOW); // HE2
|
|||
WRITE(HEATER_1_PIN, LOW); // HE1
|
|||
WRITE(HEATER_0_PIN, LOW); // HE0
|
|||
WRITE(HEATER_BED_PIN, LOW); // HOT-BED
|
|||
} |
|||
if ((endstopx1_sta == 1) && (endstopx2_sta == 1) |
|||
&& (endstopy1_sta == 1) && (endstopy2_sta == 1) |
|||
&& (endstopz1_sta == 1) && (endstopz2_sta == 1) |
|||
) { |
|||
|
|||
} |
|||
else { |
|||
mks_test_beeper(); |
|||
} |
|||
|
|||
if (curent_disp_ui == 1) |
|||
disp_test(); |
|||
} |
|||
|
|||
#endif // MKS_TEST
|
|||
|
|||
static const uint16_t ASCII_Table_16x24[] PROGMEM = { |
|||
// Space ' '
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '!'
|
|||
0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, |
|||
0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, |
|||
0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '"'
|
|||
0x0000, 0x0000, 0x00CC, 0x00CC, 0x00CC, 0x00CC, 0x00CC, 0x00CC, |
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '#'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C60, 0x0C60, |
|||
0x0C60, 0x0630, 0x0630, 0x1FFE, 0x1FFE, 0x0630, 0x0738, 0x0318, |
|||
0x1FFE, 0x1FFE, 0x0318, 0x0318, 0x018C, 0x018C, 0x018C, 0x0000, |
|||
// '$'
|
|||
0x0000, 0x0080, 0x03E0, 0x0FF8, 0x0E9C, 0x1C8C, 0x188C, 0x008C, |
|||
0x0098, 0x01F8, 0x07E0, 0x0E80, 0x1C80, 0x188C, 0x188C, 0x189C, |
|||
0x0CB8, 0x0FF0, 0x03E0, 0x0080, 0x0080, 0x0000, 0x0000, 0x0000, |
|||
// '%'
|
|||
0x0000, 0x0000, 0x0000, 0x180E, 0x0C1B, 0x0C11, 0x0611, 0x0611, |
|||
0x0311, 0x0311, 0x019B, 0x018E, 0x38C0, 0x6CC0, 0x4460, 0x4460, |
|||
0x4430, 0x4430, 0x4418, 0x6C18, 0x380C, 0x0000, 0x0000, 0x0000, |
|||
// '&'
|
|||
0x0000, 0x01E0, 0x03F0, 0x0738, 0x0618, 0x0618, 0x0330, 0x01F0, |
|||
0x00F0, 0x00F8, 0x319C, 0x330E, 0x1E06, 0x1C06, 0x1C06, 0x3F06, |
|||
0x73FC, 0x21F0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// "'"
|
|||
0x0000, 0x0000, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, |
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '('
|
|||
0x0000, 0x0200, 0x0300, 0x0180, 0x00C0, 0x00C0, 0x0060, 0x0060, |
|||
0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, |
|||
0x0060, 0x0060, 0x00C0, 0x00C0, 0x0180, 0x0300, 0x0200, 0x0000, |
|||
// ')'
|
|||
0x0000, 0x0020, 0x0060, 0x00C0, 0x0180, 0x0180, 0x0300, 0x0300, |
|||
0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, |
|||
0x0300, 0x0300, 0x0180, 0x0180, 0x00C0, 0x0060, 0x0020, 0x0000, |
|||
// '*'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x00C0, |
|||
0x06D8, 0x07F8, 0x01E0, 0x0330, 0x0738, 0x0000, 0x0000, 0x0000, |
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '+'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, |
|||
0x0180, 0x0180, 0x0180, 0x3FFC, 0x3FFC, 0x0180, 0x0180, 0x0180, |
|||
0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// ','
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
0x0000, 0x0180, 0x0180, 0x0100, 0x0100, 0x0080, 0x0000, 0x0000, |
|||
// '-'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x07E0, 0x07E0, 0x0000, 0x0000, |
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '.'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
0x0000, 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '/'
|
|||
0x0000, 0x0C00, 0x0C00, 0x0600, 0x0600, 0x0600, 0x0300, 0x0300, |
|||
0x0300, 0x0380, 0x0180, 0x0180, 0x0180, 0x00C0, 0x00C0, 0x00C0, |
|||
0x0060, 0x0060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '0'
|
|||
0x0000, 0x03E0, 0x07F0, 0x0E38, 0x0C18, 0x180C, 0x180C, 0x180C, |
|||
0x180C, 0x180C, 0x180C, 0x180C, 0x180C, 0x180C, 0x0C18, 0x0E38, |
|||
0x07F0, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '1'
|
|||
0x0000, 0x0100, 0x0180, 0x01C0, 0x01F0, 0x0198, 0x0188, 0x0180, |
|||
0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, |
|||
0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '2'
|
|||
0x0000, 0x03E0, 0x0FF8, 0x0C18, 0x180C, 0x180C, 0x1800, 0x1800, |
|||
0x0C00, 0x0600, 0x0300, 0x0180, 0x00C0, 0x0060, 0x0030, 0x0018, |
|||
0x1FFC, 0x1FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '3'
|
|||
0x0000, 0x01E0, 0x07F8, 0x0E18, 0x0C0C, 0x0C0C, 0x0C00, 0x0600, |
|||
0x03C0, 0x07C0, 0x0C00, 0x1800, 0x1800, 0x180C, 0x180C, 0x0C18, |
|||
0x07F8, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '4'
|
|||
0x0000, 0x0C00, 0x0E00, 0x0F00, 0x0F00, 0x0D80, 0x0CC0, 0x0C60, |
|||
0x0C60, 0x0C30, 0x0C18, 0x0C0C, 0x3FFC, 0x3FFC, 0x0C00, 0x0C00, |
|||
0x0C00, 0x0C00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '5'
|
|||
0x0000, 0x0FF8, 0x0FF8, 0x0018, 0x0018, 0x000C, 0x03EC, 0x07FC, |
|||
0x0E1C, 0x1C00, 0x1800, 0x1800, 0x1800, 0x180C, 0x0C1C, 0x0E18, |
|||
0x07F8, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '6'
|
|||
0x0000, 0x07C0, 0x0FF0, 0x1C38, 0x1818, 0x0018, 0x000C, 0x03CC, |
|||
0x0FEC, 0x0E3C, 0x1C1C, 0x180C, 0x180C, 0x180C, 0x1C18, 0x0E38, |
|||
0x07F0, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '7'
|
|||
0x0000, 0x1FFC, 0x1FFC, 0x0C00, 0x0600, 0x0600, 0x0300, 0x0380, |
|||
0x0180, 0x01C0, 0x00C0, 0x00E0, 0x0060, 0x0060, 0x0070, 0x0030, |
|||
0x0030, 0x0030, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '8'
|
|||
0x0000, 0x03E0, 0x07F0, 0x0E38, 0x0C18, 0x0C18, 0x0C18, 0x0638, |
|||
0x07F0, 0x07F0, 0x0C18, 0x180C, 0x180C, 0x180C, 0x180C, 0x0C38, |
|||
0x0FF8, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '9'
|
|||
0x0000, 0x03E0, 0x07F0, 0x0E38, 0x0C1C, 0x180C, 0x180C, 0x180C, |
|||
0x1C1C, 0x1E38, 0x1BF8, 0x19E0, 0x1800, 0x0C00, 0x0C00, 0x0E1C, |
|||
0x07F8, 0x01F0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// ':'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, |
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// ';'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, |
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
0x0180, 0x0180, 0x0100, 0x0100, 0x0080, 0x0000, 0x0000, 0x0000, |
|||
// '<'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
0x1000, 0x1C00, 0x0F80, 0x03E0, 0x00F8, 0x0018, 0x00F8, 0x03E0, |
|||
0x0F80, 0x1C00, 0x1000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '='
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
0x1FF8, 0x0000, 0x0000, 0x0000, 0x1FF8, 0x0000, 0x0000, 0x0000, |
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '>'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
0x0008, 0x0038, 0x01F0, 0x07C0, 0x1F00, 0x1800, 0x1F00, 0x07C0, |
|||
0x01F0, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '?'
|
|||
0x0000, 0x03E0, 0x0FF8, 0x0C18, 0x180C, 0x180C, 0x1800, 0x0C00, |
|||
0x0600, 0x0300, 0x0180, 0x00C0, 0x00C0, 0x00C0, 0x0000, 0x0000, |
|||
0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '@'
|
|||
0x0000, 0x0000, 0x07E0, 0x1818, 0x2004, 0x29C2, 0x4A22, 0x4411, |
|||
0x4409, 0x4409, 0x4409, 0x2209, 0x1311, 0x0CE2, 0x4002, 0x2004, |
|||
0x1818, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'A'
|
|||
0x0000, 0x0380, 0x0380, 0x06C0, 0x06C0, 0x06C0, 0x0C60, 0x0C60, |
|||
0x1830, 0x1830, 0x1830, 0x3FF8, 0x3FF8, 0x701C, 0x600C, 0x600C, |
|||
0xC006, 0xC006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'B'
|
|||
0x0000, 0x03FC, 0x0FFC, 0x0C0C, 0x180C, 0x180C, 0x180C, 0x0C0C, |
|||
0x07FC, 0x0FFC, 0x180C, 0x300C, 0x300C, 0x300C, 0x300C, 0x180C, |
|||
0x1FFC, 0x07FC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'C'
|
|||
0x0000, 0x07C0, 0x1FF0, 0x3838, 0x301C, 0x700C, 0x6006, 0x0006, |
|||
0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x6006, 0x700C, 0x301C, |
|||
0x1FF0, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'D'
|
|||
0x0000, 0x03FE, 0x0FFE, 0x0E06, 0x1806, 0x1806, 0x3006, 0x3006, |
|||
0x3006, 0x3006, 0x3006, 0x3006, 0x3006, 0x1806, 0x1806, 0x0E06, |
|||
0x0FFE, 0x03FE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'E'
|
|||
0x0000, 0x3FFC, 0x3FFC, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, |
|||
0x1FFC, 0x1FFC, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, |
|||
0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'F'
|
|||
0x0000, 0x3FF8, 0x3FF8, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, |
|||
0x1FF8, 0x1FF8, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, |
|||
0x0018, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'G'
|
|||
0x0000, 0x0FE0, 0x3FF8, 0x783C, 0x600E, 0xE006, 0xC007, 0x0003, |
|||
0x0003, 0xFE03, 0xFE03, 0xC003, 0xC007, 0xC006, 0xC00E, 0xF03C, |
|||
0x3FF8, 0x0FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'H'
|
|||
0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, |
|||
0x3FFC, 0x3FFC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, |
|||
0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'I'
|
|||
0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, |
|||
0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, |
|||
0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'J'
|
|||
0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, |
|||
0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0618, 0x0618, 0x0738, |
|||
0x03F0, 0x01E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'K'
|
|||
0x0000, 0x3006, 0x1806, 0x0C06, 0x0606, 0x0306, 0x0186, 0x00C6, |
|||
0x0066, 0x0076, 0x00DE, 0x018E, 0x0306, 0x0606, 0x0C06, 0x1806, |
|||
0x3006, 0x6006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'L'
|
|||
0x0000, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, |
|||
0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, |
|||
0x1FF8, 0x1FF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'M'
|
|||
0x0000, 0xE00E, 0xF01E, 0xF01E, 0xF01E, 0xD836, 0xD836, 0xD836, |
|||
0xD836, 0xCC66, 0xCC66, 0xCC66, 0xC6C6, 0xC6C6, 0xC6C6, 0xC6C6, |
|||
0xC386, 0xC386, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'N'
|
|||
0x0000, 0x300C, 0x301C, 0x303C, 0x303C, 0x306C, 0x306C, 0x30CC, |
|||
0x30CC, 0x318C, 0x330C, 0x330C, 0x360C, 0x360C, 0x3C0C, 0x3C0C, |
|||
0x380C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'O'
|
|||
0x0000, 0x07E0, 0x1FF8, 0x381C, 0x700E, 0x6006, 0xC003, 0xC003, |
|||
0xC003, 0xC003, 0xC003, 0xC003, 0xC003, 0x6006, 0x700E, 0x381C, |
|||
0x1FF8, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'P'
|
|||
0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x300C, |
|||
0x180C, 0x1FFC, 0x07FC, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, |
|||
0x000C, 0x000C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'Q'
|
|||
0x0000, 0x07E0, 0x1FF8, 0x381C, 0x700E, 0x6006, 0xE003, 0xC003, |
|||
0xC003, 0xC003, 0xC003, 0xC003, 0xE007, 0x6306, 0x3F0E, 0x3C1C, |
|||
0x3FF8, 0xF7E0, 0xC000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'R'
|
|||
0x0000, 0x0FFE, 0x1FFE, 0x3806, 0x3006, 0x3006, 0x3006, 0x3806, |
|||
0x1FFE, 0x07FE, 0x0306, 0x0606, 0x0C06, 0x1806, 0x1806, 0x3006, |
|||
0x3006, 0x6006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'S'
|
|||
0x0000, 0x03E0, 0x0FF8, 0x0C1C, 0x180C, 0x180C, 0x000C, 0x001C, |
|||
0x03F8, 0x0FE0, 0x1E00, 0x3800, 0x3006, 0x3006, 0x300E, 0x1C1C, |
|||
0x0FF8, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'T'
|
|||
0x0000, 0x7FFE, 0x7FFE, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, |
|||
0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, |
|||
0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'U'
|
|||
0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, |
|||
0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x1818, |
|||
0x1FF8, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'V'
|
|||
0x0000, 0x6003, 0x3006, 0x3006, 0x3006, 0x180C, 0x180C, 0x180C, |
|||
0x0C18, 0x0C18, 0x0E38, 0x0630, 0x0630, 0x0770, 0x0360, 0x0360, |
|||
0x01C0, 0x01C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'W'
|
|||
0x0000, 0x6003, 0x61C3, 0x61C3, 0x61C3, 0x3366, 0x3366, 0x3366, |
|||
0x3366, 0x3366, 0x3366, 0x1B6C, 0x1B6C, 0x1B6C, 0x1A2C, 0x1E3C, |
|||
0x0E38, 0x0E38, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'X'
|
|||
0x0000, 0xE00F, 0x700C, 0x3018, 0x1830, 0x0C70, 0x0E60, 0x07C0, |
|||
0x0380, 0x0380, 0x03C0, 0x06E0, 0x0C70, 0x1C30, 0x1818, 0x300C, |
|||
0x600E, 0xE007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'Y'
|
|||
0x0000, 0xC003, 0x6006, 0x300C, 0x381C, 0x1838, 0x0C30, 0x0660, |
|||
0x07E0, 0x03C0, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, |
|||
0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'Z'
|
|||
0x0000, 0x7FFC, 0x7FFC, 0x6000, 0x3000, 0x1800, 0x0C00, 0x0600, |
|||
0x0300, 0x0180, 0x00C0, 0x0060, 0x0030, 0x0018, 0x000C, 0x0006, |
|||
0x7FFE, 0x7FFE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '['
|
|||
0x0000, 0x03E0, 0x03E0, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, |
|||
0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, |
|||
0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x03E0, 0x03E0, 0x0000, |
|||
// '\'
|
|||
0x0000, 0x0030, 0x0030, 0x0060, 0x0060, 0x0060, 0x00C0, 0x00C0, |
|||
0x00C0, 0x01C0, 0x0180, 0x0180, 0x0180, 0x0300, 0x0300, 0x0300, |
|||
0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// ']'
|
|||
0x0000, 0x03E0, 0x03E0, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, |
|||
0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, |
|||
0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x03E0, 0x03E0, 0x0000, |
|||
// '^'
|
|||
0x0000, 0x0000, 0x01C0, 0x01C0, 0x0360, 0x0360, 0x0360, 0x0630, |
|||
0x0630, 0x0C18, 0x0C18, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '_'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
0x0000, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '''
|
|||
0x0000, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x0000, |
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'a'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03F0, 0x07F8, |
|||
0x0C1C, 0x0C0C, 0x0F00, 0x0FF0, 0x0CF8, 0x0C0C, 0x0C0C, 0x0F1C, |
|||
0x0FF8, 0x18F0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'b'
|
|||
0x0000, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x03D8, 0x0FF8, |
|||
0x0C38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x0C38, |
|||
0x0FF8, 0x03D8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'c'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x07F0, |
|||
0x0E30, 0x0C18, 0x0018, 0x0018, 0x0018, 0x0018, 0x0C18, 0x0E30, |
|||
0x07F0, 0x03C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'd'
|
|||
0x0000, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1BC0, 0x1FF0, |
|||
0x1C30, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1C30, |
|||
0x1FF0, 0x1BC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'e'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x0FF0, |
|||
0x0C30, 0x1818, 0x1FF8, 0x1FF8, 0x0018, 0x0018, 0x1838, 0x1C30, |
|||
0x0FF0, 0x07C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'f'
|
|||
0x0000, 0x0F80, 0x0FC0, 0x00C0, 0x00C0, 0x00C0, 0x07F0, 0x07F0, |
|||
0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, |
|||
0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'g'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0DE0, 0x0FF8, |
|||
0x0E18, 0x0C0C, 0x0C0C, 0x0C0C, 0x0C0C, 0x0C0C, 0x0C0C, 0x0E18, |
|||
0x0FF8, 0x0DE0, 0x0C00, 0x0C0C, 0x061C, 0x07F8, 0x01F0, 0x0000, |
|||
// 'h'
|
|||
0x0000, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x07D8, 0x0FF8, |
|||
0x1C38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, |
|||
0x1818, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'i'
|
|||
0x0000, 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x00C0, 0x00C0, |
|||
0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, |
|||
0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'j'
|
|||
0x0000, 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x00C0, 0x00C0, |
|||
0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, |
|||
0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00F8, 0x0078, 0x0000, |
|||
// 'k'
|
|||
0x0000, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x0C0C, 0x060C, |
|||
0x030C, 0x018C, 0x00CC, 0x006C, 0x00FC, 0x019C, 0x038C, 0x030C, |
|||
0x060C, 0x0C0C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'l'
|
|||
0x0000, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, |
|||
0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, |
|||
0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'm'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3C7C, 0x7EFF, |
|||
0xE3C7, 0xC183, 0xC183, 0xC183, 0xC183, 0xC183, 0xC183, 0xC183, |
|||
0xC183, 0xC183, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'n'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0798, 0x0FF8, |
|||
0x1C38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, |
|||
0x1818, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'o'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x0FF0, |
|||
0x0C30, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x0C30, |
|||
0x0FF0, 0x03C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'p'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03D8, 0x0FF8, |
|||
0x0C38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x0C38, |
|||
0x0FF8, 0x03D8, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0000, |
|||
// 'q'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1BC0, 0x1FF0, |
|||
0x1C30, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1C30, |
|||
0x1FF0, 0x1BC0, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x0000, |
|||
// 'r'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07B0, 0x03F0, |
|||
0x0070, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, |
|||
0x0030, 0x0030, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 's'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03E0, 0x03F0, |
|||
0x0E38, 0x0C18, 0x0038, 0x03F0, 0x07C0, 0x0C00, 0x0C18, 0x0E38, |
|||
0x07F0, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 't'
|
|||
0x0000, 0x0000, 0x0080, 0x00C0, 0x00C0, 0x00C0, 0x07F0, 0x07F0, |
|||
0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, |
|||
0x07C0, 0x0780, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'u'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x1818, |
|||
0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1C38, |
|||
0x1FF0, 0x19E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'v'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x180C, 0x0C18, |
|||
0x0C18, 0x0C18, 0x0630, 0x0630, 0x0630, 0x0360, 0x0360, 0x0360, |
|||
0x01C0, 0x01C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'w'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x41C1, 0x41C1, |
|||
0x61C3, 0x6363, 0x6363, 0x6363, 0x3636, 0x3636, 0x3636, 0x1C1C, |
|||
0x1C1C, 0x1C1C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'x'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x381C, 0x1C38, |
|||
0x0C30, 0x0660, 0x0360, 0x0360, 0x0360, 0x0360, 0x0660, 0x0C30, |
|||
0x1C38, 0x381C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// 'y'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3018, 0x1830, |
|||
0x1830, 0x1870, 0x0C60, 0x0C60, 0x0CE0, 0x06C0, 0x06C0, 0x0380, |
|||
0x0380, 0x0380, 0x0180, 0x0180, 0x01C0, 0x00F0, 0x0070, 0x0000, |
|||
// 'z'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1FFC, 0x1FFC, |
|||
0x0C00, 0x0600, 0x0300, 0x0180, 0x00C0, 0x0060, 0x0030, 0x0018, |
|||
0x1FFC, 0x1FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
// '{'
|
|||
0x0000, 0x0300, 0x0180, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, |
|||
0x00C0, 0x0060, 0x0060, 0x0030, 0x0060, 0x0040, 0x00C0, 0x00C0, |
|||
0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x0180, 0x0300, 0x0000, 0x0000, |
|||
// '|'
|
|||
0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, |
|||
0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, |
|||
0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, |
|||
// '}'
|
|||
0x0000, 0x0060, 0x00C0, 0x01C0, 0x0180, 0x0180, 0x0180, 0x0180, |
|||
0x0180, 0x0300, 0x0300, 0x0600, 0x0300, 0x0100, 0x0180, 0x0180, |
|||
0x0180, 0x0180, 0x0180, 0x0180, 0x00C0, 0x0060, 0x0000, 0x0000, |
|||
// '~'
|
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
0x10F0, 0x1FF8, 0x0F08, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
|||
}; |
|||
|
|||
void disp_char_1624(uint16_t x, uint16_t y, uint8_t c, uint16_t charColor, uint16_t bkColor) { |
|||
for (uint16_t i = 0; i < 24; i++) { |
|||
const uint16_t tmp_char = pgm_read_word(&ASCII_Table_16x24[((c - 0x20) * 24) + i]); |
|||
for (uint16_t j = 0; j < 16; j++) |
|||
tft_set_point(x + j, y + i, ((tmp_char >> j) & 0x01) ? charColor : bkColor); |
|||
} |
|||
} |
|||
|
|||
void disp_string(uint16_t x, uint16_t y, const char * string, uint16_t charColor, uint16_t bkColor) { |
|||
while (*string != '\0') { |
|||
disp_char_1624(x, y, *string, charColor, bkColor); |
|||
string++; |
|||
x += 16; |
|||
} |
|||
} |
|||
|
|||
//static lv_obj_t * scr_test;
|
|||
void disp_pic_update() { |
|||
LCD_Clear(0x0000); |
|||
disp_string(120, 150, "PIC Updating...", 0xFFFF, 0x0000); |
|||
} |
|||
|
|||
void disp_font_update() { |
|||
LCD_Clear(0x0000); |
|||
disp_string(120, 150, "FONT Updating...", 0xFFFF, 0x0000); |
|||
} |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,31 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#include "lvgl.h" |
|||
|
|||
void Test_GPIO(); |
|||
void disp_char_1624(uint16_t x, uint16_t y, uint8_t c, uint16_t charColor, uint16_t bkColor); |
|||
void disp_string(uint16_t x, uint16_t y, const char * string, uint16_t charColor, uint16_t bkColor); |
|||
void mks_test(); |
|||
void disp_pic_update(); |
|||
void disp_font_update(); |
@ -0,0 +1,736 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
|
|||
//#include "type_define.h"
|
|||
#include "string.h" |
|||
|
|||
#include "pic_manager.h" |
|||
#include "W25Qxx.h" |
|||
#include "../../../../sd/cardreader.h" |
|||
#include "draw_ready_print.h" |
|||
#include "mks_hardware_test.h" |
|||
|
|||
//#include "gui.h"
|
|||
//#include "spi_flash.h"
|
|||
|
|||
//uint8_t DMA_ERRO_FLAG;
|
|||
extern uint16_t DeviceCode; |
|||
extern unsigned char bmp_public_buf[17 * 1024]; |
|||
|
|||
#if ENABLED(SDSUPPORT) |
|||
extern char *createFilename(char * const buffer, const dir_t &p); |
|||
#endif |
|||
|
|||
/*void SPI_FLASH_BufferRead(uint8_t* pBuffer, uint32_t ReadAddr, uint16_t NumByteToRead) {}*/ |
|||
|
|||
uint32_t lv_get_pic_addr(uint8_t *Pname) { |
|||
uint8_t Pic_cnt; |
|||
uint8_t i, j; |
|||
PIC_MSG PIC; |
|||
uint32_t tmp_cnt = 0; |
|||
uint32_t addr = 0; |
|||
|
|||
W25QXX.init(SPI_QUARTER_SPEED); |
|||
|
|||
W25QXX.SPI_FLASH_BufferRead(&Pic_cnt, PIC_COUNTER_ADDR, 1); |
|||
if (Pic_cnt == 0xff) |
|||
Pic_cnt = 0; |
|||
for (i = 0; i < Pic_cnt; i++) { |
|||
j = 0; |
|||
do |
|||
{ |
|||
W25QXX.SPI_FLASH_BufferRead(&PIC.name[j], PIC_NAME_ADDR + tmp_cnt, 1); |
|||
tmp_cnt++; |
|||
}while (PIC.name[j++] != '\0'); |
|||
|
|||
if ((strcmp((char*)Pname, (char*)PIC.name)) == 0) { |
|||
|
|||
if ((DeviceCode == 0x9488) || (DeviceCode == 0x5761)) |
|||
addr = PIC_DATA_ADDR_TFT35 + i * PER_PIC_MAX_SPACE_TFT35; |
|||
else |
|||
addr = PIC_DATA_ADDR_TFT32 + i * PER_PIC_MAX_SPACE_TFT32; |
|||
return (addr + 4);//The purpose of adding 4 is to remove 4-byte picture header information.
|
|||
} |
|||
} |
|||
|
|||
return addr; |
|||
} |
|||
|
|||
const char *picPath = "mks_pic"; |
|||
const char *bakPath = "bak_pic"; |
|||
|
|||
const char *fontPath = "mks_font"; |
|||
const char *bakFont = "bak_font"; |
|||
|
|||
#if 1 |
|||
|
|||
void spiFlashErase_PIC() { |
|||
#if 1 |
|||
volatile uint32_t pic_sectorcnt = 0; |
|||
|
|||
//LCD_Clear(BACK_COLOR);
|
|||
//LCD_DisplayString(90,80,"SPI Flash");
|
|||
//LCD_DisplayString(120,90,"PIC Erasing...");
|
|||
if ((DeviceCode == 0x9488) || (DeviceCode == 0x5761)) { |
|||
//LCD_ShowString(180,100,200,24,24,"SPI Flash");
|
|||
//LCD_ShowString(170,130,200,24,24,"PIC Erasing...");
|
|||
} |
|||
else { |
|||
//LCD_ShowString(100,90,200,24,24,"SPI Flash");
|
|||
//LCD_ShowString(100,120,200,24,24,"PIC Erasing...");
|
|||
} |
|||
#if ENABLED(MKS_TEST) |
|||
for (pic_sectorcnt = 0; pic_sectorcnt < 2; pic_sectorcnt++) |
|||
W25QXX.SPI_FLASH_BlockErase(PICINFOADDR + pic_sectorcnt * 64 * 1024); |
|||
|
|||
#else |
|||
for (pic_sectorcnt = 0; pic_sectorcnt < PIC_SIZE_xM * 1024 / 64; pic_sectorcnt++) |
|||
W25QXX.SPI_FLASH_BlockErase(PICINFOADDR + pic_sectorcnt * 64 * 1024); |
|||
|
|||
#endif |
|||
/*
|
|||
FLASH_Unlock(); |
|||
spiFlashEraseFlag = SPI_FLASH_ERASE_FLAG_DATA; |
|||
FLASH_ProgramHalfWord(SPI_FLASH_ERASE_FLAG_ADDR,spiFlashEraseFlag); |
|||
FLASH_Lock(); |
|||
*/ |
|||
#if 0 |
|||
if (DeviceCode == 0x9488) |
|||
LCD_ShowString(170, 130, 200, 24, 24, "PIC Erase Done"); |
|||
else |
|||
LCD_ShowString(100, 120, 200, 24, 24, "PIC Erase Done"); |
|||
|
|||
#endif |
|||
//spiFlashEraseFlag = 1;
|
|||
#endif |
|||
} |
|||
|
|||
void spiFlashErase_FONT() { |
|||
volatile uint32_t Font_sectorcnt = 0; |
|||
|
|||
//LCD_Clear(BACK_COLOR);
|
|||
if ((DeviceCode == 0x9488) || (DeviceCode == 0x5761)) { |
|||
//LCD_ShowString(180,100,200,24,24,"SPI Flash");
|
|||
//LCD_ShowString(170,130,200,24,24,"FONT Erasing...");
|
|||
} |
|||
else { |
|||
//LCD_ShowString(100,90,200,24,24,"SPI Flash");
|
|||
//LCD_ShowString(90,120,200,24,24,"FONT Erasing...");
|
|||
} |
|||
|
|||
for (Font_sectorcnt = 0; Font_sectorcnt < FONT_SIZE_xM * 1024 / 64; Font_sectorcnt++) |
|||
W25QXX.SPI_FLASH_BlockErase(FONTINFOADDR + Font_sectorcnt * 64 * 1024); |
|||
|
|||
/*
|
|||
FLASH_Unlock(); |
|||
spiFlashEraseFlag = SPI_FLASH_ERASE_FLAG_DATA; |
|||
FLASH_ProgramHalfWord(SPI_FLASH_ERASE_FLAG_ADDR,spiFlashEraseFlag); |
|||
FLASH_Lock(); |
|||
*/ |
|||
#if 0 |
|||
if (DeviceCode == 0x9488) |
|||
LCD_ShowString(170, 130, 200, 24, 24, "FONT Erase Done"); |
|||
else |
|||
LCD_ShowString(90, 120, 200, 24, 24, "FONT Erase Done"); |
|||
//LCD_DisplayString(120,90,"FONT Erase Done");
|
|||
#endif |
|||
//spiFlashEraseFlag = 1;
|
|||
} |
|||
|
|||
uint32_t LogoWrite_Addroffset = 0; |
|||
|
|||
uint8_t Pic_Logo_Write(uint8_t *LogoName, uint8_t *Logo_Wbuff, uint32_t LogoWriteSize) { |
|||
//uint16_t n;
|
|||
uint32_t i; |
|||
uint8_t temp1; |
|||
static uint32_t logo_maxsize; |
|||
|
|||
if (LogoWriteSize <= 0) return 0; |
|||
|
|||
W25QXX.SPI_FLASH_BufferWrite(Logo_Wbuff, PIC_LOGO_ADDR + LogoWrite_Addroffset, LogoWriteSize); |
|||
|
|||
for (i = 0; i < LogoWriteSize; i++) { |
|||
W25QXX.SPI_FLASH_BufferRead(&temp1, PIC_LOGO_ADDR + LogoWrite_Addroffset + i, 1); |
|||
if (*(Logo_Wbuff + i) != temp1) return 0; |
|||
} |
|||
LogoWrite_Addroffset += LogoWriteSize; |
|||
if ((DeviceCode == 0x9488) || (DeviceCode == 0x5761)) |
|||
logo_maxsize = LOGO_MAX_SIZE_TFT35; |
|||
else |
|||
logo_maxsize = LOGO_MAX_SIZE_TFT32; |
|||
if (LogoWrite_Addroffset >= logo_maxsize) |
|||
LogoWrite_Addroffset = 0; |
|||
return 1; |
|||
} |
|||
|
|||
uint32_t TitleLogoWrite_Addroffset = 0; |
|||
uint8_t Pic_TitleLogo_Write(uint8_t *TitleLogoName, uint8_t *TitleLogo_Wbuff, uint32_t TitleLogoWriteSize) { |
|||
//uint32_t i;
|
|||
//uint8_t temp1;
|
|||
if (TitleLogoWriteSize <= 0) |
|||
return 0; |
|||
if ((DeviceCode == 0x9488) || (DeviceCode == 0x5761)) |
|||
W25QXX.SPI_FLASH_BufferWrite(TitleLogo_Wbuff, PIC_ICON_LOGO_ADDR_TFT35 + TitleLogoWrite_Addroffset, TitleLogoWriteSize); |
|||
else |
|||
W25QXX.SPI_FLASH_BufferWrite(TitleLogo_Wbuff, PIC_ICON_LOGO_ADDR_TFT32 + TitleLogoWrite_Addroffset, TitleLogoWriteSize); |
|||
TitleLogoWrite_Addroffset += TitleLogoWriteSize; |
|||
if (TitleLogoWrite_Addroffset >= TITLELOGO_MAX_SIZE) |
|||
TitleLogoWrite_Addroffset = 0; |
|||
return 1; |
|||
} |
|||
|
|||
uint32_t default_view_addroffset_r = 0; |
|||
void default_view_Write(uint8_t *default_view__Rbuff, uint32_t default_view_Writesize) { |
|||
W25QXX.SPI_FLASH_BufferWrite(default_view__Rbuff, DEFAULT_VIEW_ADDR_TFT35 + default_view_addroffset_r, default_view_Writesize); |
|||
default_view_addroffset_r += default_view_Writesize; |
|||
if (default_view_addroffset_r >= DEFAULT_VIEW_MAX_SIZE) |
|||
default_view_addroffset_r = 0; |
|||
} |
|||
|
|||
uint32_t Pic_Info_Write(uint8_t *P_name, uint32_t P_size) { |
|||
uint8_t pic_counter = 0; |
|||
uint32_t Pic_SaveAddr; |
|||
uint32_t Pic_SizeSaveAddr; |
|||
uint32_t Pic_NameSaveAddr; |
|||
//uint8_t temp;
|
|||
uint8_t Pname_temp; |
|||
uint32_t i, j; |
|||
uint32_t name_len = 0; |
|||
uint32_t SaveName_len = 0; |
|||
union union32 size_tmp; |
|||
//union union32 size1;
|
|||
//uint8_t Pn[PIC_NAME_MAX_LEN];
|
|||
//uint8_t cnt_temp;
|
|||
//uint16_t n0;
|
|||
//uint32_t Name_saveAddr = 0;
|
|||
//uint8_t pic_position;
|
|||
|
|||
W25QXX.SPI_FLASH_BufferRead(&pic_counter, PIC_COUNTER_ADDR, 1); |
|||
|
|||
if (pic_counter == 0xFF) |
|||
pic_counter = 0; |
|||
|
|||
if ((DeviceCode == 0x9488) || (DeviceCode == 0x5761)) |
|||
Pic_SaveAddr = PIC_DATA_ADDR_TFT35 + pic_counter * PER_PIC_MAX_SPACE_TFT35; |
|||
else |
|||
Pic_SaveAddr = PIC_DATA_ADDR_TFT32 + pic_counter * PER_PIC_MAX_SPACE_TFT32; |
|||
|
|||
for (j = 0; j < pic_counter; j++) { |
|||
do { |
|||
W25QXX.SPI_FLASH_BufferRead(&Pname_temp, PIC_NAME_ADDR + SaveName_len, 1); |
|||
SaveName_len++; |
|||
} while (Pname_temp != '\0'); |
|||
} |
|||
i = 0; |
|||
while ((*(P_name + i) != '\0')) { |
|||
i++; |
|||
name_len++; |
|||
} |
|||
|
|||
Pic_NameSaveAddr = PIC_NAME_ADDR + SaveName_len; |
|||
W25QXX.SPI_FLASH_BufferWrite(P_name, Pic_NameSaveAddr, name_len + 1); |
|||
Pic_SizeSaveAddr = PIC_SIZE_ADDR + 4 * pic_counter; |
|||
size_tmp.dwords = P_size; |
|||
W25QXX.SPI_FLASH_BufferWrite(size_tmp.bytes, Pic_SizeSaveAddr, 4); |
|||
|
|||
pic_counter++; |
|||
W25QXX.SPI_FLASH_SectorErase(PIC_COUNTER_ADDR); |
|||
W25QXX.SPI_FLASH_BufferWrite(&pic_counter, PIC_COUNTER_ADDR, 1); |
|||
|
|||
return Pic_SaveAddr; |
|||
} |
|||
|
|||
uint8_t public_buf[512]; |
|||
|
|||
//uint8_t public_buf_test[512];
|
|||
#if ENABLED(SDSUPPORT) |
|||
void UpdatePic() { |
|||
//int r;
|
|||
//unsigned char *p;
|
|||
//char rootPath[10]={0};
|
|||
char *fn; |
|||
unsigned char logoFlag; |
|||
uint16_t pbr; |
|||
uint32_t pfileSize; |
|||
uint32_t Pic_Write_Addr; |
|||
/*----------------------------------*/ |
|||
|
|||
// FILINFO fno;
|
|||
//DIR dir;
|
|||
//char tmp[30];
|
|||
#if 0//_USE_LFN
|
|||
static char lfn[_MAX_LFN + 1]; |
|||
finfo.lfname = lfn; |
|||
finfo.lfsize = sizeof(lfn); |
|||
#endif |
|||
//SdFile curDir;
|
|||
//if (f_opendir(&dirs, picPath) == FR_OK)
|
|||
//card.cd(picPath);
|
|||
|
|||
//const uint16_t fileCnt = card.get_num_Files();
|
|||
|
|||
//SdFile *curDir;
|
|||
//SdFile dir;
|
|||
//dir.open(picPath, O_READ);
|
|||
//const char * const fname = card.diveToFile(true, curDir, picPath);
|
|||
//if (!fname) return;
|
|||
|
|||
SdFile dir, root = card.getroot(); |
|||
if (dir.open(&root, picPath, O_RDONLY)) { |
|||
|
|||
disp_pic_update(); |
|||
spiFlashErase_PIC(); |
|||
|
|||
dir_t d; |
|||
while (dir.readDir(&d, card.longFilename) > 0) { |
|||
#if 1 |
|||
/*
|
|||
if (power_det == 0) { |
|||
PW_DET_ON; |
|||
power_det=0; |
|||
} |
|||
SPI_FLASH_Init(); |
|||
*/ |
|||
|
|||
//for (uint16_t i = 0; i < fileCnt; i++) {
|
|||
//res = f_readdir(&dirs, &finfo);
|
|||
//card.getfilename_sorted(i);
|
|||
|
|||
if (card.longFilename[0] == 0) |
|||
break; |
|||
/*if ( card.filename[0] == '.')
|
|||
continue; |
|||
*/ |
|||
if (card.longFilename[0] == '.') |
|||
continue; |
|||
|
|||
fn = card.longFilename; |
|||
|
|||
/*if ((finfo.lfname[0] == 0) || (finfo.lfname == 0))
|
|||
fn = finfo.fname; |
|||
else |
|||
fn = finfo.lfname;*/ |
|||
|
|||
/* if (fno.fattrib & AM_DIR)
|
|||
{ |
|||
continue; |
|||
} |
|||
else */ |
|||
//{
|
|||
//if ((strstr(fn, ".gco")) || (strstr(fn, ".GCO")) || (fno.fattrib & AM_DIR))
|
|||
if (strstr(fn, ".bin")) { |
|||
if (strstr(fn, "_logo")) |
|||
logoFlag = 1; |
|||
else if (strstr(fn, "_titlelogo")) |
|||
logoFlag = 2; |
|||
else if (strstr(fn, "_preview")) |
|||
logoFlag = 3; |
|||
else |
|||
logoFlag = 0; |
|||
|
|||
//public_buf[0] = '\0';
|
|||
//strcat(public_buf, picPath);
|
|||
//strcat(public_buf, "/");
|
|||
char dosFilename[FILENAME_LENGTH]; |
|||
createFilename(dosFilename, d); |
|||
//strcat(public_buf, dosFilename);
|
|||
|
|||
SdFile file; |
|||
if (file.open(&dir, dosFilename, O_READ)) { |
|||
#if 1 |
|||
/*LCD_Clear(BACK_COLOR);
|
|||
|
|||
if ((DeviceCode==0x9488)||(DeviceCode==0x5761)) { |
|||
LCD_ShowString(170,100,200,24,24,(u8 *)fn); |
|||
LCD_ShowString(180,130,200,24,24,"Updating..."); |
|||
} |
|||
else { |
|||
LCD_ShowString(90,90,200,24,24,(u8 *)fn); |
|||
LCD_ShowString(90,120,200,24,24,"Updating..."); |
|||
} |
|||
*/ |
|||
if (logoFlag == 1) { |
|||
while (1) { |
|||
pbr = file.read(public_buf, BMP_WRITE_BUF_LEN); |
|||
Pic_Logo_Write((uint8_t *)fn, public_buf, pbr); //
|
|||
if (pbr < BMP_WRITE_BUF_LEN) break; |
|||
} |
|||
} |
|||
else if (logoFlag == 2) { |
|||
while (1) { |
|||
pbr = file.read(public_buf, BMP_WRITE_BUF_LEN); |
|||
Pic_TitleLogo_Write((uint8_t *)fn, public_buf, pbr); //
|
|||
if (pbr < BMP_WRITE_BUF_LEN) break; |
|||
} |
|||
} |
|||
else if (logoFlag == 3) { |
|||
while (1) |
|||
{ |
|||
pbr = file.read(public_buf, BMP_WRITE_BUF_LEN); |
|||
default_view_Write(public_buf, pbr); //
|
|||
if (pbr < BMP_WRITE_BUF_LEN) break; |
|||
} |
|||
} |
|||
else { |
|||
pfileSize = file.fileSize(); |
|||
Pic_Write_Addr = Pic_Info_Write((uint8_t *)fn, pfileSize); |
|||
//uint32_t addr_test = Pic_Write_Addr;
|
|||
//memset(bmp_public_buf, 0xff, BMP_WRITE_BUF_LEN);
|
|||
while (1) |
|||
{ |
|||
pbr = file.read(public_buf, BMP_WRITE_BUF_LEN); |
|||
W25QXX.SPI_FLASH_BufferWrite(public_buf, Pic_Write_Addr, pbr); |
|||
Pic_Write_Addr += pbr; |
|||
if (pbr < BMP_WRITE_BUF_LEN) break; |
|||
} |
|||
//W25QXX.SPI_FLASH_BufferRead(public_buf_test,addr_test,BMP_WRITE_BUF_LEN);
|
|||
} |
|||
|
|||
/*--------------read test--------------------*/ |
|||
/*
|
|||
BufferSet(picBuffer, 0xff, PICTURE_MAX_SIZE); |
|||
if (logoFlag == 0) |
|||
{ |
|||
PicMsg_Init(); |
|||
Pic_Read(fn,picBuffer); |
|||
} |
|||
else |
|||
Pic_Logo_Read(fn,picBuffer,PICTURE_MAX_SIZE); |
|||
*/ |
|||
/*--------------read test--------------------*/ |
|||
|
|||
file.close(); |
|||
#endif |
|||
} |
|||
|
|||
} |
|||
//}
|
|||
//}
|
|||
/*
|
|||
LCD_Clear(LCD_COLOR_BLACK); |
|||
//LCD_ShowString(110,100,200,24,24,"Complete");
|
|||
LCD_DisplayString(110,80,"Complete"); |
|||
delay(0xfffff); |
|||
*/ |
|||
//r = f_chdir("/");
|
|||
#if 1 |
|||
//SdFile dir, root = card.getroot();
|
|||
/*if (dir.open(&root, bakPath, O_RDONLY))
|
|||
{ |
|||
dir.remove(); |
|||
}*/ |
|||
|
|||
//r = f_rename(picPath, bakPath);
|
|||
|
|||
|
|||
//update_flag_ok = 1;
|
|||
#endif |
|||
#endif |
|||
} |
|||
dir.rename(&root, bakPath); |
|||
} |
|||
} |
|||
|
|||
|
|||
void spi_flash_read_test() {W25QXX.SPI_FLASH_BufferRead(public_buf, UNIGBK_FLASH_ADDR, BMP_WRITE_BUF_LEN);} |
|||
|
|||
void UpdateFont() { |
|||
//int r;
|
|||
//unsigned char *p;
|
|||
//char rootPath[10]={0};
|
|||
char *fn; |
|||
//unsigned char logoFlag;
|
|||
uint16_t pbr; |
|||
uint32_t flashaddr = 0; |
|||
//uint32_t pfileSize;
|
|||
//uint32_t Pic_Write_Addr;
|
|||
/*----------------------------------*/ |
|||
|
|||
// FILINFO fno;
|
|||
//DIR dir;
|
|||
//char tmp[30];
|
|||
#if 0//_USE_LFN
|
|||
static char lfn[_MAX_LFN + 1]; |
|||
finfo.lfname = lfn; |
|||
finfo.lfsize = sizeof(lfn); |
|||
#endif |
|||
//SdFile curDir;
|
|||
//if (f_opendir(&dirs, picPath) == FR_OK)
|
|||
//card.cd(picPath);
|
|||
|
|||
//const uint16_t fileCnt = card.get_num_Files();
|
|||
|
|||
//SdFile *curDir;
|
|||
//SdFile dir;
|
|||
//dir.open(picPath, O_READ);
|
|||
//const char * const fname = card.diveToFile(true, curDir, picPath);
|
|||
//if (!fname) return;
|
|||
|
|||
SdFile dir, root = card.getroot(); |
|||
if (dir.open(&root, fontPath, O_RDONLY)) { |
|||
|
|||
disp_font_update(); |
|||
spiFlashErase_FONT(); |
|||
|
|||
dir_t d; |
|||
while (dir.readDir(&d, card.longFilename) > 0) |
|||
{ |
|||
#if 1 |
|||
/*if (power_det == 0)
|
|||
{ |
|||
PW_DET_ON; |
|||
power_det=0; |
|||
} |
|||
SPI_FLASH_Init();*/ |
|||
|
|||
|
|||
//for (uint16_t i = 0; i < fileCnt; i++)
|
|||
//{
|
|||
//res = f_readdir(&dirs, &finfo);
|
|||
//card.getfilename_sorted(i);
|
|||
|
|||
if (card.longFilename[0] == 0) |
|||
break; |
|||
/*if ( card.filename[0] == '.')
|
|||
continue; |
|||
*/ |
|||
if (card.longFilename[0] == '.') |
|||
continue; |
|||
|
|||
fn = card.longFilename; |
|||
|
|||
/*if ((finfo.lfname[0] == 0) || (finfo.lfname == 0))
|
|||
fn = finfo.fname; |
|||
else |
|||
fn = finfo.lfname;*/ |
|||
|
|||
/* if (fno.fattrib & AM_DIR)
|
|||
{ |
|||
continue; |
|||
} |
|||
else */ |
|||
//{
|
|||
//if ((strstr(fn, ".gco")) || (strstr(fn, ".GCO")) || (fno.fattrib & AM_DIR))
|
|||
if (strstr(fn, ".bin")) { |
|||
char dosFilename[FILENAME_LENGTH]; |
|||
createFilename(dosFilename, d); |
|||
//strcat(public_buf, dosFilename);
|
|||
|
|||
SdFile file; |
|||
if (file.open(&dir, dosFilename, O_READ)) { |
|||
|
|||
#if 1 |
|||
/*LCD_Clear(BACK_COLOR);
|
|||
|
|||
if ((DeviceCode==0x9488)||(DeviceCode==0x5761)) |
|||
{ |
|||
LCD_ShowString(170,100,200,24,24,(u8 *)fn); |
|||
LCD_ShowString(180,130,200,24,24,"Updating..."); |
|||
} |
|||
else |
|||
{ |
|||
LCD_ShowString(90,90,200,24,24,(u8 *)fn); |
|||
LCD_ShowString(90,120,200,24,24,"Updating..."); |
|||
} |
|||
*/ |
|||
flashaddr = UNIGBK_FLASH_ADDR; |
|||
pbr = 0; |
|||
while (1) |
|||
{ |
|||
flashaddr += pbr; |
|||
pbr = file.read(public_buf, BMP_WRITE_BUF_LEN); |
|||
W25QXX.SPI_FLASH_BufferWrite(public_buf, flashaddr, pbr); |
|||
//W25QXX.SPI_FLASH_BufferRead(public_buf_test,flashaddr,pbr);
|
|||
/*if (UNIGBKFlag == 1)
|
|||
{ |
|||
fontrate = (uint16_t)(((float)(flashaddr - UNIGBK_FLASH_ADDR)/(float)(psrc.fsize))*100); |
|||
} |
|||
else |
|||
{ |
|||
fontrate = (uint16_t)(((float)(flashaddr - GBK_FLASH_ADDR)/(float)(psrc.fsize))*100); |
|||
} |
|||
|
|||
if (fontrate > 99) fontrate=99; |
|||
|
|||
if (fontrate < 10) |
|||
{ |
|||
fontString[0] = fontrate%10 + 0x30; |
|||
fontString[1] = '%'; |
|||
fontString[2] = '\0'; |
|||
} |
|||
else |
|||
{ |
|||
fontString[0] = fontrate/10 + 0x30; |
|||
fontString[1] = fontrate%10 + 0x30; |
|||
fontString[2] = '%'; |
|||
fontString[3] = '\0'; |
|||
}*/ |
|||
//LCD_DisplayString(140,130,fontString);
|
|||
if ((DeviceCode == 0x9488) || (DeviceCode == 0x5761)) { |
|||
//LCD_ShowString(200,160,200,24,24,fontString);
|
|||
} |
|||
else { |
|||
//LCD_ShowString(140,150,200,24,24,fontString);
|
|||
} |
|||
if (pbr < BMP_WRITE_BUF_LEN) break; |
|||
} |
|||
/*--------------read test--------------------*/ |
|||
/*
|
|||
BufferSet(picBuffer, 0xff, PICTURE_MAX_SIZE); |
|||
if (logoFlag == 0) |
|||
{ |
|||
PicMsg_Init(); |
|||
Pic_Read(fn,picBuffer); |
|||
} |
|||
else |
|||
Pic_Logo_Read(fn,picBuffer,PICTURE_MAX_SIZE); |
|||
*/ |
|||
/*--------------read test--------------------*/ |
|||
|
|||
file.close(); |
|||
#endif |
|||
} |
|||
|
|||
} |
|||
//}
|
|||
//}
|
|||
/*
|
|||
LCD_Clear(LCD_COLOR_BLACK); |
|||
//LCD_ShowString(110,100,200,24,24,"Complete");
|
|||
LCD_DisplayString(110,80,"Complete"); |
|||
delay(0xfffff); |
|||
*/ |
|||
//r = f_chdir("/");
|
|||
#if 1 |
|||
//SdFile dir, root = card.getroot();
|
|||
/*if (dir.open(&root, bakPath, O_RDONLY))
|
|||
{ |
|||
dir.remove(); |
|||
}*/ |
|||
dir.rename(&root, bakFont); |
|||
//r = f_rename(picPath, bakPath);
|
|||
|
|||
|
|||
//update_flag_ok = 1;
|
|||
#endif |
|||
#endif |
|||
} |
|||
} |
|||
} |
|||
#endif // SDSUPPORT
|
|||
|
|||
#endif |
|||
|
|||
#if 1 |
|||
|
|||
void Pic_Read(uint8_t *Pname, uint8_t *P_Rbuff) { |
|||
uint8_t i, j; |
|||
uint8_t Pic_cnt; |
|||
uint32_t tmp_cnt = 0; |
|||
PIC_MSG PIC; |
|||
|
|||
//void SPI_FLASH_BufferRead(u8* pBuffer, u32 ReadAddr, u16 NumByteToRead);
|
|||
|
|||
W25QXX.SPI_FLASH_BufferRead(&Pic_cnt, PIC_COUNTER_ADDR, 1); |
|||
if (Pic_cnt == 0xff) |
|||
Pic_cnt = 0; |
|||
|
|||
for (i = 0; i < Pic_cnt; i++) { |
|||
//pic name
|
|||
j = 0; |
|||
do |
|||
{ |
|||
W25QXX.SPI_FLASH_BufferRead(&PIC.name[j], PIC_NAME_ADDR + tmp_cnt, 1); |
|||
tmp_cnt++; |
|||
}while (PIC.name[j++] != '\0'); |
|||
//pic size
|
|||
W25QXX.SPI_FLASH_BufferRead(PIC.size.bytes, PIC_SIZE_ADDR + i * 4, 4); |
|||
|
|||
if ((strcmp((char*)Pname, (char*)PIC.name)) == 0) { |
|||
W25QXX.SPI_FLASH_BufferRead((uint8_t *)P_Rbuff, PIC_DATA_ADDR_TFT35 + i * PER_PIC_MAX_SPACE_TFT35, PIC.size.dwords); |
|||
/*if (DMA_ERRO_FLAG)
|
|||
{ |
|||
DMA_ERRO_FLAG = 0; |
|||
SPI_FLASH_BufferRead((uint8_t *)P_Rbuff,PIC_DATA_ADDR+i*PER_PIC_MAX_SPACE,PIC.size.dwords); |
|||
}*/ |
|||
break; |
|||
} |
|||
} |
|||
} |
|||
|
|||
void lv_pic_test(uint8_t *P_Rbuff, uint32_t addr, uint32_t size) { |
|||
W25QXX.init(SPI_QUARTER_SPEED); |
|||
W25QXX.SPI_FLASH_BufferRead((uint8_t *)P_Rbuff, addr, size); |
|||
/*if (DMA_ERRO_FLAG) {
|
|||
DMA_ERRO_FLAG = 0; |
|||
SPI_FLASH_BufferRead((uint8_t *)P_Rbuff,addr,size); |
|||
}*/ |
|||
|
|||
} |
|||
|
|||
void get_spi_flash_data(const char *rec_buf, int addr, int size) { |
|||
W25QXX.init(SPI_QUARTER_SPEED); |
|||
W25QXX.SPI_FLASH_BufferRead((uint8_t *)rec_buf, UNIGBK_FLASH_ADDR + addr, size); |
|||
} |
|||
|
|||
#endif |
|||
|
|||
#if 1 |
|||
|
|||
uint32_t logo_addroffset = 0; |
|||
void Pic_Logo_Read(uint8_t *LogoName, uint8_t *Logo_Rbuff, uint32_t LogoReadsize) { |
|||
W25QXX.SPI_FLASH_BufferRead(Logo_Rbuff, PIC_LOGO_ADDR + logo_addroffset, LogoReadsize); |
|||
logo_addroffset += LogoReadsize; |
|||
if (logo_addroffset >= LOGO_MAX_SIZE_TFT35) |
|||
logo_addroffset = 0; |
|||
} |
|||
|
|||
uint32_t default_view_addroffset = 0; |
|||
void default_view_Read(uint8_t *default_view_Rbuff, uint32_t default_view_Readsize) { |
|||
W25QXX.init(SPI_QUARTER_SPEED); |
|||
|
|||
W25QXX.SPI_FLASH_BufferRead(default_view_Rbuff, DEFAULT_VIEW_ADDR_TFT35 + default_view_addroffset + 4, default_view_Readsize); |
|||
default_view_addroffset += default_view_Readsize; |
|||
if (default_view_addroffset >= DEFAULT_VIEW_MAX_SIZE) |
|||
default_view_addroffset = 0; |
|||
|
|||
} |
|||
|
|||
uint32_t flash_view_addroffset = 0; |
|||
void flash_view_Read(uint8_t *flash_view_Rbuff, uint32_t flash_view_Readsize) { |
|||
W25QXX.init(SPI_QUARTER_SPEED); |
|||
|
|||
W25QXX.SPI_FLASH_BufferRead(flash_view_Rbuff, BAK_VIEW_ADDR_TFT35 + flash_view_addroffset, flash_view_Readsize); |
|||
flash_view_addroffset += flash_view_Readsize; |
|||
if (flash_view_addroffset >= FLASH_VIEW_MAX_SIZE) |
|||
flash_view_addroffset = 0; |
|||
|
|||
} |
|||
|
|||
#endif |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,120 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { /* C-declarations for C++ */ |
|||
#endif |
|||
|
|||
#include <stdint.h> |
|||
#include <string.h> |
|||
#include "lvgl.h" |
|||
|
|||
#if 1 |
|||
|
|||
#define PIC_MAX_CN 100 // Maximum number of pictures
|
|||
#define PIC_NAME_MAX_LEN 50 // Picture name maximum length
|
|||
|
|||
#define LOGO_MAX_SIZE_TFT35 (300*1024) |
|||
#define LOGO_MAX_SIZE_TFT32 (150*1024) |
|||
#define TITLELOGO_MAX_SIZE (150*1024) // Little logo maximum
|
|||
#define DEFAULT_VIEW_MAX_SIZE (200*200*2) |
|||
#define FLASH_VIEW_MAX_SIZE (200*200*2) |
|||
|
|||
#define PER_PIC_MAX_SPACE_TFT35 (32*1024) |
|||
#define PER_PIC_MAX_SPACE_TFT32 (16*1024) |
|||
#define PER_FONT_MAX_SPACE (16*1024) |
|||
|
|||
//pic
|
|||
//Robin_pro pic addr
|
|||
#define PIC_NAME_ADDR 0x003000 // Pic information addr
|
|||
#define PIC_SIZE_ADDR 0x007000 // Pic size information addr
|
|||
#define PIC_COUNTER_ADDR 0x008000 // Pic total number
|
|||
#define PER_PIC_SAVE_ADDR 0x009000 // Storage address of each picture
|
|||
#define PIC_LOGO_ADDR 0x00A000 // Logo addr
|
|||
//#define PIC_DATA_ADDR 0x02F000 //
|
|||
|
|||
// TFT35
|
|||
#define DEFAULT_VIEW_ADDR_TFT35 0XC5800 |
|||
#define BAK_VIEW_ADDR_TFT35 (DEFAULT_VIEW_ADDR_TFT35+90*1024) |
|||
#define PIC_ICON_LOGO_ADDR_TFT35 (BAK_VIEW_ADDR_TFT35+80*1024) |
|||
#define PIC_DATA_ADDR_TFT35 (PIC_ICON_LOGO_ADDR_TFT35+350*1024)//0XC5800
|
|||
|
|||
// TFT32
|
|||
#define PIC_DATA_ADDR_TFT32 0x02F000 |
|||
#define PIC_ICON_LOGO_ADDR_TFT32 0x5D8000 |
|||
#define PIC_OTHER_SIZE_ADDR_TFT32 0x5EE000 |
|||
|
|||
// font
|
|||
#define FONTINFOADDR 0x600000 // 6M -- font addr
|
|||
#define UNIGBK_FLASH_ADDR (FONTINFOADDR+4096) // 4*1024
|
|||
#define GBK_FLASH_ADDR (UNIGBK_FLASH_ADDR+180224) // 176*1024
|
|||
|
|||
// Flash flag
|
|||
#define FLASH_INF_VALID_FLAG 0xAA558761 |
|||
// SD card information first addr
|
|||
#define VAR_INF_ADDR 0x000000 |
|||
|
|||
union union32 { |
|||
uint8_t bytes[4]; |
|||
uint32_t dwords; |
|||
}; |
|||
|
|||
// pic information
|
|||
struct pic_msg { |
|||
uint8_t name[PIC_NAME_MAX_LEN]; |
|||
union union32 size; |
|||
}; |
|||
|
|||
typedef struct pic_msg PIC_MSG; |
|||
|
|||
#define BMP_WRITE_BUF_LEN 512 |
|||
|
|||
#define PICINFOADDR 0 |
|||
|
|||
#define PIC_SIZE_xM 6 |
|||
#define FONT_SIZE_xM 2 |
|||
|
|||
//extern void PicMsg_Init(void);
|
|||
extern void Pic_Read(uint8_t *Pname, uint8_t *P_Rbuff); |
|||
//extern void bindBmpFileData(const uint8_t **pBuf, uint8_t *pName);
|
|||
//extern void Pic_Logo_Read(uint8_t *LogoName,uint8_t *Logo_Rbuff,uint32_t LogoReadsize);
|
|||
//extern void default_view_Read(uint8_t *default_view_Rbuff,uint32_t default_view_Readsize);
|
|||
//extern void flash_view_Read(uint8_t *flash_view_Rbuff,uint32_t flash_view_Readsize);
|
|||
|
|||
//extern void lv_Pic_Read(uint8_t *Pname,uint8_t *P_Rbuff,uint32_t addr,uint32_t size);
|
|||
extern void lv_pic_test(uint8_t *P_Rbuff, uint32_t addr, uint32_t size); |
|||
|
|||
#endif |
|||
|
|||
extern uint32_t lv_get_pic_addr(uint8_t *Pname); |
|||
|
|||
extern void get_spi_flash_data(const char *rec_buf, int offset, int size); |
|||
//extern void SPI_FLASH_BufferRead(uint8_t* pBuffer, uint32_t ReadAddr, uint16_t NumByteToRead);
|
|||
|
|||
extern void spi_flash_read_test(); |
|||
extern void default_view_Read(uint8_t *default_view_Rbuff, uint32_t default_view_Readsize); |
|||
extern void flash_view_Read(uint8_t *flash_view_Rbuff, uint32_t flash_view_Readsize); |
|||
|
|||
#ifdef __cplusplus |
|||
} /* C-declarations for C++ */ |
|||
#endif |
@ -0,0 +1,218 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
|
|||
#include "lv_conf.h" |
|||
#include "draw_ui.h" |
|||
#include "../../../../module/temperature.h" |
|||
#include "../../../../module/motion.h" |
|||
#include "../../../../sd/cardreader.h" |
|||
#include "../../../../gcode/queue.h" |
|||
|
|||
#if ENABLED(POWER_LOSS_RECOVERY) |
|||
#include "../../../../feature/powerloss.h" |
|||
#endif |
|||
|
|||
#include "../../../../gcode/gcode.h" |
|||
#include "../../../../module/planner.h" |
|||
|
|||
extern uint32_t To_pre_view; |
|||
extern uint8_t flash_preview_begin, default_preview_flg, gcode_preview_over; |
|||
|
|||
void printer_state_polling() { |
|||
if (uiCfg.print_state == PAUSING) { |
|||
#if ENABLED(SDSUPPORT) |
|||
if (!planner.has_blocks_queued() && card.getIndex() > MIN_FILE_PRINTED) //���� �ļ��� M109��M190ָ��
|
|||
uiCfg.waitEndMoves++; |
|||
|
|||
if (uiCfg.waitEndMoves > 20) { |
|||
uiCfg.waitEndMoves = 0; |
|||
planner.synchronize(); |
|||
gcode.process_subcommands_now_P(PSTR("M25")); |
|||
gcode.process_subcommands_now_P(PSTR("G91")); |
|||
gcode.process_subcommands_now_P(PSTR("G1 Z5")); |
|||
gcode.process_subcommands_now_P(PSTR("G90")); |
|||
|
|||
uiCfg.print_state = PAUSED; |
|||
|
|||
//#if ENABLED(POWER_LOSS_RECOVERY)
|
|||
// if (recovery.enabled) recovery.save(true);
|
|||
//#endif
|
|||
gCfgItems.pause_reprint = 1; |
|||
update_spi_flash(); |
|||
} |
|||
#endif |
|||
} |
|||
else { |
|||
uiCfg.waitEndMoves = 0; |
|||
} |
|||
|
|||
if (uiCfg.print_state == PAUSED) { |
|||
|
|||
} |
|||
|
|||
if (uiCfg.print_state == RESUMING) { |
|||
if (IS_SD_PAUSED()) { |
|||
gcode.process_subcommands_now_P(PSTR("G91")); |
|||
gcode.process_subcommands_now_P(PSTR("G1 Z-5")); |
|||
gcode.process_subcommands_now_P(PSTR("G90")); |
|||
gcode.process_subcommands_now_P(PSTR("M24")); |
|||
uiCfg.print_state = WORKING; |
|||
start_print_time(); |
|||
|
|||
gCfgItems.pause_reprint = 0; |
|||
update_spi_flash(); |
|||
} |
|||
} |
|||
#if ENABLED(POWER_LOSS_RECOVERY) |
|||
if (uiCfg.print_state == REPRINTED) { |
|||
memset(public_buf_m, 0, sizeof(public_buf_m)); |
|||
#if HOTENDS |
|||
HOTEND_LOOP() { |
|||
const int16_t et = recovery.info.target_temperature[e]; |
|||
if (et) { |
|||
#if HOTENDS > 1 |
|||
sprintf_P(public_buf_m, PSTR("T%i"), e); |
|||
gcode.process_subcommands_now(public_buf_m); |
|||
#endif |
|||
sprintf_P(public_buf_m, PSTR("M109 S%i"), et); |
|||
gcode.process_subcommands_now(public_buf_m); |
|||
} |
|||
} |
|||
#endif |
|||
|
|||
if (gCfgItems.pause_reprint == 1) { |
|||
gcode.process_subcommands_now_P(PSTR("G91")); |
|||
gcode.process_subcommands_now_P(PSTR("G1 Z-5")); |
|||
gcode.process_subcommands_now_P(PSTR("G90")); |
|||
} |
|||
recovery.resume(); |
|||
|
|||
uiCfg.print_state = WORKING; |
|||
start_print_time(); |
|||
|
|||
gCfgItems.pause_reprint = 0; |
|||
update_spi_flash(); |
|||
} |
|||
#endif |
|||
|
|||
if (uiCfg.print_state == WORKING) |
|||
filament_check(); |
|||
} |
|||
|
|||
void filament_pin_setup() { |
|||
#if PIN_EXISTS(MT_DET_1) |
|||
pinMode(MT_DET_1_PIN, INPUT_PULLUP); |
|||
#endif |
|||
#if PIN_EXISTS(MT_DET_2) |
|||
pinMode(MT_DET_2_PIN, INPUT_PULLUP); |
|||
#endif |
|||
#if PIN_EXISTS(MT_DET_3) |
|||
pinMode(MT_DET_3_PIN, INPUT_PULLUP); |
|||
#endif |
|||
} |
|||
|
|||
void filament_check() { |
|||
const int FIL_DELAY = 20; |
|||
#if PIN_EXISTS(MT_DET_1) |
|||
static int fil_det_count_1 = 0; |
|||
if (!READ(MT_DET_1_PIN) && !MT_DET_PIN_INVERTING) |
|||
fil_det_count_1++; |
|||
else if (READ(MT_DET_1_PIN) && MT_DET_PIN_INVERTING) |
|||
fil_det_count_1++; |
|||
else if (fil_det_count_1 > 0) |
|||
fil_det_count_1--; |
|||
|
|||
if (!READ(MT_DET_1_PIN) && !MT_DET_PIN_INVERTING) |
|||
fil_det_count_1++; |
|||
else if (READ(MT_DET_1_PIN) && MT_DET_PIN_INVERTING) |
|||
fil_det_count_1++; |
|||
else if (fil_det_count_1 > 0) |
|||
fil_det_count_1--; |
|||
#endif |
|||
|
|||
#if PIN_EXISTS(MT_DET_2) |
|||
static int fil_det_count_2 = 0; |
|||
if (!READ(MT_DET_2_PIN) && !MT_DET_PIN_INVERTING) |
|||
fil_det_count_2++; |
|||
else if (READ(MT_DET_2_PIN) && MT_DET_PIN_INVERTING) |
|||
fil_det_count_2++; |
|||
else if (fil_det_count_2 > 0) |
|||
fil_det_count_2--; |
|||
|
|||
if (!READ(MT_DET_2_PIN) && !MT_DET_PIN_INVERTING) |
|||
fil_det_count_2++; |
|||
else if (READ(MT_DET_2_PIN) && MT_DET_PIN_INVERTING) |
|||
fil_det_count_2++; |
|||
else if (fil_det_count_2 > 0) |
|||
fil_det_count_2--; |
|||
#endif |
|||
|
|||
#if PIN_EXISTS(MT_DET_3) |
|||
static int fil_det_count_3 = 0; |
|||
if (!READ(MT_DET_3_PIN) && !MT_DET_PIN_INVERTING) |
|||
fil_det_count_3++; |
|||
else if (READ(MT_DET_3_PIN) && MT_DET_PIN_INVERTING) |
|||
fil_det_count_3++; |
|||
else if (fil_det_count_3 > 0) |
|||
fil_det_count_3--; |
|||
|
|||
if (!READ(MT_DET_3_PIN) && !MT_DET_PIN_INVERTING) |
|||
fil_det_count_3++; |
|||
else if (READ(MT_DET_3_PIN) && MT_DET_PIN_INVERTING) |
|||
fil_det_count_3++; |
|||
else if (fil_det_count_3 > 0) |
|||
fil_det_count_3--; |
|||
#endif |
|||
|
|||
if ( |
|||
#if PIN_EXISTS(MT_DET_1) |
|||
fil_det_count_1 >= FIL_DELAY |
|||
#else |
|||
false |
|||
#endif |
|||
#if PIN_EXISTS(MT_DET_2) |
|||
|| fil_det_count_2 >= FIL_DELAY |
|||
#endif |
|||
#if PIN_EXISTS(MT_DET_3) |
|||
|| fil_det_count_3 >= FIL_DELAY |
|||
#endif |
|||
) { |
|||
clear_cur_ui(); |
|||
card.pauseSDPrint(); |
|||
stop_print_time(); |
|||
uiCfg.print_state = PAUSING; |
|||
|
|||
if (gCfgItems.from_flash_pic == 1) |
|||
flash_preview_begin = 1; |
|||
else |
|||
default_preview_flg = 1; |
|||
|
|||
lv_draw_printing(); |
|||
} |
|||
} |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,36 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { /* C-declarations for C++ */ |
|||
#endif |
|||
|
|||
#define MIN_FILE_PRINTED 100 //5000
|
|||
|
|||
extern void printer_state_polling(); |
|||
extern void filament_pin_setup(); |
|||
extern void filament_check(); |
|||
|
|||
#ifdef __cplusplus |
|||
} /* C-declarations for C++ */ |
|||
#endif |
@ -0,0 +1,718 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
//****************英文***************************//
|
|||
#define MACHINE_CONFIG_EN "Machine\nSettings" |
|||
|
|||
#define NEXT_EN "Next" |
|||
#define PREVIOUS_EN "Previous" |
|||
#define DEFAULT_EN "Default" |
|||
#define KEY_BACK_EN "Del" |
|||
#define KEY_REST_EN "Rest" |
|||
#define KEY_CONFIRM_EN "Confirm" |
|||
|
|||
#define KEYBOARD_KEY0_EN "0" |
|||
#define KEYBOARD_KEY1_EN "1" |
|||
#define KEYBOARD_KEY2_EN "2" |
|||
#define KEYBOARD_KEY3_EN "3" |
|||
#define KEYBOARD_KEY4_EN "4" |
|||
#define KEYBOARD_KEY5_EN "5" |
|||
#define KEYBOARD_KEY6_EN "6" |
|||
#define KEYBOARD_KEY7_EN "7" |
|||
#define KEYBOARD_KEY8_EN "8" |
|||
#define KEYBOARD_KEY9_EN "9" |
|||
#define KEYBOARD_KEY_POINT_EN "." |
|||
#define KEYBOARD_KEY_NEGATIVE_EN "-" |
|||
|
|||
#define MACHINE_PARA_EN "Machine\nsettings" |
|||
#define MACHINE_PARA_TITLE_EN "Machine settings" |
|||
#define MACHINE_TYPE_CNOFIG_EN "Machine" |
|||
#define TEMPERATURE_CONFIG_EN "Temperature" |
|||
#define MOTOR_CONFIG_EN "Motor" |
|||
#define ADVANCE_CONFIG_EN "Adavance" |
|||
|
|||
#define MACHINE_CONFIG_TITLE_EN "Machine Settings" |
|||
#define MACHINE_TYPE_EN "Machine type" |
|||
#define MACHINE_STROKE_EN "Machine Size" |
|||
#define MACHINE_HOMEDIR_EN "Home direction" |
|||
#define MACHINE_ENDSTOP_TYPE_EN "Endstop type" |
|||
#define MACHINE_FILAMENT_CONFIG_EN "Filament settings" |
|||
#define MACHINE_LEVELING_CONFIG_EN "Leveling settings" |
|||
|
|||
#define MACHINE_TYPE_CONFIG_TITLE_EN "Machine Settings>Machine type" |
|||
#define MACHINE_TYPE_XYZ_EN "XYZ Machine" |
|||
#define MACHINE_TYPE_DELTA_EN "Delta Machine" |
|||
#define MACHINE_TYPE_COREXY_EN "Corexy Machine" |
|||
|
|||
#define MACHINE_STROKE_CONF_TITLE_EN "Machine Settings>Machine Size" |
|||
#define X_MAX_LENGTH_EN "X-axis maximum stroke" |
|||
#define Y_MAX_LENGTH_EN "Y-axis maximum stroke" |
|||
#define Z_MAX_LENGTH_EN "Z-axis maximum stroke" |
|||
|
|||
#define X_MIN_LENGTH_EN "X-axis minimum stroke" |
|||
#define Y_MIN_LENGTH_EN "Y-axis minimum stroke" |
|||
#define Z_MIN_LENGTH_EN "Z-axis minimum stroke" |
|||
|
|||
#define HOME_DIR_CONF_TITLE_EN "Machine Settings>Home direction" |
|||
#define HOME_DIR_X_EN "X-axis home direction" |
|||
#define HOME_DIR_Y_EN "Y-axis home direction" |
|||
#define HOME_DIR_Z_EN "Z-axis home direction" |
|||
#define HOME_MIN_EN "MIN" |
|||
#define HOME_MAX_EN "MAX" |
|||
|
|||
#define ENDSTOP_CONF_TITLE_EN "Machine Settings>Endstop type" |
|||
#define MIN_ENDSTOP_X_EN "X-axis minimum Endstop" |
|||
#define MIN_ENDSTOP_Y_EN "Y-axis minimum Endstop" |
|||
#define MIN_ENDSTOP_Z_EN "Z-axis minimum Endstop" |
|||
#define MAX_ENDSTOP_X_EN "X axis maximum Endstop" |
|||
#define MAX_ENDSTOP_Y_EN "Y axis maximum Endstop" |
|||
#define MAX_ENDSTOP_Z_EN "Z axis maximum Endstop" |
|||
#define ENDSTOP_FIL_EN "Filament sensor" |
|||
#define ENDSTOP_LEVEL_EN "Leveling sensor" |
|||
#define ENDSTOP_OPENED_EN "Open" |
|||
#define ENDSTOP_CLOSED_EN "Close" |
|||
|
|||
#define FILAMENT_CONF_TITLE_EN "Filament settings" |
|||
#define FILAMENT_IN_TEMPERATURE_EN "Load temperature" |
|||
#define FILAMENT_IN_LENGTH_EN "Load length" |
|||
#define FILAMENT_IN_SPEED_EN "Load speed" |
|||
#define FILAMENT_OUT_TEMPERATURE_EN "Unload temperature" |
|||
#define FILAMENT_OUT_LENGTH_EN "Unload length" |
|||
#define FILAMENT_OUT_SPEED_EN "Unload speed" |
|||
|
|||
#define LEVELING_CONF_TITLE_EN "Leveling settings" |
|||
#define LEVELING_PARA_CONF_EN "Leveling settings" |
|||
#define LEVELING_DELTA_EN "delta machine leveling" |
|||
#define LEVELING_XYZ_EN "Manual leveling coordinate settings" |
|||
|
|||
#define LEVELING_PARA_CONF_TITLE_EN "leveling setting" |
|||
#define AUTO_LEVELING_ENABLE_EN "Enable auto leveling" |
|||
#define BLTOUCH_LEVELING_ENABLE_EN "Enable BLtouch" |
|||
#define PROBE_PORT_EN "Probe connector" |
|||
#define PROBE_X_OFFSET_EN "Probe x axis offset" |
|||
#define PROBE_Y_OFFSET_EN "Probe y axis offset" |
|||
#define PROBE_Z_OFFSET_EN "Probe z axis offset" |
|||
#define PROBE_XY_SPEED_EN "Probe xy axis speed" |
|||
#define PROBE_Z_SPEED_EN "Probe z axis speed" |
|||
#define ENABLE_EN "YES" |
|||
#define DISABLE_EN "NO" |
|||
#define Z_MIN_EN "ZMin" |
|||
#define Z_MAX_EN "ZMax" |
|||
|
|||
#define DELTA_LEVEL_CONF_TITLE_EN "Delta Machine settings" |
|||
#define DELTA_LEVEL_CONF_EN "Delta Machine Leveling" |
|||
#define DELTA_MACHINE_RADIUS_EN "Machine Radius" |
|||
#define DELTA_DIAGONAL_ROD_EN "Machine rod length" |
|||
#define DELTA_PRINT_RADIUS_EN "Print radius" |
|||
#define DELTA_HEIGHT_EN "Print height" |
|||
#define SMOOTH_ROD_OFFSET_EN "Slider offset" |
|||
#define EFFECTOR_OFFSET_EN "Effector offset" |
|||
#define CALIBRATION_RADIUS_EN "Leveling radius" |
|||
|
|||
#define XYZ_LEVEL_CONF_TITLE_EN "Cartesian Machine Settings" |
|||
#define PROBE_REACH_MAX_LEFT_EN "Probe reaches leftmost position" |
|||
#define PROBE_REACH_MAX_RIGHT_EN "Probe reaches rightmost position" |
|||
#define PROBE_REACH_MAX_FRONT_EN "Probe reaches front position" |
|||
#define PROBE_REACH_MAX_BACK_EN "Probe reaches final position" |
|||
|
|||
#define TEMPERATURE_CONF_TITLE_EN "Machine Settings>Temperature settings" |
|||
#define NOZZLE_CONF_EN "Nozzle settings" |
|||
#define HOTBED_CONF_EN "Hotbed settings" |
|||
#define PREHEAT_TEMPER_EN "Preset temperature" |
|||
|
|||
#define NOZZLE_CONF_TITLE_EN "Machine Settings>Nozzle settings" |
|||
#define NOZZLECNT_EN "Number of nozzles" |
|||
#define NOZZLE_TYPE_EN "E0 Temperature type" |
|||
#define NOZZLE_ADJUST_TYPE_EN "PID thermostat" |
|||
#define NOZZLE_MIN_TEMPERATURE_EN "lowest temperature" |
|||
#define NOZZLE_MAX_TEMPERATURE_EN "Maximum temperature" |
|||
#define EXTRUD_MIN_TEMPER_EN "Minimum extrusion temperature" |
|||
|
|||
#define HOTBED_CONF_TITLE_EN "Machine Settings>Hotbed settings" |
|||
#define HOTBED_ADJUST_EN "PID thermostat" |
|||
#define HOTBED_MIN_TEMPERATURE_EN "lowest temperature" |
|||
#define HOTBED_MAX_TEMPERATURE_EN "Maximum temperature" |
|||
|
|||
#define MOTOR_CONF_TITLE_EN "Machine Settings>Motor settings" |
|||
#define MAXFEEDRATE_CONF_EN "Maximum speed settings" |
|||
#define ACCELERATION_CONF_EN "Acceleration settings" |
|||
#define JERKCONF_EN "Jerk settings" |
|||
#define STEPSCONF_EN "Steps settings" |
|||
#define MOTORDIRCONF_EN "Motor direction settings" |
|||
#define HOMEFEEDRATECONF_EN "Home speed setting" |
|||
|
|||
#define MAXFEEDRATE_CONF_TITLE_EN "Machine Settings>Maximum speed" |
|||
#define X_MAXFEEDRATE_EN "X axis maximum speed" |
|||
#define Y_MAXFEEDRATE_EN "Y axis maximum speed" |
|||
#define Z_MAXFEEDRATE_EN "Z axis maximum speed" |
|||
#define E0_MAXFEEDRATE_EN "E0 axis maximum speed" |
|||
#define E1_MAXFEEDRATE_EN "E1 axis maximum speed" |
|||
|
|||
#define ACCELERATION_CONF_TITLE_EN "Machine Settings>Acceleration" |
|||
#define PRINT_ACCELERATION_EN "Print acceleration" |
|||
#define RETRACT_ACCELERATION_EN "Retraction acceleration" |
|||
#define TRAVEL_ACCELERATION_EN "Travel acceleration" |
|||
#define X_ACCELERATION_EN "X-axis acceleration" |
|||
#define Y_ACCELERATION_EN "Y-axis acceleration" |
|||
#define Z_ACCELERATION_EN "Z-axis acceleration" |
|||
#define E0_ACCELERATION_EN "E0-axis acceleration" |
|||
#define E1_ACCELERATION_EN "E1-axis acceleration" |
|||
|
|||
#define JERK_CONF_TITLE_EN "Machine Settings>Jerk speed" |
|||
#define X_JERK_EN "X-axis jerk speed" |
|||
#define Y_JERK_EN "Y-axis jerk speed" |
|||
#define Z_JERK_EN "J-axis jerk speed" |
|||
#define E_JERK_EN "E-axis jerk speed" |
|||
|
|||
#define STEPS_CONF_TITLE_EN "Machine Settings>Steps settings" |
|||
#define X_STEPS_EN "X-axis steps" |
|||
#define Y_STEPS_EN "Y-axis stepS" |
|||
#define Z_STEPS_EN "Z-axis stepS" |
|||
#define E0_STEPS_EN "E0-axis steps" |
|||
#define E1_STEPS_EN "E1-axis steps" |
|||
|
|||
#define MOTORDIR_CONF_TITLE_EN "Machine Settings>Motor direction" |
|||
#define X_MOTORDIR_EN "X-axis motor direction invert" |
|||
#define Y_MOTORDIR_EN "Y-axis motor direction invert" |
|||
#define Z_MOTORDIR_EN "Z-axis motor direction invert" |
|||
#define E0_MOTORDIR_EN "E0-axis motor direction invert" |
|||
#define E1_MOTORDIR_EN "E1-axis motor direction invert" |
|||
#define INVERT_P_EN "YES" |
|||
#define INVERT_N_EN "NO" |
|||
|
|||
#define HOMEFEEDRATE_CONF_TITLE_EN "Machine Settings>Home speed" |
|||
#define X_HOMESPEED_EN "XY-axis Home speed" |
|||
#define Y_HOMESPEED_EN "Y-axis Home speed" |
|||
#define Z_HOMESPEED_EN "Z-axis Home speed" |
|||
|
|||
#define ADVANCED_CONF_TITLE_EN "Machine Settings>Advance" |
|||
#define PWROFF_DECTION_EN "power off dection module" |
|||
#define PWROFF_AFTER_PRINT_EN "Auto Shutdown after print" |
|||
#define HAVE_UPS_EN "Has UPS power supply" |
|||
#define Z2_AND_Z2ENDSTOP_CONF_EN "Z2 Settings" |
|||
#define ENABLE_PINS_CONF_EN "Enable pins level settings" |
|||
|
|||
#define Z2_AND_Z2ENDSTOP_CONF_TITLE_EN "Z2 Settings" |
|||
#define Z2_ENABLE_EN "Z2 Enable" |
|||
#define Z2_ENDSTOP_EN "Z2_EndStop Enable" |
|||
#define Z2_PORT_EN "Z2 Connector" |
|||
|
|||
#define ENABLE_PINS_CONF_TITLE_EN "ENABLE_PINS_LEVEL" |
|||
#define X_ENABLE_PINS_INVERT_EN "X_ENABLE_PIN_INVERT" |
|||
#define Y_ENABLE_PINS_INVERT_EN "Y_ENABLE_PIN_INVERT" |
|||
#define Z_ENABLE_PINS_INVERT_EN "Z_ENABLE_PIN_INVERT" |
|||
#define E_ENABLE_PINS_INVERT_EN "E_ENABLE_PIN_INVERT" |
|||
|
|||
#define TOOL_TEXT_EN "Tool" |
|||
#define PREHEAT_TEXT_EN "Preheat" |
|||
#define MOVE_TEXT_EN "Move" |
|||
#define HOME_TEXT_EN "Home" |
|||
#define PRINT_TEXT_EN "Printing" |
|||
#define EXTRUDE_TEXT_EN "Extrusion" |
|||
#define LEVELING_TEXT_EN "Leveling" |
|||
#define AUTO_LEVELING_TEXT_EN "AutoLevel" |
|||
#define SET_TEXT_EN "Settings" |
|||
#define MORE_TEXT_EN "More" |
|||
|
|||
#define ADD_TEXT_EN "Add" |
|||
#define DEC_TEXT_EN "Dec" |
|||
#define EXTRUDER_1_TEXT_EN "Extrusion1" |
|||
#define EXTRUDER_2_TEXT_EN "Extrusion2" |
|||
#define HEATBED_TEXT_EN "HeatBed" |
|||
#define TEXT_1C_EN "1℃" |
|||
#define TEXT_5C_EN "5℃" |
|||
#define TEXT_10C_EN "10℃" |
|||
#define CLOSE_TEXT_EN "Close" |
|||
|
|||
#define BACK_TEXT_EN "Back" |
|||
|
|||
#define TOOL_PREHEAT_EN "Preheat" |
|||
#define TOOL_EXTRUDE_EN "Extrusion" |
|||
#define TOOL_MOVE_EN "Move" |
|||
#define TOOL_HOME_EN "Home" |
|||
#define TOOL_LEVELING_EN "Leveling" |
|||
#define TOOL_AUTO_LEVELING_EN "AutoLevel" |
|||
#define TOOL_FILAMENT_EN "Filament" |
|||
#define TOOL_MORE_EN "More" |
|||
|
|||
#define AXIS_X_ADD_TEXT_EN "X+" |
|||
#define AXIS_X_DEC_TEXT_EN "X-" |
|||
#define AXIS_Y_ADD_TEXT_EN "Y+" |
|||
#define AXIS_Y_DEC_TEXT_EN "Y-" |
|||
#define AXIS_Z_ADD_TEXT_EN "Z+" |
|||
#define AXIS_Z_DEC_TEXT_EN "Z-" |
|||
#define TEXT_01MM_EN "0.1mm" |
|||
#define TEXT_1MM_EN "1mm" |
|||
#define TEXT_10MM_EN "10mm" |
|||
|
|||
#define HOME_X_TEXT_EN "X" |
|||
#define HOME_Y_TEXT_EN "Y" |
|||
#define HOME_Z_TEXT_EN "Z" |
|||
#define HOME_ALL_TEXT_EN "Home" |
|||
#define HOME_STOPMOVE_EN "Quickstop" |
|||
|
|||
#define PAGE_UP_TEXT_EN "Page up" |
|||
#define PAGE_DOWN_TEXT_EN "Page down" |
|||
|
|||
#define EXTRUDER_IN_TEXT_EN "In" |
|||
#define EXTRUDER_OUT_TEXT_EN "Out" |
|||
#define EXTRUDE_1MM_TEXT_EN "1mm" |
|||
#define EXTRUDE_5MM_TEXT_EN "5mm" |
|||
#define EXTRUDE_10MM_TEXT_EN "10mm" |
|||
#define EXTRUDE_LOW_SPEED_TEXT_EN "Low" |
|||
#define EXTRUDE_MEDIUM_SPEED_TEXT_EN "Normal" |
|||
#define EXTRUDE_HIGH_SPEED_TEXT_EN "High" |
|||
|
|||
#define LEVELING_POINT1_TEXT_EN "Point1" |
|||
#define LEVELING_POINT2_TEXT_EN "Point2" |
|||
#define LEVELING_POINT3_TEXT_EN "Point3" |
|||
#define LEVELING_POINT4_TEXT_EN "Point4" |
|||
#define LEVELING_POINT5_TEXT_EN "Point5" |
|||
|
|||
#define FILESYS_TEXT_EN "FileSys" |
|||
#define WIFI_TEXT_EN "WiFi" |
|||
#define FAN_TEXT_EN "Fan" |
|||
#define ABOUT_TEXT_EN "About" |
|||
#define BREAK_POINT_TEXT_EN "Continue" |
|||
#define FILAMENT_TEXT_EN "Filament" |
|||
#define LANGUAGE_TEXT_EN "Language" |
|||
#define MOTOR_OFF_TEXT_EN "Motor-off" |
|||
#define MOTOR_OFF_XY_TEXT_EN "Off-XY" |
|||
#define SHUTDOWN_TEXT_EN "Shutdown" |
|||
|
|||
#define U_DISK_TEXT_EN "USB" |
|||
#define SD_CARD_TEXT_EN "SD" |
|||
#define WIFI_NAME_TEXT_EN "WiFi: " |
|||
#define WIFI_KEY_TEXT_EN "Key: " |
|||
#define WIFI_IP_TEXT_EN "IP: " |
|||
#define WIFI_AP_TEXT_EN "State: AP" |
|||
#define WIFI_STA_TEXT_EN "State: STA" |
|||
#define WIFI_CONNECTED_TEXT_EN "Connected" |
|||
#define WIFI_DISCONNECTED_TEXT_EN "Disconnected" |
|||
#define WIFI_EXCEPTION_TEXT_EN "Exception" |
|||
#define WIFI_RECONNECT_TEXT_EN "Reconnect" |
|||
#define CLOUD_TEXT_EN "Cloud" |
|||
#define CLOUD_BIND_EN "Bind" |
|||
#define CLOUD_UNBIND_EN "Unbind" |
|||
#define CLOUD_UNBINDING_EN "Unbinding" |
|||
#define CLOUD_DISCONNECTED_EN "Disconnected" |
|||
#define CLOUD_UNBINDED_EN "Unbinded" |
|||
#define CLOUD_BINDED_EN "Binded" |
|||
#define CLOUD_DISABLE_EN "Disable" |
|||
|
|||
#define FAN_ADD_TEXT_EN "Add" |
|||
#define FAN_DEC_TEXT_EN "Dec" |
|||
#define FAN_OPEN_TEXT_EN "100%" |
|||
#define FAN_HALF_TEXT_EN "50%" |
|||
#define FAN_CLOSE_TEXT_EN "Close" |
|||
#define FAN_TIPS1_TEXT_EN "FAN" |
|||
#define FAN_TIPS2_TEXT_EN "FAN\nClose" |
|||
|
|||
#define FILAMENT_IN_TEXT_EN "Load" |
|||
#define FILAMENT_OUT_TEXT_EN "Unload" |
|||
#define FILAMENT_EXT0_TEXT_EN "Extrusion1" |
|||
#define FILAMENT_EXT1_TEXT_EN "Extrusion2" |
|||
#define FILAMENT_HEAT_TEXT_EN "Preheat" |
|||
#define FILAMENT_STOP_TEXT_EN "Stop" |
|||
//#define FILAMENT_CHANGE_TEXT_EN "Filament replace"
|
|||
#define FILAMENT_TIPS2_TEXT_EN "T:" |
|||
#define FILAMENT_TIPS3_TEXT_EN "Loading..." |
|||
#define FILAMENT_TIPS4_TEXT_EN "Unloading..." |
|||
#define FILAMENT_TIPS5_TEXT_EN "Temp is too low to go,please heat" |
|||
#define FILAMENT_TIPS6_TEXT_EN "Completed" |
|||
|
|||
#if 0 |
|||
#define FILAMENT_REPLAYS_IDLE_TEXT_EN "Please click <Load> or <unload> \nto replace filament!" |
|||
#define FILAMENT_CHANGE_TEXT_EN "Please click <Load> or <unload>,\nAfter pinter pause." |
|||
#define FILAMENT_DIALOG_LOAD_HEAT_TIPS_EN "Heating up the nozzle,please wait..." |
|||
#define FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_EN "Heating up the nozzle,please wait..." |
|||
#define FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_EN "Heat completed,please load filament to extruder,and click <confirm> for start loading." |
|||
#define FILAMENT_DIALOG_LOAD_CONFIRM2_TIPS_EN "Please load filament to extruder,and click <confirm> for start loading." |
|||
#define FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_EN "Heat completed,please click <confirm> for start unloading.!" |
|||
#define FILAMENT_DIALOG_LOADING_TIPS_EN "Is loading ,please wait!" |
|||
#define FILAMENT_DIALOG_UNLOADING_TIPS_EN "Is unloading,please wait!" |
|||
#define FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_EN "Load filament completed,click <confirm> for return!" |
|||
#define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_EN "Unload filament completed,click <confirm> for return!" |
|||
#endif |
|||
|
|||
|
|||
#define FILAMENT_CHANGE_TEXT_EN "Please click <Load> \nor <unload>,After \npinter pause." |
|||
#define FILAMENT_DIALOG_LOAD_HEAT_TIPS_EN "Heating up the nozzle,\nplease wait..." |
|||
#define FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_EN "Heating up the nozzle,\nplease wait..." |
|||
#define FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_EN "Heat completed,please load filament \nto extruder,and click <confirm> \nfor start loading." |
|||
#define FILAMENT_DIALOG_LOAD_CONFIRM2_TIPS_EN "Please load filament to extruder,\nand click <confirm> for start loading." |
|||
#define FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_EN "Heat completed,please \nclick <confirm> for start unloading.!" |
|||
#define FILAMENT_DIALOG_LOADING_TIPS_EN "Is loading ,please wait!" |
|||
#define FILAMENT_DIALOG_UNLOADING_TIPS_EN "Is unloading,please wait!" |
|||
#define FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_EN "Load filament completed,\nclick <confirm> for return!" |
|||
#define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_EN "Unload filament completed,\nclick <confirm> for return!" |
|||
|
|||
|
|||
#define PRE_HEAT_EXT_TEXT_EN "E" |
|||
#define PRE_HEAT_BED_TEXT_EN "Bed" |
|||
|
|||
#define FILE_LOADING_EN "Loading......" |
|||
#if 0 |
|||
#define NO_FILE_AND_CHECK_EN "No files found!Please insert SD card or U disk!" |
|||
#else |
|||
#define NO_FILE_AND_CHECK_EN " No files found!\n Check the file system configuration!" |
|||
#endif |
|||
|
|||
#define NO_FILE_EN "No files found!" |
|||
|
|||
#define EXTRUDER_TEMP_TEXT_EN "Temper" |
|||
#define EXTRUDER_E_LENGTH1_TEXT_EN "Extrusion1" |
|||
#define EXTRUDER_E_LENGTH2_TEXT_EN "Extrusion2" |
|||
#define EXTRUDER_E_LENGTH3_TEXT_EN "Extrusion3" |
|||
|
|||
#define ABOUT_TYPE_TEXT_EN "Type: " |
|||
#define ABOUT_VERSION_TEXT_EN "Firmware: " |
|||
#define ABOUT_WIFI_TEXT_EN "WiFi: " |
|||
|
|||
#define PRINTING_OPERATION_EN "Option" |
|||
#define PRINTING_PAUSE_EN "Pause" |
|||
#define PRINTING_TEMP_EN "Temp." |
|||
#define PRINTING_CHANGESPEED_EN "Speed" |
|||
#define PRINTING_RESUME_EN "Resume" |
|||
#define PRINTING_STOP_EN "Stop" |
|||
#define PRINTING_MORE_EN "More" |
|||
#define PRINTING_EXTRUDER_EN "Extrusion" |
|||
#define PRINTING_MOVE_EN "Move" |
|||
|
|||
#define EXTRUDER_SPEED_EN "Extrusion" |
|||
#define MOVE_SPEED_EN "Move" |
|||
#define EXTRUDER_SPEED_STATE_EN "Extrude Speed" |
|||
#define MOVE_SPEED_STATE_EN "Move Speed" |
|||
#define STEP_1PERCENT_EN "1%" |
|||
#define STEP_5PERCENT_EN "5%" |
|||
#define STEP_10PERCENT_EN "10%" |
|||
|
|||
#define ZOFFSET_EN "Z Offset" |
|||
#define ZOFFSET_INC_EN "Add" |
|||
#define ZOFFSET_DEC_EN "Dec" |
|||
|
|||
#define TITLE_READYPRINT_EN "ReadyPrint" |
|||
#define TITLE_PREHEAT_EN "Preheat" |
|||
#define TITLE_MOVE_EN "Move" |
|||
#define TITLE_HOME_EN "Home" |
|||
#define TITLE_EXTRUDE_EN "Extrusion" |
|||
#define TITLE_LEVELING_EN "Leveling" |
|||
#define TITLE_SET_EN "Settings" |
|||
#define TITLE_MORE_EN "More" |
|||
#define TITLE_CHOOSEFILE_EN "ChooseFile" |
|||
#define TITLE_PRINTING_EN "Printing" |
|||
#define TITLE_OPERATION_EN "Operation" |
|||
#define TITLE_ADJUST_EN "Adjust" |
|||
#define TITLE_WIRELESS_EN "Wireless" |
|||
#define TITLE_FILAMENT_EN "Filament" |
|||
#define TITLE_ABOUT_EN "About" |
|||
#define TITLE_FAN_EN "Fan" |
|||
#define TITLE_LANGUAGE_EN "Language" |
|||
#define TITLE_PAUSE_EN "Pause" |
|||
#define TITLE_CHANGESPEED_EN "Speed" |
|||
#define TITLE_CLOUD_TEXT_EN "Cloud" |
|||
#define TITLE_DIALOG_CONFIRM_EN "Confirm" |
|||
#define TITLE_FILESYS_EN "FileSys" |
|||
#define TITLE_ZOFFSET_EN "Z Offset" |
|||
|
|||
#define AUTO_SHUTDOWN_EN "Auto" |
|||
#define MANUAL_SHUTDOWN_EN "Manual" |
|||
|
|||
#define DIALOG_CONFIRM_EN "Confirm" |
|||
#define DIALOG_CANCLE_EN "Cancel" |
|||
#define DIALOG_OK_EN "OK" |
|||
#define DIALOG_RESET_EN "Reset" |
|||
#define DIALOG_RETRY_EN "Retry" |
|||
#define DIALOG_DISABLE_EN "Disable" |
|||
#define DIALOG_PRINT_MODEL_EN "Print this model?" |
|||
#define DIALOG_CANCEL_PRINT_EN "Stop print?" |
|||
#define DIALOG_RETRY_EN "Retry" |
|||
#define DIALOG_STOP_EN "Stop" |
|||
#define DIALOG_REPRINT_FROM_BREAKPOINT_EN "Reprint from breakpoint?" |
|||
//#define DIALOG_UNBIND_PRINTER_EN "Unbind the printer?"
|
|||
#define DIALOG_ERROR_TIPS1_EN "Error:no file,please check it again." |
|||
#define DIALOG_ERROR_TIPS2_EN "Error:transaction failed.please check display baudrate \nwhether as the same as mainboard!" |
|||
#define DIALOG_ERROR_TIPS3_EN "Error:file name or path is too long!" |
|||
#define DIALOG_CLOSE_MACHINE_EN "Closing machine......" |
|||
#define DIALOG_UNBIND_PRINTER_EN "Unbind the printer?" |
|||
#define DIALOG_FILAMENT_NO_PRESS_EN "Filament detection switch is not pressed" |
|||
#define DIALOG_PRINT_FINISH_EN "Done print!" |
|||
#define DIALOG_PRINT_TIME_EN "Print time: " |
|||
#define DIALOG_REPRINT_EN "Print again" |
|||
#define DIALOG_WIFI_ENABLE_TIPS_EN "The wifi module is being configured\nplease wait a moment....." |
|||
|
|||
#define HOTBED_ENABLE_EN "Enable heatbed" |
|||
#define MOTOR_EN_HIGH_LEVEL_EN "High" |
|||
#define MOTOR_EN_LOW_LEVEL_EN "Low" |
|||
|
|||
#define TEXT_WIFI_MENU_TITLE_EN "WI-FI" |
|||
#define TEXT_WIFI_SAPCE_EN "space" |
|||
#define TEXT_WIFI_LETTER_EN "abc" |
|||
#define TEXT_WIFI_DIGITAL_EN "123" |
|||
#define TEXT_WIFI_SYMBOL_EN "#+=" |
|||
#define TEXT_WIFI_PASSWORD_EN "Password" |
|||
|
|||
#define TEXT_WIFI_POINT_BOLD_EN "`" |
|||
|
|||
#define TEXT_WIFI_JOINING_EN "Joining\nNetwork..." |
|||
#define TEXT_WIFI_FAILED_JOIN_EN "Failed to\nJoin Wi-Fi" |
|||
#define TEXT_WIFI_WIFI_CONECTED_EN "Wi-Fi\nConnected" |
|||
|
|||
#define TEXT_BUTTON_DISCONECTED_EN "Disconnect" |
|||
#define TEXT_WIFI_FORGET_EN "Forget Network" |
|||
#define TEXT_DISCONECTED_EN "Wi-Fi Connected" |
|||
|
|||
//wifi-list
|
|||
#define MAIN_BUILT_EN "Build" |
|||
#define MAIN_FILAMENT_EN "Filament" |
|||
#define MAIN_SETUP_EN "Setup" |
|||
#define MAIN_ABOUT_EN "About" |
|||
#define MAIN_MENU_EN "Menu" |
|||
#define FILE_MENU_BUILD_EN "Build" |
|||
#define FILE_MENU_MENU_EN " < Menu" |
|||
|
|||
//about
|
|||
#define ABOUT_TITLE_EN "About" |
|||
#define ABOUT_BUILT_MACHINES_EN "Built Machines" |
|||
#define ABOUT_SPARK_EN "Spark" |
|||
#define ABOUT_VERSION_EN "Version 1.1.0" |
|||
#define ABOUT_SERIAL_NUMBER_EN "Serial Number:" |
|||
#define ABOUT_S_NUMBER_EN "DCPLX02KFC6P" |
|||
|
|||
//set
|
|||
#define SETUP_TITLE_EN "Setup" |
|||
#define SETUP_WIFI_EN "Wi-Fi" |
|||
#define SETUP_MANUAL_IP_EN "Manual IP" |
|||
#define SETUP_WIFI_NOT_CONNECTED_EN "Not Connected" |
|||
#define SETUP_WIFI_NETWORK_EN "WiFi_Network" |
|||
|
|||
//build
|
|||
#define BUILD_TITLE_EN "Build" |
|||
#define BUILD_SD_CARD_EN "SD Card" |
|||
#define BUILD_USB_DRIVE_EN "USB Drive" |
|||
|
|||
//SD card
|
|||
#define SD_CARD_TITLE_EN "SD Card" |
|||
#define SD_CARD_BACK_EN "< Back" |
|||
//USB Drive
|
|||
#define USB_DRIVE_TITLE_EN "USB Drive" |
|||
#define USB_DRIVE_BACK_EN "< Back" |
|||
#define FILE_PAGES_EN "%d/%d" |
|||
#define FILE_NEXT_PAGE_EN "Next Page" |
|||
|
|||
//BUILD PLATE
|
|||
#define PLATE_TITLE_EN "Build Plate" |
|||
#define PLATE_BACK_EN "< Back" |
|||
#define PLATE_CONFIRM_EN "Confirm >" |
|||
#define PLATE_TIPS_EN "Confirm that there is a Clear\nBuild Plate installed in the\nmachine." |
|||
|
|||
//build model
|
|||
#define MODEL_TITLE_EN "Build Model" |
|||
#define MODEL_START_BUILD_EN "Start Build" |
|||
#define MODEL_BACK_EN "< Back" |
|||
|
|||
//building
|
|||
#define BUILDING_TITLE_EN "Building" |
|||
#define BUILDING_MENU_EN "Build Menu" |
|||
#define BUILDING_COMPLETED "Build\nComplete" |
|||
|
|||
//building menu
|
|||
#define BUILDING_MENU_TITLE_EN "Build Menu" |
|||
#define BUILDING_MENU_SETTINGS_EN "Build Settings" |
|||
#define BUILDING_MENU_PAUSE_EN "Pause Build" |
|||
#define BUILDING_MENU_CANCEL_EN "Cancel Build" |
|||
#define BUILDING_MENU_BACK_EN "< Back" |
|||
|
|||
//build settings
|
|||
#define SETTINGS_TITLE_EN "Build Settings" |
|||
#define SETTINGS_NOZZLE_TEMPER_EN "Nozzle Temp:" |
|||
#define SETTINGS_NOZZLE_VALUE_EN "%d" |
|||
#define SETTINGS_BED_TEMPER_EN "Bed Temp:" |
|||
#define SETTINGS_BED_VALUE_EN "%d" |
|||
#define SETTINGS_BUILD_SPEED_EN "Build Speed:" |
|||
#define SETTINGS_SPEED_VALUE_EN "Standard" |
|||
#define SETTINGS_BACK_EN "< Back" |
|||
|
|||
//build paused
|
|||
#define PAUSED_TITLE_EN "Build Paused" |
|||
#define PAUSED_RESUME_EN "Resume Build" |
|||
#define PAUSED_CANCEL_EN "Cancel Build" |
|||
#define PAUSED_BACK_EN "< Back" |
|||
|
|||
//build cancel
|
|||
#define CANCEL_TITLE_EN "Cancel Build" |
|||
#define CANCEL_BUILD_EN "Cancel Build" |
|||
#define CANCEL_TIPS_EN "Are you sure you want to\ncancel this build? The model\nwill be deleted from this\nmachine. It will need to be\nresent from your computer\nbefore it can be built in the\nfuture." |
|||
#define CANCEL_BACK_EN "< Back" |
|||
#define CANCEL_BUILD_DISPLAY_EN "Build\nCanceled" |
|||
#define CANCEL_OVER_PLATE_TIPS_EN "Confirm that the Build Plate\nhas been removed from the\nmachine." |
|||
|
|||
//filament model enter
|
|||
#define FILAMENT_MODEL_ENTER_TITLE_EN "Model-PLA" |
|||
#define FILAMENT_MODEL_ENTER_BACK_EN "< Back" |
|||
#define FILAMENT_MODEL_ENTER_BEGIN_EN "Begin >" |
|||
#define FILAMENT_MODEL_ENTER_TIPS_EN "The Model Filament spool\ncompartment is located on\nthe right side of the machine." |
|||
|
|||
//filament model PLA
|
|||
#define FILAMENT_MODEL_PLA_TITLE_EN "Model-PLA" |
|||
#define FILAMENT_PLA_LOAD_TITLE_EN "Load Filament" |
|||
#define FILAMENT_PLA_UNLOAD_TITLE_EN "Unload Filament" |
|||
#define FILAMENT_MODEL_PLA_LOAD_EN "Load Filament" |
|||
#define FILAMENT_MODEL_PLA_UNLOAD_EN "Unload Filament" |
|||
//filament support enter
|
|||
#define FILAMENT_SUPPORT_ENTER_TITLE_EN "Support-PVA" |
|||
#define FILAMENT_SUPPORT_ENTER_BACK_EN "< Back" |
|||
#define FILAMENT_SUPPORT_ENTER_BEGIN_EN "Begin >" |
|||
#define FILAMENT_SUPPORT_ENTER_TIPS_EN "The Support Filament spool\ncompartment is located on\nthe left side of the machine." |
|||
//filament heating
|
|||
#define FILAMENT_HEATING_LOAD_TITLE_EN "Load Filament" |
|||
#define FILAMENT_HEATING_UNLOAD_TITLE_EN "Unload Filament" |
|||
#define FILAMENT_HEATING_CANCEL_EN "< Cancel" |
|||
#define FILAMENT_HEATING_MATERIAL_EN "Material:" |
|||
#define FILAMENT_HEATING_PLA_EN "Model-PLA" |
|||
#define FILAMENT_HEATING_TIPS_EN "Print head is heating..." |
|||
//rotate left
|
|||
#define ROTATE_LEFT_LOAD_TITLE_EN "Load Filament" |
|||
#define ROTATE_LEFT_UNLOAD_TITLE_EN "Unload Filament" |
|||
#define ROTATE_LEFT_CANCEL_EN "< Cancel" |
|||
#define ROTATE_LEFT_MATERIAL_EN "Material:" |
|||
#define ROTATE_LEFT_PLA_EN "Model-PLA" |
|||
#define ROTATE_LEFT_NEXT_EN "Next >" |
|||
#define ROTATE_LEFT_TIPS_EN "Rotate extruder selection\ndial to the left." |
|||
|
|||
//hang spool
|
|||
#define HANG_SPOOL_TITLE_EN "Load Filament" |
|||
#define HANG_SPOOL_PREVIOUS_EN "< Previous" |
|||
#define HANG_SPOOL_MATERIAL_EN "Material:" |
|||
#define HANG_SPOOL_PLA_EN "Model-PLA" |
|||
#define HANG_SPOOL_NEXT_EN "Next >" |
|||
#define HANG_SPOOL_TIPS_EN "Hang the spool in the spool\ncompartment as shown." |
|||
|
|||
//feed filament
|
|||
#define FEED_FILAMENT_TITLE_EN "Load Filament" |
|||
#define FEED_FILAMENT_PREVIOUS_EN "< Previous" |
|||
#define FEED_FILAMENT_MATERIAL_EN "Material:" |
|||
#define FEED_FILAMENT_PLA_EN "Model-PLA" |
|||
#define FEED_FILAMENT_NEXT_EN "Next >" |
|||
#define FEED_FILAMENT_TIPS_EN "Feed filament into extruder\nup beyond the gears." |
|||
|
|||
//feed filament
|
|||
#define ROTATE_UP_TITLE_EN "Load Filament" |
|||
#define ROTATE_UP_PREVIOUS_EN "< Previous" |
|||
#define ROTATE_UP_MATERIAL_EN "Material:" |
|||
#define ROTATE_UP_PLA_EN "Model-PLA" |
|||
#define ROTATE_UP_NEXT_EN "Next >" |
|||
#define ROTATE_UP_TIPS_EN "Rotate extruder selection\ndial up." |
|||
|
|||
//filament begin
|
|||
#define FEED_BEGIN_TITLE_EN "Load Filament" |
|||
#define FEED_BEGIN_MATERIAL_EN "Material:" |
|||
#define FEED_BEGIN_PLA_EN "Model-PLA" |
|||
#define FEED_BEGIN_NEXT_EN "Next >" |
|||
#define FEED_BEGIN_TIPS_EN "Press Next when filament\nbegins to extrude." |
|||
|
|||
//filament finish
|
|||
#define FEED_FINISH_TITLE_EN "Load Filament" |
|||
#define FEED_FINISH_MATERIAL_EN "Material:" |
|||
#define FEED_FINISH_PLA_EN "Model-PLA" |
|||
#define FEED_FINISH_NEXT_EN "Finish >" |
|||
#define FEED_FINISH_TIPS_EN "Remove filament from the\nnozzle and discard." |
|||
//fiament remove
|
|||
#define REMOVE_SPOOL_TITLE_EN "Unload Filament" |
|||
#define REMOVE_SPOOL_PREVIOUS_EN "< Previous" |
|||
#define REMOVE_SPOOL_FINISH_EN "Finish >" |
|||
#define REMOVE_SPOOL_MATERIAL_EN "Material:" |
|||
#define REMOVE_SPOOL_PLA_EN "Model-PLA" |
|||
#define REMOVE_SPOOL_TIPS_EN "Remove the spool and pull\nfilament out of the machine." |
|||
|
|||
#define FILAMENT_SUPPORT_PVA_EN "Support-PVA" |
|||
#define LOAD_FINISH_EN "Load\nFilament\nComplete" |
|||
#define UNLOAD_FINISH_EN "Unload\nFilament\nComplete" |
|||
|
|||
//manual ip
|
|||
#define MANUAL_IP_TITLE_EN "Manual IP" |
|||
#define MANUAL_IP_CANCEL_EN "< Cancel" |
|||
#define MANUAL_IP_APPLY_EN "Join >" |
|||
#define MANUAL_IP_ADDRESS_EN "IP Address" |
|||
#define MANUAL_IP_MASK_EN "Subnet Mask" |
|||
#define MANUAL_IP_GATEWAY_EN "Default Gateway" |
|||
#define MANUAL_IP_SERVER_EN "Name Server" |
|||
#define MANUAL_IP_INIT_DATA_EN "0.0.0.0" |
|||
#define MANUAL_TEXT_POINT_EN "." |
|||
#define MANUAL_TEXT_ENTER_EN "enter" |
|||
|
|||
//Wifi name
|
|||
//#define TEXT_WIFI_MENU_TITLE_EN "WI-FI"
|
|||
//#define TEXT_WIFI_SAPCE_EN "space"
|
|||
//#define TEXT_WIFI_LETTER_EN "abc"
|
|||
//#define TEXT_WIFI_DIGITAL_EN "123"
|
|||
//#define TEXT_WIFI_SYMBOL_EN "#+="
|
|||
//#define TEXT_WIFI_PASSWORD_EN "Password"
|
|||
|
|||
//#define TEXT_WIFI_POINT_BOLD_EN "`"
|
|||
|
|||
//#define TEXT_WIFI_JOINING_EN "Joining\nNetwork..."
|
|||
//#define TEXT_WIFI_FAILED_JOIN_EN "Failed to\nJoin Wi-Fi"
|
|||
//#define TEXT_WIFI_WIFI_CONECTED_EN "Wi-Fi\nConnected"
|
|||
|
|||
//#define TEXT_BUTTON_DISCONECTED_EN "Disconnect"
|
|||
//#define TEXT_WIFI_FORGET_EN "Forget Network"
|
|||
//#define TEXT_DISCONECTED_EN "Wi-Fi Connected"
|
|||
|
|||
#define TEXT_FORGET_TIPS_TITLE_EN "Forget Network" |
|||
#define TEXT_FORGET_NETWORK_TIPS1_EN "Are you sure you want to\nforget this network?" |
|||
#define TEXT_FORGET_NETWORK_TIPS2_EN "This machine will no longer\njoin this Wi-Fi Network." |
|||
|
|||
#define TEXT_IPADDRESS_EN "IP Address: " |
|||
|
|||
#define TEXT_BUILD_FROM_CURA_CANCEL_TIPS1_EN "Are you sure you want to\ncancel this build?" |
|||
#define TEXT_BUILD_FROM_CURA_CANCEL_TIPS2_EN "The model will be deleted\nfrom this machine.It will\nneed to be resent from your\ncomputer before it can be\nbuilt in the future." |
|||
|
|||
#define DIALOG_CONFIRM_EN2 "Confirm" |
|||
|
|||
#define HEATING_TITLE_EN "Heating" |
|||
#define LEVELING_TITLE_EN "Leveling" |
|||
|
|||
#define ABOUT_SPARK_ADD_EN "Spark+" |
|||
|
|||
#define TEXT_RECEIVING_DATA_EN "Receiving Data" |
|||
|
|||
#define TEXT_BABY_STEP_EN "Babystep" |
|||
|
|||
#define PRINTING_OTHER_LANGUGE "Printing" |
|||
#define PRINTING_OPERATION_OTHER_LANGUGE "Operation" |
|||
#define PRINTING_PAUSE_OTHER_LANGUGE "Pause" |
|||
|
|||
#define MESSEGE_PAUSING_EN "Parking..." |
|||
#define MESSEGE_CHANGING_EN "Wait for filament change to start" |
|||
#define MESSEGE_UNLOAD_EN "Wait for filament unload" |
|||
#define MESSEGE_WAITING_EN "Press Button to resume print" |
|||
#define MESSEGE_INSERT_EN "Insert filament and press button to continue" |
|||
#define MESSEGE_LOAD_EN "Wait for filament load" |
|||
#define MESSEGE_PURGE_EN "Wait for filament purge" |
|||
#define MESSEGE_RESUME_EN "Wait for print to resume..." |
|||
#define MESSEGE_HEAT_EN "Press button to heat nozzle" |
|||
#define MESSEGE_HEATING_EN "Nozzle heating Please wait..." |
|||
#define MESSEGE_OPTION_EN "Purge more or continue print?" |
|||
#define MESSEGE_PURGE_MORE_EN "Purge" |
|||
#define MESSEGE_CONTINUE_PRINT_EN "Print" |
@ -0,0 +1,276 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
//*************法文****************************//
|
|||
#define TOOL_TEXT_FR "prêt" |
|||
#define PREHEAT_TEXT_FR "Préchauffe" |
|||
#define MOVE_TEXT_FR "Déplace" |
|||
#define HOME_TEXT_FR "Acceuil" |
|||
#define PRINT_TEXT_FR "Impression" |
|||
#define EXTRUDE_TEXT_FR "Extruder" |
|||
#define LEVELING_TEXT_FR "Leveling" |
|||
#define AUTO_LEVELING_TEXT_FR "AutoLevel" |
|||
#define SET_TEXT_FR "Config" |
|||
#define MORE_TEXT_FR "Plus" |
|||
|
|||
#define ADD_TEXT_FR "Ajouter" |
|||
#define DEC_TEXT_FR "Réduire" |
|||
#define EXTRUDER_1_TEXT_FR "Extr1" |
|||
#define EXTRUDER_2_TEXT_FR "Extr2" |
|||
#define HEATBED_TEXT_FR "Hotlit" |
|||
#define TEXT_1C_FR "1℃" |
|||
#define TEXT_5C_FR "5℃" |
|||
#define TEXT_10C_FR "10℃" |
|||
#define CLOSE_TEXT_FR "Off" |
|||
|
|||
#define BACK_TEXT_FR "Arrière" |
|||
|
|||
#define TOOL_PREHEAT_FR "Préchauffe" |
|||
#define TOOL_EXTRUDE_FR "Extruder" |
|||
#define TOOL_MOVE_FR "Déplace" |
|||
#define TOOL_HOME_FR "Acceuil" |
|||
#define TOOL_LEVELING_FR "Leveling" |
|||
#define TOOL_AUTO_LEVELING_FR "AutoLevel" |
|||
#define TOOL_FILAMENT_FR "Filament" |
|||
#define TOOL_MORE_FR "Plus" |
|||
|
|||
#define AXIS_X_ADD_TEXT_FR "X+" |
|||
#define AXIS_X_DEC_TEXT_FR "X-" |
|||
#define AXIS_Y_ADD_TEXT_FR "Y+" |
|||
#define AXIS_Y_DEC_TEXT_FR "Y-" |
|||
#define AXIS_Z_ADD_TEXT_FR "Z+" |
|||
#define AXIS_Z_DEC_TEXT_FR "Z-" |
|||
#define TEXT_01MM_FR "0.1mm" |
|||
#define TEXT_1MM_FR "1mm" |
|||
#define TEXT_10MM_FR "10mm" |
|||
|
|||
#define HOME_X_TEXT_FR "X" |
|||
#define HOME_Y_TEXT_FR "Y" |
|||
#define HOME_Z_TEXT_FR "Z" |
|||
#define HOME_ALL_TEXT_FR "ALL" |
|||
#define HOME_STOPMOVE_FR "Quickstop" |
|||
|
|||
#define PAGE_UP_TEXT_FR "En haut" |
|||
#define PAGE_DOWN_TEXT_FR "En bas" |
|||
|
|||
#define EXTRUDER_IN_TEXT_FR "Insérer" |
|||
#define EXTRUDER_OUT_TEXT_FR "éjecter" |
|||
#define EXTRUDE_1MM_TEXT_FR "1mm" |
|||
#define EXTRUDE_5MM_TEXT_FR "5mm" |
|||
#define EXTRUDE_10MM_TEXT_FR "10mm" |
|||
#define EXTRUDE_LOW_SPEED_TEXT_FR "Lente" |
|||
#define EXTRUDE_MEDIUM_SPEED_TEXT_FR "Moyen" |
|||
#define EXTRUDE_HIGH_SPEED_TEXT_FR "Rapide" |
|||
|
|||
#define LEVELING_POINT1_TEXT_FR "Premier" |
|||
#define LEVELING_POINT2_TEXT_FR "Seconde" |
|||
#define LEVELING_POINT3_TEXT_FR "Troisième" |
|||
#define LEVELING_POINT4_TEXT_FR "Quatrième" |
|||
#define LEVELING_POINT5_TEXT_FR "Cinquième" |
|||
|
|||
#define FILESYS_TEXT_FR "Fichier" |
|||
#define WIFI_TEXT_FR "WiFi" |
|||
#define FAN_TEXT_FR "Fan" |
|||
#define ABOUT_TEXT_FR "A propos" |
|||
#define BREAK_POINT_TEXT_FR "Continuer" |
|||
#define FILAMENT_TEXT_FR "Remplacer" |
|||
#define LANGUAGE_TEXT_FR "Langue" |
|||
#define MOTOR_OFF_TEXT_FR "M-hors" |
|||
#define MOTOR_OFF_XY_TEXT_FR "M-hors-XY" |
|||
#define SHUTDOWN_TEXT_FR "Eteindre" |
|||
|
|||
#define U_DISK_TEXT_FR "Clé usb" |
|||
#define SD_CARD_TEXT_FR "Carte SD" |
|||
#define WIFI_NAME_TEXT_FR "WiFi: " |
|||
#define WIFI_KEY_TEXT_FR "Key: " |
|||
#define WIFI_IP_TEXT_FR "IP: " |
|||
#define WIFI_AP_TEXT_FR "Etat: AP" |
|||
#define WIFI_STA_TEXT_FR "Etat: STA" |
|||
#define WIFI_CONNECTED_TEXT_FR "Connecté" |
|||
#define WIFI_DISCONNECTED_TEXT_FR "Déconnecté" |
|||
#define WIFI_EXCEPTION_TEXT_FR "Exception" |
|||
#define WIFI_RECONNECT_TEXT_FR "Reconnect" |
|||
#define CLOUD_TEXT_FR "Cloud" |
|||
#define CLOUD_BIND_FR "Lié" |
|||
#define CLOUD_UNBIND_FR "Délier" |
|||
#define CLOUD_UNBINDING_FR "Délier" |
|||
#define CLOUD_DISCONNECTED_FR "Déconnecté" |
|||
#define CLOUD_UNBINDED_FR "Délier" |
|||
#define CLOUD_BINDED_FR "Lié" |
|||
#define CLOUD_DISABLE_FR "Désactiver" |
|||
|
|||
#define FAN_ADD_TEXT_FR "Ajouter" |
|||
#define FAN_DEC_TEXT_FR "Réduire" |
|||
#define FAN_OPEN_TEXT_FR "100%" |
|||
#define FAN_HALF_TEXT_FR "50%" |
|||
#define FAN_CLOSE_TEXT_FR "0%" |
|||
#define FAN_TIPS1_TEXT_FR "ventilateur" |
|||
#define FAN_TIPS2_TEXT_FR "ventilateur\n0" |
|||
|
|||
#define FILAMENT_IN_TEXT_FR "Insérer" |
|||
#define FILAMENT_OUT_TEXT_FR "éjecter" |
|||
#define FILAMENT_EXT0_TEXT_FR "Extr1" |
|||
#define FILAMENT_EXT1_TEXT_FR "Extr2" |
|||
#define FILAMENT_HEAT_TEXT_FR "Preheat" |
|||
#define FILAMENT_STOP_TEXT_FR "Arrêter" |
|||
//#define FILAMENT_CHANGE_TEXT_FR "Filament remplacer"
|
|||
#define FILAMENT_TIPS2_TEXT_FR "T:" |
|||
#define FILAMENT_TIPS3_TEXT_FR "Insérer le filament..." |
|||
#define FILAMENT_TIPS4_TEXT_FR "éjecter le filament..." |
|||
#define FILAMENT_TIPS5_TEXT_FR "Température trop basse pour démarrer, chauffez svp" |
|||
#define FILAMENT_TIPS6_TEXT_FR "Terminé" |
|||
|
|||
#if 0 |
|||
#define FILAMENT_REPLAYS_IDLE_TEXT_FR "Please click <Insérer> or <éjecter> \nto replace filament!" |
|||
#define FILAMENT_CHANGE_TEXT_FR "Please click <Insérer> or <éjecter>,\nAfter pinter pause." |
|||
#define FILAMENT_DIALOG_LOAD_HEAT_TIPS_FR "Heating up the nozzle,please wait..." |
|||
#define FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_FR "Heating up the nozzle,please wait..." |
|||
#define FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_FR "Heat completed,please load filament to extruder,and click <Confirmer> for start loading." |
|||
#define FILAMENT_DIALOG_LOAD_CONFIRM2_TIPS_FR "Please load filament to extruder,and click <Confirmer> for start loading." |
|||
#define FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_FR "Heat completed,please click <Confirmer> for start unloading.!" |
|||
#define FILAMENT_DIALOG_LOADING_TIPS_FR "Is loading ,please wait!" |
|||
#define FILAMENT_DIALOG_UNLOADING_TIPS_FR "Is unloading,please wait!" |
|||
#define FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_FR "Load filament completed,click <Confirmer> for return!" |
|||
#define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_FR "Unload filament completed,click <Confirmer> for return!" |
|||
#endif |
|||
#define FILAMENT_CHANGE_TEXT_FR "Please click <Load> \nor <unload>,After \npinter pause." |
|||
#define FILAMENT_DIALOG_LOAD_HEAT_TIPS_FR "Heating up the nozzle,\nplease wait..." |
|||
#define FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_FR "Heating up the nozzle,\nplease wait..." |
|||
#define FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_FR "Heat completed,please load filament \nto extruder,and click <confirm> \nfor start loading." |
|||
#define FILAMENT_DIALOG_LOAD_CONFIRM2_TIPS_FR "Please load filament to extruder,\nand click <confirm> for start loading." |
|||
#define FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_FR "Heat completed,please \nclick <confirm> for start unloading.!" |
|||
#define FILAMENT_DIALOG_LOADING_TIPS_FR "Is loading ,please wait!" |
|||
#define FILAMENT_DIALOG_UNLOADING_TIPS_FR "Is unloading,please wait!" |
|||
#define FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_FR "Load filament completed,\nclick <confirm> for return!" |
|||
#define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_FR "Unload filament completed,\nclick <confirm> for return!" |
|||
|
|||
|
|||
#define PRE_HEAT_EXT_TEXT_FR "E" |
|||
#define PRE_HEAT_BED_TEXT_FR "Bed" |
|||
|
|||
#define FILE_LOADING_FR "Chargement......" |
|||
#if 0 |
|||
#define NO_FILE_AND_CHECK_FR "Aucun fichier trouvé! Insérez une carte SD ou un disque U!" |
|||
#else |
|||
#define NO_FILE_AND_CHECK_FR "Aucun fichier,vérifiez à nouveau!" |
|||
#endif |
|||
|
|||
#define NO_FILE_FR "Pas de fichier!" |
|||
|
|||
|
|||
|
|||
#define EXTRUDER_TEMP_TEXT_FR "Temper" |
|||
#define EXTRUDER_E_LENGTH1_TEXT_FR "Extruder1" |
|||
#define EXTRUDER_E_LENGTH2_TEXT_FR "Extruder2" |
|||
#define EXTRUDER_E_LENGTH3_TEXT_FR "Extruder3" |
|||
|
|||
#define ABOUT_TYPE_TEXT_FR "Type: " |
|||
#define ABOUT_VERSION_TEXT_FR "Firmware: " |
|||
#define ABOUT_WIFI_TEXT_FR "Wifi: " |
|||
|
|||
#define PRINTING_OPERATION_FR "Option" |
|||
#define PRINTING_PAUSE_FR "Pause" |
|||
#define PRINTING_TEMP_FR "Temp." |
|||
#define PRINTING_CHANGESPEED_FR "Speed" |
|||
#define PRINTING_RESUME_FR "Reprendre" |
|||
#define PRINTING_STOP_FR "Stop" |
|||
#define PRINTING_MORE_FR "Plus" |
|||
#define PRINTING_EXTRUDER_FR "Extruder" |
|||
#define PRINTING_MOVE_FR "Déplace" |
|||
|
|||
#define EXTRUDER_SPEED_FR "Extruder" |
|||
#define MOVE_SPEED_FR "Déplace" |
|||
#define EXTRUDER_SPEED_STATE_FR "Vitesse d'extrusion" |
|||
#define MOVE_SPEED_STATE_FR "vitesse de déplacement" |
|||
#define STEP_1PERCENT_FR "1%" |
|||
#define STEP_5PERCENT_FR "5%" |
|||
#define STEP_10PERCENT_FR "10%" |
|||
|
|||
#define ZOFFSET_FR "Z Offset" |
|||
#define ZOFFSET_INC_FR "Ajouter" |
|||
#define ZOFFSET_DEC_FR "Réduire" |
|||
|
|||
#define TITLE_READYPRINT_FR "Prête" |
|||
#define TITLE_PREHEAT_FR "Préchauffe" |
|||
#define TITLE_MOVE_FR "Déplace" |
|||
#define TITLE_HOME_FR "Acceuil" |
|||
#define TITLE_EXTRUDE_FR "Extruder" |
|||
#define TITLE_LEVELING_FR "Leveling" |
|||
#define TITLE_SET_FR "Paramètres" |
|||
#define TITLE_MORE_FR "Plus" |
|||
#define TITLE_CHOOSEFILE_FR "Fichier" |
|||
#define TITLE_PRINTING_FR "Pimpression" |
|||
#define TITLE_OPERATION_FR "Option" |
|||
#define TITLE_ADJUST_FR "Réglage" |
|||
#define TITLE_WIRELESS_FR "Sans fil" |
|||
#define TITLE_FILAMENT_FR "Remplacer" |
|||
#define TITLE_ABOUT_FR "A propos" |
|||
#define TITLE_FAN_FR "Ventilateur" |
|||
#define TITLE_LANGUAGE_FR "Langue" |
|||
#define TITLE_PAUSE_FR "Pause" |
|||
#define TITLE_CHANGESPEED_FR "Speed" |
|||
#define TITLE_CLOUD_TEXT_FR "Cloud" |
|||
#define TITLE_DIALOG_CONFIRM_FR "Confirm" |
|||
#define TITLE_FILESYS_FR "FileSys" |
|||
#define TITLE_ZOFFSET_FR "Z Offset" |
|||
|
|||
#define DIALOG_CLOSE_MACHINE_FR "Closing machine......" |
|||
|
|||
#define AUTO_SHUTDOWN_FR "Auto" |
|||
#define MANUAL_SHUTDOWN_FR "Manuel" |
|||
|
|||
#define DIALOG_CONFIRM_FR "Confirmer" |
|||
#define DIALOG_CANCLE_FR "Annuler" |
|||
#define DIALOG_OK_FR "OK" |
|||
#define DIALOG_RESET_FR "Réinitialiser" |
|||
#define DIALOG_RETRY_FR "Recommencez" |
|||
#define DIALOG_DISABLE_FR "Disable" |
|||
#define DIALOG_PRINT_MODEL_FR "Imprimer le fichier?" |
|||
#define DIALOG_CANCEL_PRINT_FR "Arrêter?" |
|||
|
|||
#define DIALOG_STOP_FR "Arrêter" |
|||
#define DIALOG_REPRINT_FROM_BREAKPOINT_FR "Continuer?" |
|||
//#define DIALOG_UNBIND_PRINTER_FR "Non lié?"
|
|||
#define DIALOG_ERROR_TIPS1_FR "Erreur:error:Aucun fichier, \nvérifiez à nouveau." |
|||
#define DIALOG_ERROR_TIPS2_FR "Erreur:La opération a échoué. \nVerifiez que le baudrate de l'écran et de \nla carte mère soient identique!" |
|||
#define DIALOG_ERROR_TIPS3_FR "Erreur: le nom du fichier ou le \nchemin d'accès est trop long." |
|||
#define DIALOG_UNBIND_PRINTER_FR "Unbind the printer?" |
|||
#define DIALOG_FILAMENT_NO_PRESS_FR "Filament detection switch is not pressed" |
|||
#define DIALOG_PRINT_FINISH_FR "L'impression est terminée!" |
|||
#define DIALOG_PRINT_TIME_FR "Temps d'impression: " |
|||
#define DIALOG_REPRINT_FR "Print again" |
|||
#define DIALOG_WIFI_ENABLE_TIPS_FR "The wifi module is being configured,\nplease wait a moment....." |
|||
|
|||
#define MESSEGE_PAUSING_FR "Parking..." |
|||
#define MESSEGE_CHANGING_FR "Attente filament pour démarrer" |
|||
#define MESSEGE_UNLOAD_FR "Attente retrait du filament" |
|||
#define MESSEGE_WAITING_FR "Presser bouton,pour reprendre" |
|||
#define MESSEGE_INSERT_FR "Insérer filament et app. bouton pour continuer..." |
|||
#define MESSEGE_LOAD_FR "Attente chargement filament" |
|||
#define MESSEGE_PURGE_FR "Attente Purge filament" |
|||
#define MESSEGE_RESUME_FR "Attente reprise impression" |
|||
#define MESSEGE_HEAT_FR "Presser le bouton pour chauffer..." |
|||
#define MESSEGE_HEATING_FR "Buse en chauffe Patienter SVP..." |
|||
#define MESSEGE_OPTION_FR "Purger davantage ou continuer l'impression?" |
|||
#define MESSEGE_PURGE_MORE_FR "Purge" |
|||
#define MESSEGE_CONTINUE_PRINT_FR "Impression" |
@ -0,0 +1,271 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
//****************意大利语***************************//
|
|||
#define TOOL_TEXT_IT "Strumento" |
|||
#define PREHEAT_TEXT_IT "Prerisc" |
|||
#define MOVE_TEXT_IT "Muovi" |
|||
#define HOME_TEXT_IT "Home" |
|||
#define PRINT_TEXT_IT "Stampa" |
|||
#define EXTRUDE_TEXT_IT "Estrude" |
|||
#define LEVELING_TEXT_IT "Leveling" |
|||
#define AUTO_LEVELING_TEXT_IT "AutoLevel" |
|||
#define SET_TEXT_IT "Imposta" |
|||
#define MORE_TEXT_IT "Di più" |
|||
|
|||
#define ADD_TEXT_IT "Aumentare" |
|||
#define DEC_TEXT_IT "Ridurre" |
|||
#define EXTRUDER_1_TEXT_IT "Estrude1" |
|||
#define EXTRUDER_2_TEXT_IT "Estrude2" |
|||
#define HEATBED_TEXT_IT "Piano" |
|||
#define TEXT_1C_IT "1℃" |
|||
#define TEXT_5C_IT "5℃" |
|||
#define TEXT_10C_IT "10℃" |
|||
#define CLOSE_TEXT_IT "Spento" |
|||
|
|||
#define BACK_TEXT_IT "Indietro" |
|||
|
|||
#define TOOL_PREHEAT_IT "Prerisc" |
|||
#define TOOL_EXTRUDE_IT "Estrude" |
|||
#define TOOL_MOVE_IT "Muovi" |
|||
#define TOOL_HOME_IT "Home" |
|||
#define TOOL_LEVELING_IT "Leveling" |
|||
#define TOOL_AUTO_LEVELING_IT "Autolevel" |
|||
#define TOOL_FILAMENT_IT "Filamento" |
|||
#define TOOL_MORE_IT "Di più" |
|||
|
|||
#define AXIS_X_ADD_TEXT_IT "X+" |
|||
#define AXIS_X_DEC_TEXT_IT "X-" |
|||
#define AXIS_Y_ADD_TEXT_IT "Y+" |
|||
#define AXIS_Y_DEC_TEXT_IT "Y-" |
|||
#define AXIS_Z_ADD_TEXT_IT "Z+" |
|||
#define AXIS_Z_DEC_TEXT_IT "Z-" |
|||
#define TEXT_01MM_IT "0.1mm" |
|||
#define TEXT_1MM_IT "1mm" |
|||
#define TEXT_10MM_IT "10mm" |
|||
|
|||
#define HOME_X_TEXT_IT "X" |
|||
#define HOME_Y_TEXT_IT "Y" |
|||
#define HOME_Z_TEXT_IT "Z" |
|||
#define HOME_ALL_TEXT_IT "All" |
|||
#define HOME_STOPMOVE_IT "Quickstop" |
|||
|
|||
#define PAGE_UP_TEXT_IT "Pagina su" |
|||
#define PAGE_DOWN_TEXT_IT "Pagina giù" |
|||
|
|||
#define EXTRUDER_IN_TEXT_IT "Estru" |
|||
#define EXTRUDER_OUT_TEXT_IT "Ritra" |
|||
#define EXTRUDE_1MM_TEXT_IT "1mm" |
|||
#define EXTRUDE_5MM_TEXT_IT "5mm" |
|||
#define EXTRUDE_10MM_TEXT_IT "10mm" |
|||
#define EXTRUDE_LOW_SPEED_TEXT_IT "Bassa" |
|||
#define EXTRUDE_MEDIUM_SPEED_TEXT_IT "Media" |
|||
#define EXTRUDE_HIGH_SPEED_TEXT_IT "Alta" |
|||
|
|||
#define LEVELING_POINT1_TEXT_IT "Primo" |
|||
#define LEVELING_POINT2_TEXT_IT "Secondo" |
|||
#define LEVELING_POINT3_TEXT_IT "Terzo" |
|||
#define LEVELING_POINT4_TEXT_IT "Quarto" |
|||
#define LEVELING_POINT5_TEXT_IT "Quinto" |
|||
|
|||
#define FILESYS_TEXT_IT "FileSys" |
|||
#define WIFI_TEXT_IT "WIFI" |
|||
#define FAN_TEXT_IT "Ventola" |
|||
#define ABOUT_TEXT_IT "Circa" |
|||
#define BREAK_POINT_TEXT_IT "Continua" |
|||
#define FILAMENT_TEXT_IT "Filamento" |
|||
#define LANGUAGE_TEXT_IT "Lingua" |
|||
#define MOTOR_OFF_TEXT_IT "Motor off" |
|||
#define MOTOR_OFF_XY_TEXT_IT "Off-XY" |
|||
#define SHUTDOWN_TEXT_IT "Spento" |
|||
|
|||
#define U_DISK_TEXT_IT "USB" |
|||
#define SD_CARD_TEXT_IT "SD" |
|||
#define WIFI_NAME_TEXT_IT "WIFI: " |
|||
#define WIFI_KEY_TEXT_IT "KEY: " |
|||
#define WIFI_IP_TEXT_IT "IP: " |
|||
#define WIFI_AP_TEXT_IT "Stato: AP" |
|||
#define WIFI_STA_TEXT_IT "Stato: STA" |
|||
#define WIFI_CONNECTED_TEXT_IT "Connesso" |
|||
#define WIFI_DISCONNECTED_TEXT_IT "Disconnesso" |
|||
#define WIFI_EXCEPTION_TEXT_IT "Eccezione" |
|||
#define WIFI_RECONNECT_TEXT_IT "Reconnect" |
|||
#define CLOUD_TEXT_IT "Cloud" |
|||
#define CLOUD_BIND_IT "Legato" |
|||
#define CLOUD_UNBIND_IT "Libero" |
|||
#define CLOUD_DISCONNECTED_IT "Disconnesso" |
|||
#define CLOUD_UNBINDING_IT "Libero" |
|||
#define CLOUD_UNBINDED_IT "Sciolto" |
|||
#define CLOUD_BINDED_IT "Legato" |
|||
#define CLOUD_DISABLE_IT "Disable" |
|||
|
|||
#define FAN_ADD_TEXT_IT "Aumentare" |
|||
#define FAN_DEC_TEXT_IT "Ridurre" |
|||
#define FAN_OPEN_TEXT_IT "100%" |
|||
#define FAN_HALF_TEXT_IT "50%" |
|||
#define FAN_CLOSE_TEXT_IT "Spento" |
|||
#define FAN_TIPS1_TEXT_IT "Ventola" |
|||
#define FAN_TIPS2_TEXT_IT "Ventola\n0" |
|||
|
|||
#define FILAMENT_IN_TEXT_IT "Inser" |
|||
#define FILAMENT_OUT_TEXT_IT "Estra" |
|||
#define FILAMENT_EXT0_TEXT_IT "Estrude1" |
|||
#define FILAMENT_EXT1_TEXT_IT "Estrude2" |
|||
#define FILAMENT_HEAT_TEXT_IT "Preriscaldamento" |
|||
#define FILAMENT_STOP_TEXT_IT "Stop" |
|||
//#define FILAMENT_CHANGE_TEXT_IT "Filamento"
|
|||
#define FILAMENT_TIPS2_TEXT_IT "T:" |
|||
#define FILAMENT_TIPS3_TEXT_IT "Inserimento del filamento..." |
|||
#define FILAMENT_TIPS4_TEXT_IT "Estrazione del filamento..." |
|||
#define FILAMENT_TIPS5_TEXT_IT "Temp is too low to go,please heat" |
|||
#define FILAMENT_TIPS6_TEXT_IT "Completato" |
|||
|
|||
#if 0 |
|||
#define FILAMENT_REPLAYS_IDLE_TEXT_IT "Please click <Estru> or <Ritra> \nto replace filament!" |
|||
#define FILAMENT_CHANGE_TEXT_IT "Please click <Estru> or <Ritra>,\nAfter pinter pause." |
|||
#define FILAMENT_DIALOG_LOAD_HEAT_TIPS_IT "Heating up the nozzle,please wait..." |
|||
#define FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_IT "Heating up the nozzle,please wait..." |
|||
#define FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_IT "Heat completed,please load filament to extruder,and click <Conferma> for start loading." |
|||
#define FILAMENT_DIALOG_LOAD_CONFIRM2_TIPS_IT "Please load filament to extruder,and click <Conferma> for start loading." |
|||
#define FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_IT "Heat completed,please click <Conferma> for start unloading.!" |
|||
#define FILAMENT_DIALOG_LOADING_TIPS_IT "Is loading ,please wait!" |
|||
#define FILAMENT_DIALOG_UNLOADING_TIPS_IT "Is unloading,please wait!" |
|||
#define FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_IT "Load filament completed,click <Conferma> for return!" |
|||
#define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_IT "Unload filament completed,click <Conferma> for return!" |
|||
#endif |
|||
#define FILAMENT_CHANGE_TEXT_IT "Please click <Load> \nor <unload>,After \npinter pause." |
|||
#define FILAMENT_DIALOG_LOAD_HEAT_TIPS_IT "Heating up the nozzle,please wait..." |
|||
#define FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_IT "Heating up the nozzle,please wait..." |
|||
#define FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_IT "Heat completed,please load filament \nto extruder,and click <confirm> \nfor start loading." |
|||
#define FILAMENT_DIALOG_LOAD_CONFIRM2_TIPS_IT "Please load filament to extruder,\nand click <confirm> for start loading." |
|||
#define FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_IT "Heat completed,please \nclick <confirm> for start unloading.!" |
|||
#define FILAMENT_DIALOG_LOADING_TIPS_IT "Is loading ,please wait!" |
|||
#define FILAMENT_DIALOG_UNLOADING_TIPS_IT "Is unloading,please wait!" |
|||
#define FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_IT "Load filament completed,\nclick <confirm> for return!" |
|||
#define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_IT "Unload filament completed,\nclick <confirm> for return!" |
|||
|
|||
|
|||
#define PRE_HEAT_EXT_TEXT_IT "E" |
|||
#define PRE_HEAT_BED_TEXT_IT "Piano" |
|||
|
|||
#define FILE_LOADING_IT "Caricamento......" |
|||
#if 0 |
|||
#define NO_FILE_AND_CHECK_IT "Nessun file trovato! Inserisci la scheda SD o il disco U!" |
|||
#endif |
|||
#define NO_FILE_AND_CHECK_IT "Nessun file,\n per favore controllare di nuovo!" |
|||
|
|||
#define NO_FILE_IT "Nessun file!" |
|||
|
|||
#define EXTRUDER_TEMP_TEXT_IT "Temper" |
|||
#define EXTRUDER_E_LENGTH1_TEXT_IT "Estrude1" |
|||
#define EXTRUDER_E_LENGTH2_TEXT_IT "Estrude2" |
|||
#define EXTRUDER_E_LENGTH3_TEXT_IT "Estrude3" |
|||
|
|||
#define ABOUT_TYPE_TEXT_IT "Type: " |
|||
#define ABOUT_VERSION_TEXT_IT "Firmware: " |
|||
#define ABOUT_WIFI_TEXT_IT "WiFi: " |
|||
|
|||
#define PRINTING_OPERATION_IT "Opzioni" |
|||
#define PRINTING_PAUSE_IT "Pause" |
|||
#define PRINTING_TEMP_IT "Temp." |
|||
#define PRINTING_CHANGESPEED_IT "Velocità" |
|||
#define PRINTING_RESUME_IT "Recupero" |
|||
#define PRINTING_STOP_IT "Stop" |
|||
#define PRINTING_MORE_IT "Di più" |
|||
#define PRINTING_EXTRUDER_IT "Estrude" |
|||
#define PRINTING_MOVE_IT "Muovi" |
|||
|
|||
#define EXTRUDER_SPEED_IT "Estrude" |
|||
#define MOVE_SPEED_IT "Muovi" |
|||
#define EXTRUDER_SPEED_STATE_IT "Estrusione" |
|||
#define MOVE_SPEED_STATE_IT "Movimento" |
|||
#define STEP_1PERCENT_IT "1%" |
|||
#define STEP_5PERCENT_IT "5%" |
|||
#define STEP_10PERCENT_IT "10%" |
|||
|
|||
#define ZOFFSET_IT "Z Offset" |
|||
#define ZOFFSET_INC_IT "Add" |
|||
#define ZOFFSET_DEC_IT "Dec" |
|||
|
|||
#define TITLE_READYPRINT_IT "Pronto" |
|||
#define TITLE_PREHEAT_IT "Preris" |
|||
#define TITLE_MOVE_IT "Muovi" |
|||
#define TITLE_HOME_IT "Home" |
|||
#define TITLE_EXTRUDE_IT "Estrude" |
|||
#define TITLE_LEVELING_IT "Livella" |
|||
#define TITLE_SET_IT "Impostare" |
|||
#define TITLE_MORE_IT "Di più" |
|||
#define TITLE_CHOOSEFILE_IT "File" |
|||
#define TITLE_PRINTING_IT "Stampa" |
|||
#define TITLE_OPERATION_IT "Opzioni" |
|||
#define TITLE_ADJUST_IT "Regolare" |
|||
#define TITLE_WIRELESS_IT "Wireless" |
|||
#define TITLE_FILAMENT_IT "Filamento" |
|||
#define TITLE_ABOUT_IT "Circa" |
|||
#define TITLE_FAN_IT "Ventola" |
|||
#define TITLE_LANGUAGE_IT "Lingua" |
|||
#define TITLE_PAUSE_IT "Pausa" |
|||
#define TITLE_CHANGESPEED_IT "Velocità" |
|||
#define TITLE_CLOUD_TEXT_IT "Cloud" |
|||
#define TITLE_DIALOG_CONFIRM_IT "Confirm" |
|||
#define TITLE_FILESYS_IT "FileSys" |
|||
#define TITLE_ZOFFSET_IT "Z Offset" |
|||
|
|||
#define AUTO_SHUTDOWN_IT "Auto" |
|||
#define MANUAL_SHUTDOWN_IT "Manuale" |
|||
|
|||
#define DIALOG_CONFIRM_IT "Conferma" |
|||
#define DIALOG_CANCLE_IT "Cancella" |
|||
#define DIALOG_OK_IT "OK" |
|||
#define DIALOG_RESET_IT "Resettare" |
|||
#define DIALOG_RETRY_IT "Riprovare" |
|||
#define DIALOG_DISABLE_IT "Disable" |
|||
#define DIALOG_PRINT_MODEL_IT "Gcode stampa?" |
|||
#define DIALOG_CANCEL_PRINT_IT "Stop stampa?" |
|||
#define DIALOG_STOP_IT "Stop" |
|||
#define DIALOG_REPRINT_FROM_BREAKPOINT_IT "Continua a stampare dal \npunto di interruzione?" |
|||
//#define DIALOG_UNBIND_PRINTER_IT "Libero?"
|
|||
#define DIALOG_ERROR_TIPS1_IT "Errore: nessun file, \nper favore controllare di nuovo." |
|||
#define DIALOG_ERROR_TIPS2_IT "Errore: operazione non riuscita, \nsi prega di controllare se il baudrate del \ndisplay è lo stesso scheda madre" |
|||
#define DIALOG_ERROR_TIPS3_IT "Errore: il nome del file o il \npercorso è troppo lungo!" |
|||
#define DIALOG_CLOSE_MACHINE_IT "Closing machine......" |
|||
#define DIALOG_UNBIND_PRINTER_IT "Unbind the printer?" |
|||
#define DIALOG_FILAMENT_NO_PRESS_IT "Filament detection switch is not pressed" |
|||
#define DIALOG_PRINT_FINISH_IT "La stampa è completa!" |
|||
#define DIALOG_PRINT_TIME_IT "Tempo di stampa: " |
|||
#define DIALOG_REPRINT_IT "Print again" |
|||
#define DIALOG_WIFI_ENABLE_TIPS_IT "The wifi module is being configured,\nplease wait a moment....." |
|||
|
|||
#define MESSEGE_PAUSING_IT "Parcheggiando..." |
|||
#define MESSEGE_CHANGING_IT "Attendere avvio del cambio di filamento" |
|||
#define MESSEGE_UNLOAD_IT "Attendere l'espulsione del filamento" |
|||
#define MESSEGE_WAITING_IT "Premi per riprendere la stampa" |
|||
#define MESSEGE_INSERT_IT "Inserisci il filamento e premi per continuare" |
|||
#define MESSEGE_LOAD_IT "Attendere il caricamento del filamento" |
|||
#define MESSEGE_PURGE_IT "Attendere lo spurgo del filamento" |
|||
#define MESSEGE_RESUME_IT "Attendere la ripresa della stampa..." |
|||
#define MESSEGE_HEAT_IT "Premi per riscaldare ugello" |
|||
#define MESSEGE_HEATING_IT "Riscaldam. ugello Attendere prego..." |
|||
#define MESSEGE_OPTION_IT "Eliminare di più o continuare a stampare?" |
|||
#define MESSEGE_PURGE_MORE_IT "Epurazione" |
|||
#define MESSEGE_CONTINUE_PRINT_IT "Stampa" |
@ -0,0 +1,272 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
//****************俄语***************************//
|
|||
#define TOOL_TEXT_RU "инструмент" |
|||
#define PREHEAT_TEXT_RU " нагрев" |
|||
#define MOVE_TEXT_RU "движение" |
|||
#define HOME_TEXT_RU "домой" |
|||
#define PRINT_TEXT_RU " печать" |
|||
#define EXTRUDE_TEXT_RU "экструзия" |
|||
#define LEVELING_TEXT_RU "уровень" |
|||
#define AUTO_LEVELING_TEXT_RU "aвто" |
|||
#define SET_TEXT_RU "настройки" |
|||
#define MORE_TEXT_RU "больше" |
|||
|
|||
#define ADD_TEXT_RU "добавить" |
|||
#define DEC_TEXT_RU "уменьшить" |
|||
#define EXTRUDER_1_TEXT_RU "экструдер1" |
|||
#define EXTRUDER_2_TEXT_RU "экструдер2" |
|||
#define HEATBED_TEXT_RU "стол" |
|||
#define TEXT_1C_RU "1℃" |
|||
#define TEXT_5C_RU "5℃" |
|||
#define TEXT_10C_RU "10℃" |
|||
#define CLOSE_TEXT_RU "выкл" |
|||
|
|||
#define BACK_TEXT_RU "назад" |
|||
|
|||
#define TOOL_PREHEAT_RU "нагрев" |
|||
#define TOOL_EXTRUDE_RU "экструзия" |
|||
#define TOOL_MOVE_RU "движение" |
|||
#define TOOL_HOME_RU "домой" |
|||
#define TOOL_LEVELING_RU "уровень" |
|||
#define TOOL_AUTO_LEVELING_RU "aвто" |
|||
#define TOOL_FILAMENT_RU "замена" |
|||
#define TOOL_MORE_RU "больше" |
|||
|
|||
#define AXIS_X_ADD_TEXT_RU "X+" |
|||
#define AXIS_X_DEC_TEXT_RU "X-" |
|||
#define AXIS_Y_ADD_TEXT_RU "Y+" |
|||
#define AXIS_Y_DEC_TEXT_RU "Y-" |
|||
#define AXIS_Z_ADD_TEXT_RU "Z+" |
|||
#define AXIS_Z_DEC_TEXT_RU "Z-" |
|||
#define TEXT_01MM_RU "0.1mm" |
|||
#define TEXT_1MM_RU "1mm" |
|||
#define TEXT_10MM_RU "10mm" |
|||
|
|||
#define HOME_X_TEXT_RU "X" |
|||
#define HOME_Y_TEXT_RU "Y" |
|||
#define HOME_Z_TEXT_RU "Z" |
|||
#define HOME_ALL_TEXT_RU "Home" |
|||
#define HOME_STOPMOVE_RU "Quickstop" |
|||
|
|||
#define PAGE_UP_TEXT_RU "вверх" |
|||
#define PAGE_DOWN_TEXT_RU "вниз" |
|||
|
|||
#define EXTRUDER_IN_TEXT_RU "втянуть" |
|||
#define EXTRUDER_OUT_TEXT_RU "выдавить" |
|||
#define EXTRUDE_1MM_TEXT_RU "1mm" |
|||
#define EXTRUDE_5MM_TEXT_RU "5mm" |
|||
#define EXTRUDE_10MM_TEXT_RU "10mm" |
|||
#define EXTRUDE_LOW_SPEED_TEXT_RU "мин" |
|||
#define EXTRUDE_MEDIUM_SPEED_TEXT_RU "сред" |
|||
#define EXTRUDE_HIGH_SPEED_TEXT_RU "выс" |
|||
|
|||
#define LEVELING_POINT1_TEXT_RU "1точка" |
|||
#define LEVELING_POINT2_TEXT_RU "2точка" |
|||
#define LEVELING_POINT3_TEXT_RU "3точка" |
|||
#define LEVELING_POINT4_TEXT_RU "4точка" |
|||
#define LEVELING_POINT5_TEXT_RU "5точка" |
|||
|
|||
#define FILESYS_TEXT_RU "система" |
|||
#define WIFI_TEXT_RU "WiFi" |
|||
#define FAN_TEXT_RU "вентилятор" |
|||
#define ABOUT_TEXT_RU "инфо" |
|||
#define BREAK_POINT_TEXT_RU "продолжить" |
|||
#define FILAMENT_TEXT_RU "замена" |
|||
#define LANGUAGE_TEXT_RU "язык" |
|||
#define MOTOR_OFF_TEXT_RU "отклмотор" |
|||
#define MOTOR_OFF_XY_TEXT_RU "Off-XY" |
|||
#define SHUTDOWN_TEXT_RU "выключение" |
|||
|
|||
#define U_DISK_TEXT_RU "U диск" |
|||
#define SD_CARD_TEXT_RU "SD диск" |
|||
#define WIFI_NAME_TEXT_RU "WiFi: " |
|||
#define WIFI_KEY_TEXT_RU "пароль: " |
|||
#define WIFI_IP_TEXT_RU "IP: " |
|||
#define WIFI_AP_TEXT_RU "режим: AP" |
|||
#define WIFI_STA_TEXT_RU "режим: STA" |
|||
#define WIFI_CONNECTED_TEXT_RU "подключен" |
|||
#define WIFI_DISCONNECTED_TEXT_RU "не подключен" |
|||
#define WIFI_EXCEPTION_TEXT_RU "исключение" |
|||
#define WIFI_RECONNECT_TEXT_RU "Reconnect" |
|||
#define CLOUD_TEXT_RU "облако" |
|||
#define CLOUD_BIND_RU "соединён" |
|||
#define CLOUD_UNBIND_RU "не соединён" |
|||
#define CLOUD_UNBINDING_RU "Unbinding" |
|||
#define CLOUD_DISCONNECTED_RU "Disconnected" |
|||
#define CLOUD_UNBINDED_RU "Unbinded" |
|||
#define CLOUD_BINDED_RU "Binded" |
|||
#define CLOUD_DISABLE_RU "Disable" |
|||
|
|||
#define FAN_ADD_TEXT_RU "добавить" |
|||
#define FAN_DEC_TEXT_RU "уменьшить" |
|||
#define FAN_OPEN_TEXT_RU "100%" |
|||
#define FAN_HALF_TEXT_RU "50%" |
|||
#define FAN_CLOSE_TEXT_RU "откл" |
|||
#define FAN_TIPS1_TEXT_RU "вентилятор" |
|||
#define FAN_TIPS2_TEXT_RU "вентилятор\nоткл" |
|||
|
|||
#define FILAMENT_IN_TEXT_RU "втянуть" |
|||
#define FILAMENT_OUT_TEXT_RU "выдавить" |
|||
#define FILAMENT_EXT0_TEXT_RU "экструдер1" |
|||
#define FILAMENT_EXT1_TEXT_RU "экструдер2" |
|||
#define FILAMENT_HEAT_TEXT_RU "нагрев" |
|||
#define FILAMENT_STOP_TEXT_RU "стоп" |
|||
//#define FILAMENT_CHANGE_TEXT_RU "замена"
|
|||
#define FILAMENT_TIPS2_TEXT_RU "T:" |
|||
#define FILAMENT_TIPS3_TEXT_RU "втянуть..." |
|||
#define FILAMENT_TIPS4_TEXT_RU "вядавить..." |
|||
#define FILAMENT_TIPS5_TEXT_RU "Низкая температура, \nнеобходим нагрев" |
|||
#define FILAMENT_TIPS6_TEXT_RU "завершено" |
|||
|
|||
#if 0 |
|||
#define FILAMENT_REPLAYS_IDLE_TEXT_RU "Please click <втянуть> or <выдавить> \nto replace filament!" |
|||
#define FILAMENT_CHANGE_TEXT_RU "Please click <втянуть> or <выдавить>,\nAfter pinter pause." |
|||
#define FILAMENT_DIALOG_LOAD_HEAT_TIPS_RU "Heating up the nozzle,please wait..." |
|||
#define FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_RU "Heating up the nozzle,please wait..." |
|||
#define FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_RU "Heat completed,please load filament to extruder,and click <да> for start loading." |
|||
#define FILAMENT_DIALOG_LOAD_CONFIRM2_TIPS_RU "Please load filament to extruder,and click <да> for start loading." |
|||
#define FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_RU "Heat completed,please click <да> for start unloading.!" |
|||
#define FILAMENT_DIALOG_LOADING_TIPS_RU "Is loading ,please wait!" |
|||
#define FILAMENT_DIALOG_UNLOADING_TIPS_RU "Is unloading,please wait!" |
|||
#define FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_RU "Load filament completed,click <да> for return!" |
|||
#define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_RU "Unload filament completed,click <да> for return!" |
|||
#endif |
|||
#define FILAMENT_CHANGE_TEXT_RU "Please click <Load> \nor <unload>,After \npinter pause." |
|||
#define FILAMENT_DIALOG_LOAD_HEAT_TIPS_RU "Heating up the nozzle,\nplease wait..." |
|||
#define FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_RU "Heating up the nozzle,\nplease wait..." |
|||
#define FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_RU "Heat completed,please load filament \nto extruder,and click <confirm> \nfor start loading." |
|||
#define FILAMENT_DIALOG_LOAD_CONFIRM2_TIPS_RU "Please load filament to extruder,\nand click <confirm> for start loading." |
|||
#define FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_RU "Heat completed,please \nclick <confirm> for start unloading.!" |
|||
#define FILAMENT_DIALOG_LOADING_TIPS_RU "Is loading ,please wait!" |
|||
#define FILAMENT_DIALOG_UNLOADING_TIPS_RU "Is unloading,please wait!" |
|||
#define FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_RU "Load filament completed,\nclick <confirm> for return!" |
|||
#define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_RU "Unload filament completed,\nclick <confirm> for return!" |
|||
|
|||
|
|||
#define PRE_HEAT_EXT_TEXT_RU "E" |
|||
#define PRE_HEAT_BED_TEXT_RU "стол" |
|||
|
|||
#define FILE_LOADING_RU "загрузка......" |
|||
#if 0 |
|||
#define NO_FILE_AND_CHECK_RU "Файлы не найдены! Вставьте SD-карту или диск U!" |
|||
#endif |
|||
#define NO_FILE_AND_CHECK_RU "нет файла,попробуйте ещё раз!" |
|||
|
|||
#define NO_FILE_RU "нет файла!" |
|||
|
|||
#define EXTRUDER_TEMP_TEXT_RU "температура" |
|||
#define EXTRUDER_E_LENGTH1_TEXT_RU "экструзия1" |
|||
#define EXTRUDER_E_LENGTH2_TEXT_RU "экструзия2" |
|||
#define EXTRUDER_E_LENGTH3_TEXT_RU "экструзия3" |
|||
|
|||
#define ABOUT_TYPE_TEXT_RU "Type: " |
|||
#define ABOUT_VERSION_TEXT_RU "Firmware: " |
|||
#define ABOUT_WIFI_TEXT_RU "WiFi: " |
|||
|
|||
#define PRINTING_OPERATION_RU "управление" |
|||
#define PRINTING_PAUSE_RU "пауза" |
|||
#define PRINTING_TEMP_RU "темп" |
|||
#define PRINTING_CHANGESPEED_RU "скорости" |
|||
#define PRINTING_RESUME_RU "возобновить" |
|||
#define PRINTING_STOP_RU "стоп" |
|||
#define PRINTING_MORE_RU "больше" |
|||
#define PRINTING_EXTRUDER_RU "экстр" |
|||
#define PRINTING_MOVE_RU "движение" |
|||
|
|||
#define EXTRUDER_SPEED_RU "экстр" |
|||
#define MOVE_SPEED_RU "движ" |
|||
#define EXTRUDER_SPEED_STATE_RU "скорость экстр" |
|||
#define MOVE_SPEED_STATE_RU "скорость движ" |
|||
#define STEP_1PERCENT_RU "1%" |
|||
#define STEP_5PERCENT_RU "5%" |
|||
#define STEP_10PERCENT_RU "10%" |
|||
|
|||
#define ZOFFSET_RU "Z Offset" |
|||
#define ZOFFSET_INC_RU "добавить" |
|||
#define ZOFFSET_DEC_RU "уменьшить" |
|||
|
|||
#define TITLE_READYPRINT_RU "готов к" |
|||
#define TITLE_PREHEAT_RU "движение" |
|||
#define TITLE_MOVE_RU "движение" |
|||
#define TITLE_HOME_RU "Home" |
|||
#define TITLE_EXTRUDE_RU "экструзия" |
|||
#define TITLE_LEVELING_RU "уровень" |
|||
#define TITLE_SET_RU "настройки" |
|||
#define TITLE_MORE_RU "больше" |
|||
#define TITLE_CHOOSEFILE_RU "файла" |
|||
#define TITLE_PRINTING_RU "печать" |
|||
#define TITLE_OPERATION_RU "управление" |
|||
#define TITLE_ADJUST_RU "регулировать" |
|||
#define TITLE_WIRELESS_RU "Wireless" |
|||
#define TITLE_FILAMENT_RU "замена" |
|||
#define TITLE_ABOUT_RU "инфо" |
|||
#define TITLE_FAN_RU "вентилятор" |
|||
#define TITLE_LANGUAGE_RU "язык" |
|||
#define TITLE_PAUSE_RU "пауза" |
|||
#define TITLE_CHANGESPEED_RU "скорости" |
|||
#define TILE_TOOL_RU "инструмент" |
|||
#define TITLE_CLOUD_TEXT_RU "Cloud" |
|||
#define TITLE_DIALOG_CONFIRM_RU "Confirm" |
|||
#define TITLE_FILESYS_RU "FileSys" |
|||
#define TITLE_ZOFFSET_RU "Z Offset" |
|||
|
|||
#define AUTO_SHUTDOWN_RU "авто-откл" |
|||
#define MANUAL_SHUTDOWN_RU "ручн-откл" |
|||
|
|||
#define DIALOG_CONFIRM_RU "да"//"подтвердить"
|
|||
#define DIALOG_CANCLE_RU "отмена" |
|||
#define DIALOG_OK_RU "да" |
|||
#define DIALOG_RESET_RU "сброс" |
|||
#define DIALOG_RETRY_RU "повтор" |
|||
#define DIALOG_DISABLE_RU "запретить" |
|||
#define DIALOG_PRINT_MODEL_RU "печать модели?" |
|||
#define DIALOG_CANCEL_PRINT_RU "стоп?" |
|||
#define DIALOG_STOP_RU "стоп" |
|||
#define DIALOG_REPRINT_FROM_BREAKPOINT_RU "продолжить?" |
|||
//#define DIALOG_UNBIND_PRINTER_RU "разрыв?"
|
|||
#define DIALOG_ERROR_TIPS1_RU "ошибка:нет файла, попробуйте ещё раз." |
|||
#define DIALOG_ERROR_TIPS2_RU "ошибка:сбой передачи. установите скорость \nпередачи данных как на плате управления!" |
|||
#define DIALOG_ERROR_TIPS3_RU "ошибка: имя файла слишком длинное!" |
|||
#define DIALOG_CLOSE_MACHINE_RU "Closing machine......" |
|||
#define DIALOG_UNBIND_PRINTER_RU "Unbind the printer?" |
|||
#define DIALOG_FILAMENT_NO_PRESS_RU "Filament detection switch is not pressed" |
|||
#define DIALOG_PRINT_FINISH_RU "Печать завершена!" |
|||
#define DIALOG_PRINT_TIME_RU "Время печати: " |
|||
#define DIALOG_REPRINT_RU "Print again" |
|||
#define DIALOG_WIFI_ENABLE_TIPS_RU "The wifi module is being configured,\nplease wait a moment....." |
|||
|
|||
#define MESSEGE_PAUSING_RU "Стоянка..." |
|||
#define MESSEGE_CHANGING_RU "Подождите, пока начнется смена филамента" |
|||
#define MESSEGE_UNLOAD_RU "Дождитесь выгрузки нити" |
|||
#define MESSEGE_WAITING_RU "Нажмите кнопку,чтобы возобновить печать" |
|||
#define MESSEGE_INSERT_RU "Вставьте нить и нажмите кнопку,чтобы продолжить" |
|||
#define MESSEGE_LOAD_RU "Дождитесь загрузки нити" |
|||
#define MESSEGE_PURGE_RU "Дождитесь чистки нити" |
|||
#define MESSEGE_RESUME_RU "Подождите,пока печать возобновится ..." |
|||
#define MESSEGE_HEAT_RU "Нажмите кнопку, чтобы нагреть форсунку" |
|||
#define MESSEGE_HEATING_RU "Подогрев форсунки Пожалуйста, подождите ..." |
|||
#define MESSEGE_OPTION_RU "Очистить больше или продолжить печать?" |
|||
#define MESSEGE_PURGE_MORE_RU "чистка" |
|||
#define MESSEGE_CONTINUE_PRINT_RU "Распечатать" |
@ -0,0 +1,264 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
//*************简体中文***********************//
|
|||
#define TOOL_TEXT_CN "工具" |
|||
#define PREHEAT_TEXT_CN "预热" |
|||
#define MOVE_TEXT_CN "移动" |
|||
#define HOME_TEXT_CN "回零" |
|||
#define PRINT_TEXT_CN "打印" |
|||
#define EXTRUDE_TEXT_CN "挤出" |
|||
#define LEVELING_TEXT_CN "调平" |
|||
#define AUTO_LEVELING_TEXT_CN "自动调平" |
|||
#define SET_TEXT_CN "设置" |
|||
#define MORE_TEXT_CN "更多" |
|||
|
|||
#define ADD_TEXT_CN "增加" |
|||
#define DEC_TEXT_CN "减少" |
|||
#define EXTRUDER_1_TEXT_CN "喷头1" |
|||
#define EXTRUDER_2_TEXT_CN "喷头2" |
|||
#define HEATBED_TEXT_CN "热床" |
|||
#define TEXT_1C_CN "1℃" |
|||
#define TEXT_5C_CN "5℃" |
|||
#define TEXT_10C_CN "10℃" |
|||
#define CLOSE_TEXT_CN "关闭" |
|||
|
|||
#define BACK_TEXT_CN "返回" |
|||
|
|||
#define TOOL_PREHEAT_CN "预热" |
|||
#define TOOL_EXTRUDE_CN "挤出" |
|||
#define TOOL_MOVE_CN "移动" |
|||
#define TOOL_HOME_CN "回零" |
|||
#define TOOL_LEVELING_CN "调平" |
|||
#define TOOL_AUTO_LEVELING_CN "自动调平" |
|||
#define TOOL_FILAMENT_CN "换料" |
|||
#define TOOL_MORE_CN "更多" |
|||
|
|||
#define AXIS_X_ADD_TEXT_CN "X+" |
|||
#define AXIS_X_DEC_TEXT_CN "X-" |
|||
#define AXIS_Y_ADD_TEXT_CN "Y+" |
|||
#define AXIS_Y_DEC_TEXT_CN "Y-" |
|||
#define AXIS_Z_ADD_TEXT_CN "Z+" |
|||
#define AXIS_Z_DEC_TEXT_CN "Z-" |
|||
#define TEXT_01MM_CN "0.1mm" |
|||
#define TEXT_1MM_CN "1mm" |
|||
#define TEXT_10MM_CN "10mm" |
|||
|
|||
#define HOME_X_TEXT_CN "X" |
|||
#define HOME_Y_TEXT_CN "Y" |
|||
#define HOME_Z_TEXT_CN "Z" |
|||
#define HOME_ALL_TEXT_CN "回零" |
|||
#define HOME_STOPMOVE_CN "急停" |
|||
|
|||
#define PAGE_UP_TEXT_CN "上一页" |
|||
#define PAGE_DOWN_TEXT_CN "下一页" |
|||
|
|||
#define EXTRUDER_IN_TEXT_CN "进料" |
|||
#define EXTRUDER_OUT_TEXT_CN "退料" |
|||
#define EXTRUDE_1MM_TEXT_CN "1mm" |
|||
#define EXTRUDE_5MM_TEXT_CN "5mm" |
|||
#define EXTRUDE_10MM_TEXT_CN "10mm" |
|||
#define EXTRUDE_LOW_SPEED_TEXT_CN "低速" |
|||
#define EXTRUDE_MEDIUM_SPEED_TEXT_CN "常速" |
|||
#define EXTRUDE_HIGH_SPEED_TEXT_CN "高速" |
|||
|
|||
#define LEVELING_POINT1_TEXT_CN "第一点" |
|||
#define LEVELING_POINT2_TEXT_CN "第二点" |
|||
#define LEVELING_POINT3_TEXT_CN "第三点" |
|||
#define LEVELING_POINT4_TEXT_CN "第四点" |
|||
#define LEVELING_POINT5_TEXT_CN "第五点" |
|||
|
|||
#define FILESYS_TEXT_CN "文件系统" |
|||
#define WIFI_TEXT_CN "WIFI" |
|||
#define FAN_TEXT_CN "风扇" |
|||
#define ABOUT_TEXT_CN "关于" |
|||
#define BREAK_POINT_TEXT_CN "断点续打" |
|||
#define FILAMENT_TEXT_CN "换料" |
|||
#define LANGUAGE_TEXT_CN "语言" |
|||
#define MOTOR_OFF_TEXT_CN "关闭电机" |
|||
#define MOTOR_OFF_XY_TEXT_CN "关闭XY" |
|||
#define SHUTDOWN_TEXT_CN "关机" |
|||
|
|||
#define U_DISK_TEXT_CN "U盘" |
|||
#define SD_CARD_TEXT_CN "SD卡" |
|||
#define WIFI_NAME_TEXT_CN "无线网络:" |
|||
#define WIFI_KEY_TEXT_CN "密码: " |
|||
#define WIFI_IP_TEXT_CN "IP: " |
|||
#define WIFI_AP_TEXT_CN "状态: AP" |
|||
#define WIFI_STA_TEXT_CN "状态: STA" |
|||
#define WIFI_CONNECTED_TEXT_CN "已连接" |
|||
#define WIFI_DISCONNECTED_TEXT_CN "未连接" |
|||
#define WIFI_EXCEPTION_TEXT_CN "模块异常" |
|||
#define CLOUD_TEXT_CN "云服务" |
|||
#define CLOUD_BIND_CN "已绑定" |
|||
#define CLOUD_UNBIND_CN "解绑" |
|||
#define CLOUD_UNBINDING_CN "解绑中" |
|||
#define CLOUD_DISCONNECTED_CN "未连接" |
|||
#define CLOUD_UNBINDED_CN "未绑定" |
|||
#define CLOUD_BINDED_CN "已绑定" |
|||
#define CLOUD_DISABLE_CN "已禁用" |
|||
|
|||
#define FAN_ADD_TEXT_CN "增加" |
|||
#define FAN_DEC_TEXT_CN "减少" |
|||
#define FAN_OPEN_TEXT_CN "100%" |
|||
#define FAN_HALF_TEXT_CN "50%" |
|||
#define FAN_CLOSE_TEXT_CN "关闭" |
|||
#define FAN_TIPS1_TEXT_CN "风扇" |
|||
#define FAN_TIPS2_TEXT_CN "FAN\nClose" |
|||
|
|||
#define FILAMENT_IN_TEXT_CN "进料" |
|||
#define FILAMENT_OUT_TEXT_CN "退料" |
|||
#define FILAMENT_EXT0_TEXT_CN "喷头1" |
|||
#define FILAMENT_EXT1_TEXT_CN "喷头2" |
|||
#define FILAMENT_HEAT_TEXT_CN "预热" |
|||
#define FILAMENT_STOP_TEXT_CN "停止" |
|||
#if 0 |
|||
#define FILAMENT_REPLAYS_IDLE_TEXT_CN "请按<进料>或<退料>进行换料!" |
|||
#define FILAMENT_CHANGE_TEXT_CN "待打印机暂停后,请按<进料>或<退料>进行换料!" |
|||
#else |
|||
#define FILAMENT_CHANGE_TEXT_CN "待打印机暂停后,\n请按<进料>或<退料>" |
|||
#endif |
|||
|
|||
#define FILAMENT_DIALOG_LOAD_HEAT_TIPS_CN "准备进料,正在加热,请稍等!" |
|||
#define FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_CN "准备退料,正在加热,请稍等!" |
|||
#define FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_CN "加热完成,请装载耗材后,按<确定>开始进料!" |
|||
#define FILAMENT_DIALOG_LOAD_CONFIRM2_TIPS_CN "请装载耗材,按<确定>开始进料!" |
|||
#define FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_CN "加热完成,请按<确定>开始退料!" |
|||
#define FILAMENT_DIALOG_LOADING_TIPS_CN "正在进料,请等待耗材加载完成!" |
|||
#define FILAMENT_DIALOG_UNLOADING_TIPS_CN "正在退料,请等待耗材卸载完成!" |
|||
#define FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_CN "进料完成,请按<确定>返回" |
|||
#define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_CN "退料完成,请按<确定>返回" |
|||
|
|||
#define FILAMENT_TIPS3_TEXT_CN "正在进料" |
|||
#define FILAMENT_TIPS4_TEXT_CN "正在退料" |
|||
#define FILAMENT_TIPS5_TEXT_CN "温度太低,请先预热" |
|||
#define FILAMENT_TIPS6_TEXT_CN "换料完成" |
|||
|
|||
#define PRE_HEAT_EXT_TEXT_CN "喷头" |
|||
#define PRE_HEAT_BED_TEXT_CN "热床" |
|||
|
|||
#define FILE_LOADING_CN "正在载入......" |
|||
#define NO_FILE_AND_CHECK_CN "无文件!请插入sd卡或u盘!" |
|||
#define NO_FILE_CN "无文件!" |
|||
|
|||
#define EXTRUDER_TEMP_TEXT_CN "温度" |
|||
#define EXTRUDER_E_LENGTH1_TEXT_CN "喷头" |
|||
#define EXTRUDER_E_LENGTH2_TEXT_CN "喷头" |
|||
#define EXTRUDER_E_LENGTH3_TEXT_CN "喷头" |
|||
|
|||
#define ABOUT_TYPE_TEXT_CN "Type: " |
|||
#define ABOUT_VERSION_TEXT_CN "Firmware: " |
|||
#define ABOUT_WIFI_TEXT_CN "Wifi: " |
|||
|
|||
#define PRINTING_OPERATION_CN "操作" |
|||
#define PRINTING_PAUSE_CN "暂停" |
|||
#define PRINTING_TEMP_CN "温度" |
|||
#define PRINTING_CHANGESPEED_CN "变速" |
|||
#define PRINTING_RESUME_CN "恢复" |
|||
#define PRINTING_STOP_CN "停止" |
|||
#define PRINTING_MORE_CN "更多" |
|||
#define PRINTING_EXTRUDER_CN "挤出" |
|||
#define PRINTING_MOVE_CN "移动" |
|||
|
|||
#define EXTRUDER_SPEED_CN "挤出" |
|||
#define MOVE_SPEED_CN "移动" |
|||
#define EXTRUDER_SPEED_STATE_CN "挤出速度" |
|||
#define MOVE_SPEED_STATE_CN "移动速度" |
|||
#define STEP_1PERCENT_CN "1%" |
|||
#define STEP_5PERCENT_CN "5%" |
|||
#define STEP_10PERCENT_CN "10%" |
|||
|
|||
#define ZOFFSET_CN "Z Offset" |
|||
#define ZOFFSET_INC_CN "增加" |
|||
#define ZOFFSET_DEC_CN "减少" |
|||
|
|||
#define TITLE_READYPRINT_CN "准备打印" |
|||
#define TITLE_PREHEAT_CN "预热" |
|||
#define TITLE_MOVE_CN "移动" |
|||
#define TITLE_HOME_CN "回零" |
|||
#define TITLE_EXTRUDE_CN "挤出" |
|||
#define TITLE_LEVELING_CN "调平" |
|||
#define TITLE_SET_CN "设置" |
|||
#define TITLE_MORE_CN "更多" |
|||
#define TITLE_CHOOSEFILE_CN "选择文件" |
|||
#define TITLE_PRINTING_CN "正在打印" |
|||
#define TITLE_OPERATION_CN "操作" |
|||
#define TITLE_ADJUST_CN "调整" |
|||
#define TITLE_WIRELESS_CN "无线网络" |
|||
#define TITLE_FILAMENT_CN "换料" |
|||
#define TITLE_ABOUT_CN "关于" |
|||
#define TITLE_FAN_CN "风扇" |
|||
#define TITLE_LANGUAGE_CN "语言" |
|||
#define TITLE_PAUSE_CN "暂停" |
|||
#define TITLE_CHANGESPEED_CN "变速" |
|||
#define TITLE_CLOUD_TEXT_CN "云服务" |
|||
#define TITLE_DIALOG_CONFIRM_CN "确认" |
|||
#define TITLE_FILESYS_CN "文件系统" |
|||
#define TITLE_ZOFFSET_CN "Z Offset" |
|||
|
|||
#define AUTO_SHUTDOWN_CN "自动关机" |
|||
#define MANUAL_SHUTDOWN_CN "手动关机" |
|||
|
|||
#define DIALOG_CONFIRM_CN "确定" |
|||
#define DIALOG_CANCLE_CN "取消" |
|||
#define DIALOG_OK_CN "确认" |
|||
#define DIALOG_RESET_CN "重置" |
|||
#define DIALOG_DISABLE_CN "禁用" |
|||
#define DIALOG_PRINT_MODEL_CN "打印模型?" |
|||
#define DIALOG_CANCEL_PRINT_CN "停止打印?" |
|||
#define DIALOG_RETRY_CN "重试" |
|||
#define DIALOG_STOP_CN "停止" |
|||
#define DIALOG_REPRINT_FROM_BREAKPOINT_CN "从断点续打?" |
|||
//#define DIALOG_UNBIND_PRINTER_CN "解除绑定 ?"
|
|||
#define DIALOG_ERROR_TIPS1_CN "错误:找不到文件,请插入sd卡/u盘!" |
|||
#define DIALOG_ERROR_TIPS2_CN "错误:通信失败,请检查波特率或主板硬件!" |
|||
#define DIALOG_ERROR_TIPS3_CN "错误:文件名或文件路径太长 !" |
|||
#define DIALOG_CLOSE_MACHINE_CN "正在关机......" |
|||
#define DIALOG_UNBIND_PRINTER_CN "解除绑定?" |
|||
#define DIALOG_FILAMENT_NO_PRESS_CN "请先装载耗材!" |
|||
#define DIALOG_PRINT_FINISH_CN "打印完成!" |
|||
#define DIALOG_PRINT_TIME_CN "打印时间: " |
|||
#define DIALOG_REPRINT_CN "再打印一次" |
|||
#define DIALOG_WIFI_ENABLE_TIPS_CN "wifi模块正在配置中,请稍等......" |
|||
|
|||
#define TEXT_VALUE_CN "%d℃/%d℃" |
|||
#define EXTRUDE_TEXT_VALUE_T_CN ": %d℃" |
|||
#define WIFI_RECONNECT_TEXT_CN "重新连接" |
|||
|
|||
#define PRINTING_GBK "正在打印" |
|||
#define PRINTING_OPERATION_GBK "操作" |
|||
#define PRINTING_PAUSE_GBK "暂停" |
|||
|
|||
#define MESSEGE_PAUSING_CN "暂停中..." |
|||
#define MESSEGE_CHANGING_CN "等待换料开始..." |
|||
#define MESSEGE_UNLOAD_CN "退料中,请稍等..." |
|||
#define MESSEGE_WAITING_CN "点击按钮恢复打印" |
|||
#define MESSEGE_INSERT_CN "装载耗材后,点击按钮开始打印" |
|||
#define MESSEGE_LOAD_CN "进料中,请稍等..." |
|||
#define MESSEGE_PURGE_CN "等待挤出..." |
|||
#define MESSEGE_RESUME_CN "等待恢复打印..." |
|||
#define MESSEGE_HEAT_CN "按下按钮,加热喷头" |
|||
#define MESSEGE_HEATING_CN "喷头加热中,请等待..." |
|||
#define MESSEGE_OPTION_CN "挤出更多还是继续打印?" |
|||
#define MESSEGE_PURGE_MORE_CN "挤出" |
|||
#define MESSEGE_CONTINUE_PRINT_CN "打印" |
@ -0,0 +1,279 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
//****************西班牙语***************************
|
|||
#define TOOL_TEXT_SP "Ajustes" |
|||
#define PREHEAT_TEXT_SP "Precalentar"//"precalent\nar"
|
|||
#define MOVE_TEXT_SP "Mover" |
|||
#define HOME_TEXT_SP "Origen" |
|||
#define PRINT_TEXT_SP "Imprimir" |
|||
#define EXTRUDE_TEXT_SP "Extrusor" |
|||
#define LEVELING_TEXT_SP "Leveling"//"nivelac\nión"
|
|||
#define AUTO_LEVELING_TEXT_SP "Autolevel"//"auto\nnivelación"
|
|||
#define SET_TEXT_SP "Config" |
|||
#define MORE_TEXT_SP "Más" |
|||
|
|||
#define ADD_TEXT_SP "Más" |
|||
#define DEC_TEXT_SP "Menos" |
|||
#define EXTRUDER_1_TEXT_SP "Extrusor1: " |
|||
#define EXTRUDER_2_TEXT_SP "Extrusor2: " |
|||
#define HEATBED_TEXT_SP "Cama: " |
|||
#define TEXT_1C_SP "1℃" |
|||
#define TEXT_5C_SP "5℃" |
|||
#define TEXT_10C_SP "10℃" |
|||
#define CLOSE_TEXT_SP "Apagar" |
|||
|
|||
#define BACK_TEXT_SP "Atrás" |
|||
|
|||
#define TOOL_PREHEAT_SP "Precalentar" |
|||
#define TOOL_EXTRUDE_SP "Extrusor" |
|||
#define TOOL_MOVE_SP "Mover" |
|||
#define TOOL_HOME_SP "Origen" |
|||
#define TOOL_LEVELING_SP "Leveling" |
|||
#define TOOL_AUTO_LEVELING_SP "Autolevel" |
|||
#define TOOL_FILAMENT_SP "Filamento" |
|||
#define TOOL_MORE_SP "Más" |
|||
|
|||
#define AXIS_X_ADD_TEXT_SP "X+" |
|||
#define AXIS_X_DEC_TEXT_SP "X-" |
|||
#define AXIS_Y_ADD_TEXT_SP "Y+" |
|||
#define AXIS_Y_DEC_TEXT_SP "Y-" |
|||
#define AXIS_Z_ADD_TEXT_SP "Z+" |
|||
#define AXIS_Z_DEC_TEXT_SP "Z-" |
|||
#define TEXT_01MM_SP "0.1mm" |
|||
#define TEXT_1MM_SP "1mm" |
|||
#define TEXT_10MM_SP "10mm" |
|||
|
|||
#define HOME_X_TEXT_SP "EJE X" |
|||
#define HOME_Y_TEXT_SP "EJE Y" |
|||
#define HOME_Z_TEXT_SP "EJE Z" |
|||
#define HOME_ALL_TEXT_SP "TODOS" |
|||
#define HOME_STOPMOVE_SP "Quickstop" |
|||
|
|||
#define PAGE_UP_TEXT_SP "Arriba" |
|||
#define PAGE_DOWN_TEXT_SP "Abajo" |
|||
|
|||
#define EXTRUDER_IN_TEXT_SP "Dentro" |
|||
#define EXTRUDER_OUT_TEXT_SP "Fuera" |
|||
#define EXTRUDE_1MM_TEXT_SP "1mm" |
|||
#define EXTRUDE_5MM_TEXT_SP "5mm" |
|||
#define EXTRUDE_10MM_TEXT_SP "10mm" |
|||
#define EXTRUDE_LOW_SPEED_TEXT_SP "Baja" |
|||
#define EXTRUDE_MEDIUM_SPEED_TEXT_SP "Media" |
|||
#define EXTRUDE_HIGH_SPEED_TEXT_SP "Alta" |
|||
|
|||
#define LEVELING_POINT1_TEXT_SP "Primero" |
|||
#define LEVELING_POINT2_TEXT_SP "Segundo" |
|||
#define LEVELING_POINT3_TEXT_SP "Tercero" |
|||
#define LEVELING_POINT4_TEXT_SP "Cuarto" |
|||
#define LEVELING_POINT5_TEXT_SP "Quinto" |
|||
|
|||
#define FILESYS_TEXT_SP "Puerto" |
|||
#define WIFI_TEXT_SP "WiFi" |
|||
#define FAN_TEXT_SP "Ventilador" |
|||
#define ABOUT_TEXT_SP "Acerca" |
|||
#define BREAK_POINT_TEXT_SP "Continuar" |
|||
#define FILAMENT_TEXT_SP "Filamento" |
|||
#define LANGUAGE_TEXT_SP "Language" |
|||
#define MOTOR_OFF_TEXT_SP "Apagar motor" |
|||
#define MOTOR_OFF_XY_TEXT_SP "Off-XY" |
|||
#define SHUTDOWN_TEXT_SP "Apagar" |
|||
|
|||
#define U_DISK_TEXT_SP "PENDRIVE" |
|||
#define SD_CARD_TEXT_SP "SD" |
|||
#define WIFI_NAME_TEXT_SP "WIFI: " |
|||
#define WIFI_KEY_TEXT_SP "Contraseña: " |
|||
#define WIFI_IP_TEXT_SP "IP: " |
|||
#define WIFI_AP_TEXT_SP "Estado: AP" |
|||
#define WIFI_STA_TEXT_SP "Estado: STA" |
|||
#define WIFI_CONNECTED_TEXT_SP "Conectado" |
|||
#define WIFI_DISCONNECTED_TEXT_SP "Desconectado" |
|||
#define WIFI_EXCEPTION_TEXT_SP "Excepción" |
|||
#define WIFI_RECONNECT_TEXT_SP "Reconnect" |
|||
#define CLOUD_TEXT_SP "Nube" |
|||
#define CLOUD_BIND_SP "Atado" |
|||
#define CLOUD_UNBIND_SP "Sin atar" |
|||
#define CLOUD_UNBINDING_SP "Unbinding" |
|||
#define CLOUD_DISCONNECTED_SP "Disconnected" |
|||
#define CLOUD_UNBINDED_SP "Unbinded" |
|||
#define CLOUD_BINDED_SP "Binded" |
|||
#define CLOUD_DISABLE_SP "Disable" |
|||
|
|||
#define FAN_ADD_TEXT_SP "Más" |
|||
#define FAN_DEC_TEXT_SP "Menos" |
|||
#define FAN_OPEN_TEXT_SP "100%" |
|||
#define FAN_HALF_TEXT_SP "50%" |
|||
#define FAN_CLOSE_TEXT_SP "0%" |
|||
#define FAN_TIPS1_TEXT_SP "ventilador" |
|||
#define FAN_TIPS2_TEXT_SP "ventilador\n0" |
|||
|
|||
#define FILAMENT_IN_TEXT_SP "Dentro" |
|||
#define FILAMENT_OUT_TEXT_SP "Fuera" |
|||
#define FILAMENT_EXT0_TEXT_SP "Extrusor1" |
|||
#define FILAMENT_EXT1_TEXT_SP "Extrusor2" |
|||
#define FILAMENT_HEAT_TEXT_SP "Precalentar" |
|||
#define FILAMENT_STOP_TEXT_SP "Parar" |
|||
//#define FILAMENT_CHANGE_TEXT_SP "Filamento"
|
|||
#define FILAMENT_TIPS2_TEXT_SP "T:" |
|||
#define FILAMENT_TIPS3_TEXT_SP "Dentro..." |
|||
#define FILAMENT_TIPS4_TEXT_SP "Fuera..." |
|||
#define FILAMENT_TIPS5_TEXT_SP "Temperatura demasiado baja, por favor calentar" |
|||
#define FILAMENT_TIPS6_TEXT_SP "Completado" |
|||
#if 0 |
|||
#define FILAMENT_REPLAYS_IDLE_TEXT_SP "Please click <Dentro> or <Fuera> \nto replace filament!" |
|||
#define FILAMENT_CHANGE_TEXT_SP "Please click <Dentro> or <Fuera>,\nAfter pinter pause." |
|||
#define FILAMENT_DIALOG_LOAD_HEAT_TIPS_SP "Calentando el extrusor, por favor espere..." |
|||
#define FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_SP "Calentando el extrusor, por favor espere..." |
|||
#define FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_SP "Temperatura alcanzada.Inserte el filamento y luego presione\"Confirmar\"para comenzar la carga." |
|||
#define FILAMENT_DIALOG_LOAD_CONFIRM2_TIPS_SP "Inserte el filamento y luego presione\"Confirmar\"para comenzar la carga." |
|||
#define FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_SP "Temperatura alcanzada.Presione\"Confirmar\"para retirar el filamento." |
|||
#define FILAMENT_DIALOG_LOADING_TIPS_SP "Cargando filamento,por favor espere." |
|||
#define FILAMENT_DIALOG_UNLOADING_TIPS_SP "Retirando filamento,por favor espere." |
|||
#define FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_SP "Filamento cargado,presione\"Confirmar\"." |
|||
#define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_SP "Filamento retirado,presione\"Confirmar\"." |
|||
#else |
|||
#define FILAMENT_CHANGE_TEXT_SP "Please click <Load> \nor <unload>,After \npinter pause." |
|||
#define FILAMENT_DIALOG_LOAD_HEAT_TIPS_SP "Calentando el extrusor,\npor favor espere..." |
|||
#define FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_SP "Calentando el extrusor,\npor favor espere..." |
|||
#define FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_SP "Temperatura alcanzada.Inserte el \nfilamento y luego presione\"Confirmar\"\npara comenzar la carga." |
|||
#define FILAMENT_DIALOG_LOAD_CONFIRM2_TIPS_SP "Inserte el filamento y \nluego presione\"Confirmar\"para \ncomenzar la carga." |
|||
#define FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_SP "Temperatura alcanzada.\nPresione\"Confirmar\"para retirar \nel filamento." |
|||
#define FILAMENT_DIALOG_LOADING_TIPS_SP "Cargando filamento,\npor favor espere." |
|||
#define FILAMENT_DIALOG_UNLOADING_TIPS_SP "Retirando filamento,\npor favor espere." |
|||
#define FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_SP "Filamento cargado,\npresione\"Confirmar\"." |
|||
#define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_SP "Filamento retirado,\npresione\"Confirmar\"." |
|||
#endif |
|||
|
|||
#define PRE_HEAT_EXT_TEXT_SP "Extrusor" |
|||
#define PRE_HEAT_BED_TEXT_SP "cama" |
|||
|
|||
#define FILE_LOADING_SP "Cargando......" |
|||
#if 0 |
|||
#define NO_FILE_AND_CHECK_SP "No se encontraron archivos! Por favor, inserte la tarjeta SD o el disco U!" |
|||
#endif |
|||
#define NO_FILE_AND_CHECK_SP "Archivo no encontrado,\n por favor insertar SD o disco USB!" |
|||
|
|||
#define NO_FILE_SP "Sin archivo!" |
|||
|
|||
|
|||
|
|||
#define EXTRUDER_TEMP_TEXT_SP "Temper" |
|||
#define EXTRUDER_E_LENGTH1_TEXT_SP "Extrusor1" |
|||
#define EXTRUDER_E_LENGTH2_TEXT_SP "Extrusor2" |
|||
#define EXTRUDER_E_LENGTH3_TEXT_SP "Extrusor3" |
|||
|
|||
#define ABOUT_TYPE_TEXT_SP "Pantalla: " |
|||
#define ABOUT_VERSION_TEXT_SP "Firmware: " |
|||
#define ABOUT_WIFI_TEXT_SP "WiFi: " |
|||
|
|||
#define PRINTING_OPERATION_SP "Ajustes" |
|||
#define PRINTING_PAUSE_SP "Pausar" |
|||
#define PRINTING_TEMP_SP "Temp." |
|||
#define PRINTING_CHANGESPEED_SP "Velocidad" |
|||
#define PRINTING_RESUME_SP "Resumir" |
|||
#define PRINTING_STOP_SP "Detener" |
|||
#define PRINTING_MORE_SP "Más" |
|||
#define PRINTING_EXTRUDER_SP "Extrusor" |
|||
#define PRINTING_MOVE_SP "Mover" |
|||
|
|||
#define EXTRUDER_SPEED_SP "Extrusor" |
|||
#define MOVE_SPEED_SP "Mover" |
|||
#define EXTRUDER_SPEED_STATE_SP "Extrusión" |
|||
#define MOVE_SPEED_STATE_SP "Movimiento" |
|||
#define STEP_1PERCENT_SP "1%" |
|||
#define STEP_5PERCENT_SP "5%" |
|||
#define STEP_10PERCENT_SP "10%" |
|||
|
|||
#define ZOFFSET_SP "Z Offset" |
|||
#define ZOFFSET_INC_SP "Más" |
|||
#define ZOFFSET_DEC_SP "Menos" |
|||
|
|||
#define TITLE_READYPRINT_SP "Inicio" |
|||
#define TITLE_PREHEAT_SP "Precalentar" |
|||
#define TITLE_MOVE_SP "Mover" |
|||
#define TITLE_HOME_SP "Origen" |
|||
#define TITLE_EXTRUDE_SP "Extrusor" |
|||
#define TITLE_LEVELING_SP "Leveling" |
|||
#define TITLE_SET_SP "Config" |
|||
#define TITLE_MORE_SP "Más" |
|||
#define TITLE_CHOOSEFILE_SP "Imprimir" |
|||
#define TITLE_PRINTING_SP "Imprimir" |
|||
#define TITLE_OPERATION_SP "Ajustes" |
|||
#define TITLE_ADJUST_SP "Temp." |
|||
#define TITLE_WIRELESS_SP "Wireless" |
|||
#define TITLE_FILAMENT_SP "Filamento" |
|||
#define TITLE_ABOUT_SP "Acerca" |
|||
#define TITLE_FAN_SP "Ventilador" |
|||
#define TITLE_LANGUAGE_SP "Language" |
|||
#define TITLE_PAUSE_SP "Pausar" |
|||
#define TITLE_CHANGESPEED_SP "Velocidad" |
|||
#define TILE_TOOL_SP "Ajustes" |
|||
#define TITLE_CLOUD_TEXT_SP "Cloud" |
|||
#define TITLE_DIALOG_CONFIRM_SP "Confirmar" |
|||
#define TITLE_FILESYS_SP "Puerto" |
|||
#define TITLE_ZOFFSET_SP "Z Offset" |
|||
|
|||
#define AUTO_SHUTDOWN_SP "Auto" |
|||
#define MANUAL_SHUTDOWN_SP "manual" |
|||
|
|||
#define DIALOG_CONFIRM_SP "Confirmar" |
|||
#define DIALOG_CANCLE_SP "Cancelar" |
|||
#define DIALOG_OK_SP "OK" |
|||
#define DIALOG_RESET_SP "Resetear" |
|||
#define DIALOG_RETRY_SP "Reintentar" |
|||
#define DIALOG_DISABLE_SP "Desactivar" |
|||
#define DIALOG_PRINT_MODEL_SP "¿Está seguro?" |
|||
#define DIALOG_CANCEL_PRINT_SP "¿Está seguro que desea detener la impresión?" |
|||
|
|||
#define DIALOG_RETRY_SP "Reintentar" |
|||
#define DIALOG_STOP_SP "Stop" |
|||
#define DIALOG_REPRINT_FROM_BREAKPOINT_SP "Reprint from breakpoint?" |
|||
//#define DIALOG_UNBIND_PRINTER_SP "Unbind the printer?"
|
|||
#define DIALOG_ERROR_TIPS1_SP "Error:archivo no encontrado, \npor favor insertar SD o disco USB." |
|||
#define DIALOG_ERROR_TIPS2_SP "error:transacción fallida, \nconfigurar baudrate del \ndisplay para la placa base!" |
|||
#define DIALOG_ERROR_TIPS3_SP "Error : nombre de archivo o \nruta demasiado largo!" |
|||
#define DIALOG_CLOSE_MACHINE_SP "Closing machine......" |
|||
#define DIALOG_UNBIND_PRINTER_SP "Unbind the printer?" |
|||
#define DIALOG_FILAMENT_NO_PRESS_SP "Filament detection switch is not pressed" |
|||
#define DIALOG_PRINT_FINISH_SP "¡La impresión está completa!" |
|||
#define DIALOG_PRINT_TIME_SP "Tiempo de impresión: " |
|||
#define DIALOG_REPRINT_SP "Print again" |
|||
#define DIALOG_WIFI_ENABLE_TIPS_SP "The wifi module is being configured,\nplease wait a moment....." |
|||
|
|||
#define PRINTING_SP "Imprimiendo" |
|||
#define PRINTING_AJUSTES_SP "Ajustes" |
|||
#define PRINTING_PAUSAR_SP "Pausar" |
|||
|
|||
#define MESSEGE_PAUSING_SP "Aparcando..." |
|||
#define MESSEGE_CHANGING_SP "Esperando para iniciar el cambio de filamento" |
|||
#define MESSEGE_UNLOAD_SP "Espere para liberar el filamento" |
|||
#define MESSEGE_WAITING_SP "Pulsar el botón para reanudar impresión" |
|||
#define MESSEGE_INSERT_SP "Inserte el filamento y pulse el botón para continuar..." |
|||
#define MESSEGE_LOAD_SP "Espere para purgar el filamento" |
|||
#define MESSEGE_PURGE_SP "Espere para purgar el filamento" |
|||
#define MESSEGE_RESUME_SP "Esperando impresora para reanudar..." |
|||
#define MESSEGE_HEAT_SP "Pulse el botón para calentar la boquilla" |
|||
#define MESSEGE_HEATING_SP "Calentando boquilla Espere por favor..." |
|||
#define MESSEGE_OPTION_SP "¿Purgar más o continuar con la impresión?" |
|||
#define MESSEGE_PURGE_MORE_SP "Purga" |
|||
#define MESSEGE_CONTINUE_PRINT_SP "Impresión" |
@ -0,0 +1,273 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
|
|||
#include "../../../../inc/MarlinConfig.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#if defined(ARDUINO_ARCH_STM32F1) && PIN_EXISTS(FSMC_CS) // FSMC on 100/144 pins SoCs
|
|||
|
|||
#include <libmaple/fsmc.h> |
|||
#include <libmaple/gpio.h> |
|||
#include <libmaple/dma.h> |
|||
#include <boards.h> |
|||
|
|||
/* Timing configuration */ |
|||
#define FSMC_ADDRESS_SETUP_TIME 15// AddressSetupTime
|
|||
#define FSMC_DATA_SETUP_TIME 15// DataSetupTime
|
|||
|
|||
void LCD_IO_Init(uint8_t cs, uint8_t rs); |
|||
void LCD_IO_WriteData(uint16_t RegValue); |
|||
void LCD_IO_WriteReg(uint16_t Reg); |
|||
uint16_t LCD_IO_ReadData(uint16_t RegValue); |
|||
uint32_t LCD_IO_ReadData(uint16_t RegValue, uint8_t ReadSize); |
|||
uint16_t ILI9488_ReadRAM(); |
|||
#ifdef LCD_USE_DMA_FSMC |
|||
void LCD_IO_WriteMultiple(uint16_t data, uint32_t count); |
|||
void LCD_IO_WriteSequence(uint16_t *data, uint16_t length); |
|||
#endif |
|||
|
|||
/**
|
|||
* FSMC LCD IO |
|||
*/ |
|||
#define __ASM __asm |
|||
#define __STATIC_INLINE static inline |
|||
|
|||
__attribute__((always_inline)) __STATIC_INLINE void __DSB() {__ASM volatile ("dsb 0xF" ::: "memory");} |
|||
|
|||
#define FSMC_CS_NE1 PD7 |
|||
|
|||
#if ENABLED(STM32_XL_DENSITY) |
|||
#define FSMC_CS_NE2 PG9 |
|||
#define FSMC_CS_NE3 PG10 |
|||
#define FSMC_CS_NE4 PG12 |
|||
|
|||
#define FSMC_RS_A0 PF0 |
|||
#define FSMC_RS_A1 PF1 |
|||
#define FSMC_RS_A2 PF2 |
|||
#define FSMC_RS_A3 PF3 |
|||
#define FSMC_RS_A4 PF4 |
|||
#define FSMC_RS_A5 PF5 |
|||
#define FSMC_RS_A6 PF12 |
|||
#define FSMC_RS_A7 PF13 |
|||
#define FSMC_RS_A8 PF14 |
|||
#define FSMC_RS_A9 PF15 |
|||
#define FSMC_RS_A10 PG0 |
|||
#define FSMC_RS_A11 PG1 |
|||
#define FSMC_RS_A12 PG2 |
|||
#define FSMC_RS_A13 PG3 |
|||
#define FSMC_RS_A14 PG4 |
|||
#define FSMC_RS_A15 PG5 |
|||
#endif |
|||
|
|||
#define FSMC_RS_A16 PD11 |
|||
#define FSMC_RS_A17 PD12 |
|||
#define FSMC_RS_A18 PD13 |
|||
#define FSMC_RS_A19 PE3 |
|||
#define FSMC_RS_A20 PE4 |
|||
#define FSMC_RS_A21 PE5 |
|||
#define FSMC_RS_A22 PE6 |
|||
#define FSMC_RS_A23 PE2 |
|||
|
|||
#if ENABLED(STM32_XL_DENSITY) |
|||
#define FSMC_RS_A24 PG13 |
|||
#define FSMC_RS_A25 PG14 |
|||
#endif |
|||
|
|||
static uint8_t fsmcInit = 0; |
|||
|
|||
typedef struct { |
|||
__IO uint16_t REG; |
|||
__IO uint16_t RAM; |
|||
} LCD_CONTROLLER_TypeDef; |
|||
|
|||
LCD_CONTROLLER_TypeDef *LCD; |
|||
|
|||
void LCD_IO_Init(uint8_t cs, uint8_t rs) { |
|||
uint32_t controllerAddress; |
|||
|
|||
if (fsmcInit) return; |
|||
fsmcInit = 1; |
|||
|
|||
switch (cs) { |
|||
case FSMC_CS_NE1: controllerAddress = (uint32_t)FSMC_NOR_PSRAM_REGION1; break; |
|||
#if ENABLED(STM32_XL_DENSITY) |
|||
case FSMC_CS_NE2: controllerAddress = (uint32_t)FSMC_NOR_PSRAM_REGION2; break; |
|||
case FSMC_CS_NE3: controllerAddress = (uint32_t)FSMC_NOR_PSRAM_REGION3; break; |
|||
case FSMC_CS_NE4: controllerAddress = (uint32_t)FSMC_NOR_PSRAM_REGION4; break; |
|||
#endif |
|||
default: return; |
|||
} |
|||
|
|||
#define _ORADDR(N) controllerAddress |= (_BV32(N) - 2) |
|||
|
|||
switch (rs) { |
|||
#if ENABLED(STM32_XL_DENSITY) |
|||
case FSMC_RS_A0: _ORADDR( 1); break; |
|||
case FSMC_RS_A1: _ORADDR( 2); break; |
|||
case FSMC_RS_A2: _ORADDR( 3); break; |
|||
case FSMC_RS_A3: _ORADDR( 4); break; |
|||
case FSMC_RS_A4: _ORADDR( 5); break; |
|||
case FSMC_RS_A5: _ORADDR( 6); break; |
|||
case FSMC_RS_A6: _ORADDR( 7); break; |
|||
case FSMC_RS_A7: _ORADDR( 8); break; |
|||
case FSMC_RS_A8: _ORADDR( 9); break; |
|||
case FSMC_RS_A9: _ORADDR(10); break; |
|||
case FSMC_RS_A10: _ORADDR(11); break; |
|||
case FSMC_RS_A11: _ORADDR(12); break; |
|||
case FSMC_RS_A12: _ORADDR(13); break; |
|||
case FSMC_RS_A13: _ORADDR(14); break; |
|||
case FSMC_RS_A14: _ORADDR(15); break; |
|||
case FSMC_RS_A15: _ORADDR(16); break; |
|||
#endif |
|||
case FSMC_RS_A16: _ORADDR(17); break; |
|||
case FSMC_RS_A17: _ORADDR(18); break; |
|||
case FSMC_RS_A18: _ORADDR(19); break; |
|||
case FSMC_RS_A19: _ORADDR(20); break; |
|||
case FSMC_RS_A20: _ORADDR(21); break; |
|||
case FSMC_RS_A21: _ORADDR(22); break; |
|||
case FSMC_RS_A22: _ORADDR(23); break; |
|||
case FSMC_RS_A23: _ORADDR(24); break; |
|||
#if ENABLED(STM32_XL_DENSITY) |
|||
case FSMC_RS_A24: _ORADDR(25); break; |
|||
case FSMC_RS_A25: _ORADDR(26); break; |
|||
#endif |
|||
default: return; |
|||
} |
|||
|
|||
rcc_clk_enable(RCC_FSMC); |
|||
|
|||
gpio_set_mode(GPIOD, 14, GPIO_AF_OUTPUT_PP); // FSMC_D00
|
|||
gpio_set_mode(GPIOD, 15, GPIO_AF_OUTPUT_PP); // FSMC_D01
|
|||
gpio_set_mode(GPIOD, 0, GPIO_AF_OUTPUT_PP);// FSMC_D02
|
|||
gpio_set_mode(GPIOD, 1, GPIO_AF_OUTPUT_PP);// FSMC_D03
|
|||
gpio_set_mode(GPIOE, 7, GPIO_AF_OUTPUT_PP);// FSMC_D04
|
|||
gpio_set_mode(GPIOE, 8, GPIO_AF_OUTPUT_PP);// FSMC_D05
|
|||
gpio_set_mode(GPIOE, 9, GPIO_AF_OUTPUT_PP);// FSMC_D06
|
|||
gpio_set_mode(GPIOE, 10, GPIO_AF_OUTPUT_PP); // FSMC_D07
|
|||
gpio_set_mode(GPIOE, 11, GPIO_AF_OUTPUT_PP); // FSMC_D08
|
|||
gpio_set_mode(GPIOE, 12, GPIO_AF_OUTPUT_PP); // FSMC_D09
|
|||
gpio_set_mode(GPIOE, 13, GPIO_AF_OUTPUT_PP); // FSMC_D10
|
|||
gpio_set_mode(GPIOE, 14, GPIO_AF_OUTPUT_PP); // FSMC_D11
|
|||
gpio_set_mode(GPIOE, 15, GPIO_AF_OUTPUT_PP); // FSMC_D12
|
|||
gpio_set_mode(GPIOD, 8, GPIO_AF_OUTPUT_PP);// FSMC_D13
|
|||
gpio_set_mode(GPIOD, 9, GPIO_AF_OUTPUT_PP);// FSMC_D14
|
|||
gpio_set_mode(GPIOD, 10, GPIO_AF_OUTPUT_PP); // FSMC_D15
|
|||
|
|||
gpio_set_mode(GPIOD, 4, GPIO_AF_OUTPUT_PP);// FSMC_NOE
|
|||
gpio_set_mode(GPIOD, 5, GPIO_AF_OUTPUT_PP);// FSMC_NWE
|
|||
|
|||
gpio_set_mode(PIN_MAP[cs].gpio_device, PIN_MAP[cs].gpio_bit, GPIO_AF_OUTPUT_PP); //FSMC_CS_NEx
|
|||
gpio_set_mode(PIN_MAP[rs].gpio_device, PIN_MAP[rs].gpio_bit, GPIO_AF_OUTPUT_PP); //FSMC_RS_Ax
|
|||
|
|||
#if ENABLED(STM32_XL_DENSITY) |
|||
FSMC_NOR_PSRAM4_BASE->BCR = FSMC_BCR_WREN | FSMC_BCR_MTYP_SRAM | FSMC_BCR_MWID_16BITS | FSMC_BCR_MBKEN; |
|||
FSMC_NOR_PSRAM4_BASE->BTR = (FSMC_DATA_SETUP_TIME << 8) | FSMC_ADDRESS_SETUP_TIME; |
|||
#else // PSRAM1 for STM32F103V (high density)
|
|||
FSMC_NOR_PSRAM1_BASE->BCR = FSMC_BCR_WREN | FSMC_BCR_MTYP_SRAM | FSMC_BCR_MWID_16BITS | FSMC_BCR_MBKEN; |
|||
FSMC_NOR_PSRAM1_BASE->BTR = (FSMC_DATA_SETUP_TIME << 8) | FSMC_ADDRESS_SETUP_TIME; |
|||
#endif |
|||
|
|||
afio_remap(AFIO_REMAP_FSMC_NADV); |
|||
|
|||
LCD = (LCD_CONTROLLER_TypeDef*)controllerAddress; |
|||
} |
|||
|
|||
void LCD_IO_WriteData(uint16_t RegValue) { |
|||
LCD->RAM = RegValue; |
|||
__DSB(); |
|||
} |
|||
|
|||
void LCD_IO_WriteReg(uint16_t Reg) { |
|||
LCD->REG = Reg; |
|||
__DSB(); |
|||
} |
|||
|
|||
uint16_t LCD_IO_ReadData(uint16_t RegValue) { |
|||
LCD->REG = RegValue; |
|||
__DSB(); |
|||
|
|||
return LCD->RAM; |
|||
} |
|||
|
|||
uint16_t ILI9488_ReadRAM() { |
|||
uint16_t data; |
|||
data = LCD->RAM; |
|||
return data; |
|||
} |
|||
|
|||
uint32_t LCD_IO_ReadData(uint16_t RegValue, uint8_t ReadSize) { |
|||
volatile uint32_t data; |
|||
LCD->REG = RegValue; |
|||
__DSB(); |
|||
|
|||
data = LCD->RAM; // dummy read
|
|||
data = LCD->RAM & 0x00FF; |
|||
|
|||
while (--ReadSize) { |
|||
data <<= 8; |
|||
data |= (LCD->RAM & 0x00FF); |
|||
} |
|||
return uint32_t(data); |
|||
} |
|||
|
|||
#if ENABLED(LCD_USE_DMA_FSMC) |
|||
|
|||
void LCD_IO_WriteMultiple(uint16_t color, uint32_t count) { |
|||
while (count > 0) { |
|||
dma_setup_transfer(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, &color, DMA_SIZE_16BITS, &LCD->RAM, DMA_SIZE_16BITS, DMA_MEM_2_MEM); |
|||
dma_set_num_transfers(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, count > 65535 ? 65535 : count); |
|||
dma_clear_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL); |
|||
dma_enable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL); |
|||
|
|||
while ((dma_get_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL) & 0x0A) == 0) {} |
|||
dma_disable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL); |
|||
|
|||
count = count > 65535 ? count - 65535 : 0; |
|||
} |
|||
} |
|||
|
|||
void LCD_IO_WriteSequence(uint16_t *data, uint16_t length) { |
|||
dma_setup_transfer(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, data, DMA_SIZE_16BITS, &LCD->RAM, DMA_SIZE_16BITS, DMA_MEM_2_MEM | DMA_PINC_MODE); |
|||
dma_set_num_transfers(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, length); |
|||
dma_clear_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL); |
|||
dma_enable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL); |
|||
|
|||
while ((dma_get_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL) & 0x0A) == 0) {} |
|||
dma_disable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL); |
|||
} |
|||
|
|||
void LCD_IO_WriteSequence_Async(uint16_t *data, uint16_t length) { |
|||
dma_setup_transfer(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, data, DMA_SIZE_16BITS, &LCD->RAM, DMA_SIZE_16BITS, DMA_MEM_2_MEM | DMA_PINC_MODE); |
|||
dma_set_num_transfers(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, length); |
|||
dma_clear_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL); |
|||
dma_enable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL); |
|||
} |
|||
|
|||
void LCD_IO_WaitSequence_Async() { |
|||
while ((dma_get_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL) & 0x0A) == 0) {} |
|||
dma_disable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL); |
|||
} |
|||
|
|||
#endif // LCD_USE_DMA_FSMC
|
|||
#endif // ARDUINO_ARCH_STM32F1 && FSMC_CS_PIN
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,30 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { /* C-declarations for C++ */ |
|||
#endif |
|||
|
|||
#ifdef __cplusplus |
|||
} /* C-declarations for C++ */ |
|||
#endif |
@ -0,0 +1,791 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
|
|||
/**
|
|||
* @file lcd_lvgl_configuration.c |
|||
* @date 2020-02-21 |
|||
*/ |
|||
|
|||
#include "../../../../inc/MarlinConfigPre.h" |
|||
|
|||
#if ENABLED(TFT_LITTLE_VGL_UI) |
|||
|
|||
#include "../../../../MarlinCore.h" |
|||
|
|||
#include "tft_lvgl_configuration.h" |
|||
#include "lvgl.h" |
|||
#include "../../../../feature/touch/xpt2046.h" |
|||
#include "draw_ready_print.h" |
|||
#include "W25Qxx.h" |
|||
#include "pic_manager.h" |
|||
|
|||
#include "mks_hardware_test.h" |
|||
#include "draw_ui.h" |
|||
|
|||
#if ENABLED(POWER_LOSS_RECOVERY) |
|||
#include "../../../../feature/powerloss.h" |
|||
#endif |
|||
|
|||
#include <SPI.h> |
|||
|
|||
#if ENABLED(SPI_GRAPHICAL_TFT) |
|||
#include "SPI_TFT.h" |
|||
#endif |
|||
|
|||
//#include "../../Configuration.h"
|
|||
//#include "../../src/core/macros.h"
|
|||
|
|||
extern void LCD_IO_Init(uint8_t cs, uint8_t rs); |
|||
extern void LCD_IO_WriteData(uint16_t RegValue); |
|||
extern void LCD_IO_WriteReg(uint16_t Reg); |
|||
|
|||
extern void LCD_IO_WriteMultiple(uint16_t color, uint32_t count); |
|||
|
|||
extern void init_gb2312_font(); |
|||
|
|||
static lv_disp_buf_t disp_buf; |
|||
//static lv_color_t buf[LV_HOR_RES_MAX * 18];
|
|||
//static lv_color_t buf[10*5];
|
|||
//extern lv_obj_t * scr;
|
|||
#if ENABLED(SDSUPPORT) |
|||
extern void UpdatePic(); |
|||
extern void UpdateFont(); |
|||
#endif |
|||
uint16_t DeviceCode = 0x9488; |
|||
extern uint8_t sel_id; |
|||
|
|||
#define SetCs |
|||
#define ClrCs |
|||
|
|||
#define HDP 799//Horizontal Display Period //**
|
|||
#define HT 1000//Horizontal Total
|
|||
#define HPS 51//LLINE Pulse Start Position
|
|||
#define LPS 3 // Horizontal Display Period Start Position
|
|||
#define HPW 8 // LLINE Pulse Width
|
|||
|
|||
#define VDP 479//Vertical Display Period
|
|||
#define VT 530//Vertical Total
|
|||
#define VPS 24// LFRAME Pulse Start Position
|
|||
#define FPS 23//Vertical Display Period Start Positio
|
|||
#define VPW 3 // LFRAME Pulse Width //**
|
|||
|
|||
#define MAX_HZ_POSX HDP+1 |
|||
#define MAX_HZ_POSY VDP+1 |
|||
|
|||
extern uint8_t gcode_preview_over, flash_preview_begin, default_preview_flg; |
|||
|
|||
void SysTick_Callback() { |
|||
lv_tick_inc(1); |
|||
print_time_count(); |
|||
} |
|||
|
|||
void tft_set_cursor(uint16_t x, uint16_t y) { |
|||
#if 0 |
|||
if (DeviceCode == 0x8989) { |
|||
LCD_WriteReg(0x004E, y); //行
|
|||
LCD_WriteReg(0x004F, x); //列
|
|||
} |
|||
else if ((DeviceCode == 0x9919)) { |
|||
LCD_WriteReg(0x004E, x); // 行
|
|||
LCD_WriteReg(0x004F, y); // 列
|
|||
} |
|||
else if ((DeviceCode == 0x5761)) { //SSD1963
|
|||
LCD_WrtReg(0x002A); |
|||
LCD_WrtRAM(x >> 8); |
|||
LCD_WrtRAM(x & 0x00FF); |
|||
LCD_WrtRAM(HDP >> 8); |
|||
LCD_WrtRAM(HDP & 0x00FF); |
|||
LCD_WrtReg(0x002B); |
|||
LCD_WrtRAM(y >> 8); |
|||
LCD_WrtRAM(y & 0x00FF); |
|||
LCD_WrtRAM(VDP >> 8); |
|||
LCD_WrtRAM(VDP & 0x00FF); |
|||
} |
|||
else if (DeviceCode == 0x9488) { |
|||
ILI9488_WriteCmd(0x002A); |
|||
ILI9488_WriteData(x >> 8); |
|||
ILI9488_WriteData(x & 0x00FF); |
|||
ILI9488_WriteData(x >> 8); |
|||
ILI9488_WriteData(x & 0x00FF); |
|||
//ILI9488_WriteData(0x01);
|
|||
//ILI9488_WriteData(0xDF);
|
|||
ILI9488_WriteCmd(0x002B); |
|||
ILI9488_WriteData(y >> 8); |
|||
ILI9488_WriteData(y & 0x00FF); |
|||
ILI9488_WriteData(y >> 8); |
|||
ILI9488_WriteData(y & 0x00FF); |
|||
//ILI9488_WriteData(0x01);
|
|||
//ILI9488_WriteData(0x3F);
|
|||
} |
|||
else { |
|||
LCD_WriteReg(0x0020, y); // 行
|
|||
LCD_WriteReg(0x0021, 0x13f - x); // 列
|
|||
} |
|||
#else // if 0
|
|||
LCD_IO_WriteReg(0x002A); |
|||
LCD_IO_WriteData(x >> 8); |
|||
LCD_IO_WriteData(x & 0x00FF); |
|||
LCD_IO_WriteData(x >> 8); |
|||
LCD_IO_WriteData(x & 0x00FF); |
|||
//ILI9488_WriteData(0x01);
|
|||
//ILI9488_WriteData(0xDF);
|
|||
LCD_IO_WriteReg(0x002B); |
|||
LCD_IO_WriteData(y >> 8); |
|||
LCD_IO_WriteData(y & 0x00FF); |
|||
LCD_IO_WriteData(y >> 8); |
|||
LCD_IO_WriteData(y & 0x00FF); |
|||
//ILI9488_WriteData(0x01);
|
|||
//ILI9488_WriteData(0x3F);
|
|||
#endif // if 0
|
|||
} |
|||
|
|||
void LCD_WriteRAM_Prepare(void) { |
|||
#if 0 |
|||
if ((DeviceCode == 0x9325) || (DeviceCode == 0x9328) || (DeviceCode == 0x8989)) { |
|||
ClrCs |
|||
LCD->LCD_REG = R34; |
|||
SetCs |
|||
} |
|||
else { |
|||
LCD_WrtReg(0x002C); |
|||
} |
|||
#else |
|||
LCD_IO_WriteReg(0x002C); |
|||
#endif |
|||
} |
|||
|
|||
void tft_set_point(uint16_t x, uint16_t y, uint16_t point) { |
|||
//if (DeviceCode == 0x9488) {
|
|||
if ((x > 480) || (y > 320)) return; |
|||
//}
|
|||
//**if ( (x>320)||(y>240) ) return;
|
|||
tft_set_cursor(x, y); /*设置光标位置*/ |
|||
|
|||
LCD_WriteRAM_Prepare(); /* 开始写入GRAM*/ |
|||
//LCD_WriteRAM(point);
|
|||
LCD_IO_WriteData(point); |
|||
} |
|||
|
|||
void LCD_WriteReg(uint16_t LCD_Reg, uint16_t LCD_RegValue) { |
|||
/* Write 16-bit Index, then Write Reg */ |
|||
ClrCs |
|||
LCD_IO_WriteReg(LCD_Reg); |
|||
/* Write 16-bit Reg */ |
|||
LCD_IO_WriteData(LCD_RegValue); |
|||
SetCs |
|||
} |
|||
|
|||
void ili9320_SetWindows(uint16_t StartX, uint16_t StartY, uint16_t width, uint16_t heigh) { |
|||
uint16_t s_h, s_l, e_h, e_l; |
|||
|
|||
uint16_t xEnd, yEnd; |
|||
xEnd = StartX + width; |
|||
yEnd = StartY + heigh - 1; |
|||
if (DeviceCode == 0x8989) { |
|||
/*LCD_WriteReg(0x0044, (StartX & 0xFF) | (xEnd << 8));
|
|||
LCD_WriteReg(0x0045, StartY); |
|||
LCD_WriteReg(0x0046, yEnd);*/ |
|||
LCD_WriteReg(0x0044, (StartY & 0xFF) | (yEnd << 8)); |
|||
LCD_WriteReg(0x0045, StartX); |
|||
LCD_WriteReg(0x0046, xEnd); |
|||
} |
|||
else if (DeviceCode == 0x9488) { |
|||
s_h = (StartX >> 8) & 0x00ff; |
|||
s_l = StartX & 0x00ff; |
|||
e_h = ((StartX + width - 1) >> 8) & 0x00ff; |
|||
e_l = (StartX + width - 1) & 0x00ff; |
|||
|
|||
LCD_IO_WriteReg(0x002A); |
|||
LCD_IO_WriteData(s_h); |
|||
LCD_IO_WriteData(s_l); |
|||
LCD_IO_WriteData(e_h); |
|||
LCD_IO_WriteData(e_l); |
|||
|
|||
s_h = (StartY >> 8) & 0x00ff; |
|||
s_l = StartY & 0x00ff; |
|||
e_h = ((StartY + heigh - 1) >> 8) & 0x00ff; |
|||
e_l = (StartY + heigh - 1) & 0x00ff; |
|||
|
|||
LCD_IO_WriteReg(0x002B); |
|||
LCD_IO_WriteData(s_h); |
|||
LCD_IO_WriteData(s_l); |
|||
LCD_IO_WriteData(e_h); |
|||
LCD_IO_WriteData(e_l); |
|||
} |
|||
else if ((DeviceCode == 0x9325) || (DeviceCode == 0x9328) || (DeviceCode == 0x1505)) { |
|||
/* LCD_WriteReg(0x0050, StartX);
|
|||
LCD_WriteReg(0x0052, StartY); |
|||
LCD_WriteReg(0x0051, xEnd); |
|||
LCD_WriteReg(0x0053, yEnd);*/ |
|||
LCD_WriteReg(0x0050, StartY); //Specify the start/end positions of the window address in the horizontal direction by an address unit
|
|||
LCD_WriteReg(0x0051, yEnd); //Specify the start positions of the window address in the vertical direction by an address unit
|
|||
LCD_WriteReg(0x0052, 320 - xEnd); |
|||
LCD_WriteReg(0x0053, 320 - StartX - 1); //Specify the end positions of the window address in the vertical direction by an address unit
|
|||
|
|||
} |
|||
else { |
|||
s_h = (StartX >> 8) & 0xFF; |
|||
s_l = StartX & 0xFF; |
|||
e_h = ((StartX + width - 1) >> 8) & 0xFF; |
|||
e_l = (StartX + width - 1) & 0xFF; |
|||
|
|||
LCD_IO_WriteReg(0x2A); |
|||
LCD_IO_WriteData(s_h); |
|||
LCD_IO_WriteData(s_l); |
|||
LCD_IO_WriteData(e_h); |
|||
LCD_IO_WriteData(e_l); |
|||
|
|||
s_h = (StartY >> 8) & 0xFF; |
|||
s_l = StartY & 0xFF; |
|||
e_h = ((StartY + heigh - 1) >> 8) & 0xFF; |
|||
e_l = (StartY + heigh - 1) & 0xFF; |
|||
|
|||
LCD_IO_WriteReg(0x2B); |
|||
LCD_IO_WriteData(s_h); |
|||
LCD_IO_WriteData(s_l); |
|||
LCD_IO_WriteData(e_h); |
|||
LCD_IO_WriteData(e_l); |
|||
} |
|||
} |
|||
|
|||
void LCD_Clear(uint16_t Color) { |
|||
uint32_t index = 0; |
|||
unsigned int count; |
|||
|
|||
if (DeviceCode == 0x9488) { |
|||
tft_set_cursor(0, 0); |
|||
ili9320_SetWindows(0, 0, 480, 320); |
|||
LCD_WriteRAM_Prepare(); |
|||
//index = (160*480);
|
|||
for (index = 0; index < 320 * 480; index++) |
|||
LCD_IO_WriteData(Color); |
|||
//LCD_IO_WriteMultiple(Color, (480*320));
|
|||
//while(index --) LCD_IO_WriteData(Color);
|
|||
} |
|||
else if (DeviceCode == 0x5761) { |
|||
LCD_IO_WriteReg(0x002a); |
|||
LCD_IO_WriteData(0); |
|||
LCD_IO_WriteData(0); |
|||
LCD_IO_WriteData(HDP >> 8); |
|||
LCD_IO_WriteData(HDP & 0x00ff); |
|||
LCD_IO_WriteReg(0x002b); |
|||
LCD_IO_WriteData(0); |
|||
LCD_IO_WriteData(0); |
|||
LCD_IO_WriteData(VDP >> 8); |
|||
LCD_IO_WriteData(VDP & 0x00ff); |
|||
LCD_IO_WriteReg(0x002c); |
|||
LCD_IO_WriteReg(0x002c); |
|||
for (count = 0; count < (HDP + 1) * (VDP + 1); count++) |
|||
LCD_IO_WriteData(Color); |
|||
} |
|||
else { |
|||
tft_set_cursor(0, 0); |
|||
LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */ |
|||
for (index = 0; index < 76800; index++) |
|||
LCD_IO_WriteData(Color); |
|||
} |
|||
} |
|||
|
|||
extern uint16_t ILI9488_ReadRAM(); |
|||
|
|||
#if DISABLED(SPI_GRAPHICAL_TFT) |
|||
|
|||
void init_tft() { |
|||
uint16_t i; |
|||
//************* Start Initial Sequence **********//
|
|||
|
|||
LCD_IO_Init(FSMC_CS_PIN, FSMC_RS_PIN); |
|||
|
|||
_delay_ms(5); |
|||
|
|||
LCD_IO_WriteReg(0x00D3); |
|||
DeviceCode = ILI9488_ReadRAM(); //dummy read
|
|||
DeviceCode = ILI9488_ReadRAM(); |
|||
DeviceCode = ILI9488_ReadRAM(); |
|||
DeviceCode <<= 8; |
|||
DeviceCode |= ILI9488_ReadRAM(); |
|||
|
|||
if (DeviceCode == 0x9488) { |
|||
LCD_IO_WriteReg(0x00E0); |
|||
LCD_IO_WriteData(0x0000); |
|||
LCD_IO_WriteData(0x0007); |
|||
LCD_IO_WriteData(0x000f); |
|||
LCD_IO_WriteData(0x000D); |
|||
LCD_IO_WriteData(0x001B); |
|||
LCD_IO_WriteData(0x000A); |
|||
LCD_IO_WriteData(0x003c); |
|||
LCD_IO_WriteData(0x0078); |
|||
LCD_IO_WriteData(0x004A); |
|||
LCD_IO_WriteData(0x0007); |
|||
LCD_IO_WriteData(0x000E); |
|||
LCD_IO_WriteData(0x0009); |
|||
LCD_IO_WriteData(0x001B); |
|||
LCD_IO_WriteData(0x001e); |
|||
LCD_IO_WriteData(0x000f); |
|||
|
|||
LCD_IO_WriteReg(0x00E1); |
|||
LCD_IO_WriteData(0x0000); |
|||
LCD_IO_WriteData(0x0022); |
|||
LCD_IO_WriteData(0x0024); |
|||
LCD_IO_WriteData(0x0006); |
|||
LCD_IO_WriteData(0x0012); |
|||
LCD_IO_WriteData(0x0007); |
|||
LCD_IO_WriteData(0x0036); |
|||
LCD_IO_WriteData(0x0047); |
|||
LCD_IO_WriteData(0x0047); |
|||
LCD_IO_WriteData(0x0006); |
|||
LCD_IO_WriteData(0x000a); |
|||
LCD_IO_WriteData(0x0007); |
|||
LCD_IO_WriteData(0x0030); |
|||
LCD_IO_WriteData(0x0037); |
|||
LCD_IO_WriteData(0x000f); |
|||
|
|||
LCD_IO_WriteReg(0x00C0); |
|||
LCD_IO_WriteData(0x0010); |
|||
LCD_IO_WriteData(0x0010); |
|||
|
|||
LCD_IO_WriteReg(0x00C1); |
|||
LCD_IO_WriteData(0x0041); |
|||
|
|||
LCD_IO_WriteReg(0x00C5); |
|||
LCD_IO_WriteData(0x0000); |
|||
LCD_IO_WriteData(0x0022); |
|||
LCD_IO_WriteData(0x0080); |
|||
|
|||
LCD_IO_WriteReg(0x0036); |
|||
//ILI9488_WriteData(0x0068);
|
|||
//if (gCfgItems.overturn_180 != 0xEE)
|
|||
//{
|
|||
LCD_IO_WriteData(0x0068); |
|||
//}
|
|||
//else
|
|||
//{
|
|||
//ILI9488_WriteData(0x00A8);
|
|||
//}
|
|||
|
|||
LCD_IO_WriteReg(0x003A); //Interface Mode Control
|
|||
LCD_IO_WriteData(0x0055); |
|||
|
|||
LCD_IO_WriteReg(0x00B0); //Interface Mode Control
|
|||
LCD_IO_WriteData(0x0000); |
|||
LCD_IO_WriteReg(0x00B1); //Frame rate 70HZ
|
|||
LCD_IO_WriteData(0x00B0); |
|||
LCD_IO_WriteData(0x0011); |
|||
LCD_IO_WriteReg(0x00B4); |
|||
LCD_IO_WriteData(0x0002); |
|||
LCD_IO_WriteReg(0x00B6); //RGB/MCU Interface Control
|
|||
LCD_IO_WriteData(0x0002); |
|||
LCD_IO_WriteData(0x0042); |
|||
|
|||
LCD_IO_WriteReg(0x00B7); |
|||
LCD_IO_WriteData(0x00C6); |
|||
|
|||
//WriteComm(0xBE);
|
|||
//WriteData(0x00);
|
|||
//WriteData(0x04);
|
|||
|
|||
LCD_IO_WriteReg(0x00E9); |
|||
LCD_IO_WriteData(0x0000); |
|||
|
|||
LCD_IO_WriteReg(0x00F7); |
|||
LCD_IO_WriteData(0x00A9); |
|||
LCD_IO_WriteData(0x0051); |
|||
LCD_IO_WriteData(0x002C); |
|||
LCD_IO_WriteData(0x0082); |
|||
|
|||
LCD_IO_WriteReg(0x0011); |
|||
for (i = 0; i < 65535; i++); |
|||
LCD_IO_WriteReg(0x0029); |
|||
|
|||
ili9320_SetWindows(0, 0, 480, 320); |
|||
LCD_Clear(0x0000); |
|||
|
|||
OUT_WRITE(LCD_BACKLIGHT_PIN, HIGH); |
|||
} |
|||
} |
|||
|
|||
#endif // if DISABLED(SPI_GRAPHICAL_TFT)
|
|||
|
|||
extern uint8_t bmp_public_buf[17 * 1024]; |
|||
void tft_lvgl_init() { |
|||
//uint16_t test_id=0;
|
|||
W25QXX.init(SPI_QUARTER_SPEED); |
|||
//test_id=W25QXX.W25QXX_ReadID();
|
|||
#if ENABLED(SDSUPPORT) |
|||
UpdatePic(); |
|||
UpdateFont(); |
|||
#endif |
|||
|
|||
gCfgItems_init(); |
|||
ui_cfg_init(); |
|||
disp_language_init(); |
|||
//spi_flash_read_test();
|
|||
|
|||
#if ENABLED(SPI_GRAPHICAL_TFT) |
|||
SPI_TFT.spi_init(SPI_FULL_SPEED); |
|||
SPI_TFT.LCD_init(); |
|||
#else |
|||
init_tft(); |
|||
#endif |
|||
|
|||
lv_init(); |
|||
|
|||
lv_disp_buf_init(&disp_buf, bmp_public_buf, NULL, LV_HOR_RES_MAX * 18); /*Initialize the display buffer*/ |
|||
|
|||
lv_disp_drv_t disp_drv; /*Descriptor of a display driver*/ |
|||
lv_disp_drv_init(&disp_drv); /*Basic initialization*/ |
|||
disp_drv.flush_cb = my_disp_flush; /*Set your driver function*/ |
|||
disp_drv.buffer = &disp_buf; /*Assign the buffer to the display*/ |
|||
lv_disp_drv_register(&disp_drv); /*Finally register the driver*/ |
|||
|
|||
lv_indev_drv_t indev_drv; |
|||
lv_indev_drv_init(&indev_drv); /*Descriptor of a input device driver*/ |
|||
indev_drv.type = LV_INDEV_TYPE_POINTER; /*Touch pad is a pointer-like device*/ |
|||
indev_drv.read_cb = my_touchpad_read; /*Set your driver function*/ |
|||
lv_indev_drv_register(&indev_drv); /*Finally register the driver*/ |
|||
|
|||
systick_attach_callback(SysTick_Callback); |
|||
|
|||
init_gb2312_font(); |
|||
|
|||
tft_style_init(); |
|||
|
|||
filament_pin_setup(); |
|||
|
|||
#if ENABLED(POWER_LOSS_RECOVERY) |
|||
if (recovery.valid()) { |
|||
if (gCfgItems.from_flash_pic == 1) |
|||
flash_preview_begin = 1; |
|||
else |
|||
default_preview_flg = 1; |
|||
|
|||
uiCfg.print_state = REPRINTING; |
|||
|
|||
memset(public_buf_m, 0, sizeof(public_buf_m)); |
|||
strncpy(public_buf_m, recovery.info.sd_filename, sizeof(public_buf_m)); |
|||
card.printLongPath(public_buf_m); |
|||
|
|||
strncpy(list_file.long_name[sel_id], card.longFilename, sizeof(list_file.long_name[sel_id])); |
|||
|
|||
lv_draw_printing(); |
|||
} |
|||
else |
|||
#endif |
|||
lv_draw_ready_print(); |
|||
|
|||
#if ENABLED(MKS_TEST) |
|||
Test_GPIO(); |
|||
#endif |
|||
} |
|||
|
|||
#if 0 |
|||
void LCD_WriteRAM(uint16_t RGB_Code) { |
|||
#if 0 |
|||
ClrCs |
|||
/* Write 16-bit GRAM Reg */ |
|||
LCD->LCD_RAM = RGB_Code; |
|||
SetCs |
|||
#else |
|||
LCD_IO_WriteData(RGB_Code); |
|||
#endif |
|||
} |
|||
#endif |
|||
|
|||
void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p) { |
|||
#if ENABLED(SPI_GRAPHICAL_TFT) |
|||
uint16_t i, width, height; |
|||
uint16_t clr_temp; |
|||
uint8_t tbuf[480 * 2]; |
|||
|
|||
SPI_TFT.spi_init(SPI_FULL_SPEED); |
|||
|
|||
width = area->x2 - area->x1 + 1; |
|||
height = area->y2 - area->y1 + 1; |
|||
|
|||
for (int j = 0; j < height; j++) { |
|||
SPI_TFT.SetCursor(0, 0); |
|||
SPI_TFT.SetWindows((uint16_t)area->x1, (uint16_t)area->y1 + j, width, 1); |
|||
SPI_TFT.LCD_WriteRAM_Prepare(); |
|||
|
|||
for (i = 0; i < width * 2;) { |
|||
clr_temp = (uint16_t)(((uint16_t)color_p->ch.red << 11) |
|||
| ((uint16_t)color_p->ch.green << 5) |
|||
| ((uint16_t)color_p->ch.blue)); |
|||
|
|||
tbuf[i] = clr_temp >> 8; |
|||
tbuf[i + 1] = clr_temp; |
|||
i += 2; |
|||
color_p++; |
|||
} |
|||
SPI_TFT_CS_L; |
|||
SPI_TFT_DC_H; |
|||
SPI.dmaSend(tbuf, width * 2, true); |
|||
SPI_TFT_CS_H; |
|||
} |
|||
|
|||
lv_disp_flush_ready(disp); /* Indicate you are ready with the flushing*/ |
|||
|
|||
W25QXX.init(SPI_QUARTER_SPEED); |
|||
#else |
|||
#if 1 |
|||
uint16_t i, width, height; |
|||
uint16_t clr_temp; |
|||
#if 0 |
|||
int32_t x, y; |
|||
for (y = area->y1; y <= area->y2; y++) |
|||
for (x = area->x1; x <= area->x2; x++) { |
|||
//set_pixel(x, y, *color_p); /* Put a pixel to the display.*/
|
|||
clr_temp = (uint16_t)(((uint16_t)color_p->ch.red << 11) |
|||
| ((uint16_t)color_p->ch.green << 5) |
|||
| ((uint16_t)color_p->ch.blue)); |
|||
tft_set_point(x, y, clr_temp); |
|||
color_p++; |
|||
} |
|||
|
|||
#else |
|||
width = area->x2 - area->x1 + 1; |
|||
height = area->y2 - area->y1 + 1; |
|||
//tft_set_cursor((uint16_t)area->x1,(uint16_t)area->y1);
|
|||
ili9320_SetWindows((uint16_t)area->x1, (uint16_t)area->y1, width, height); |
|||
LCD_WriteRAM_Prepare(); |
|||
for (i = 0; i < width * height; i++) { |
|||
clr_temp = (uint16_t)(((uint16_t)color_p->ch.red << 11) |
|||
| ((uint16_t)color_p->ch.green << 5) |
|||
| ((uint16_t)color_p->ch.blue)); |
|||
LCD_IO_WriteData(clr_temp); |
|||
color_p++; |
|||
} |
|||
#endif |
|||
|
|||
lv_disp_flush_ready(disp); /* Indicate you are ready with the flushing*/ |
|||
#endif |
|||
#endif // SPI_GRAPHICAL_TFT
|
|||
} |
|||
|
|||
#define TICK_CYCLE 1 |
|||
|
|||
static int32_t touch_time1 = 0; |
|||
|
|||
unsigned int getTickDiff(unsigned int curTick, unsigned int lastTick) { |
|||
if (lastTick <= curTick) |
|||
return (curTick - lastTick) * TICK_CYCLE; |
|||
else |
|||
return (0xFFFFFFFF - lastTick + curTick) * TICK_CYCLE; |
|||
} |
|||
|
|||
#if ENABLED(SPI_GRAPHICAL_TFT) |
|||
|
|||
#ifndef USE_XPT2046 |
|||
#define USE_XPT2046 1 |
|||
#define XPT2046_XY_SWAP 1 |
|||
#define XPT2046_X_INV 1 |
|||
#define XPT2046_Y_INV 0 |
|||
#endif |
|||
|
|||
#if USE_XPT2046 |
|||
#define XPT2046_HOR_RES 480 |
|||
#define XPT2046_VER_RES 320 |
|||
#define XPT2046_X_MIN 201 |
|||
#define XPT2046_Y_MIN 164 |
|||
#define XPT2046_X_MAX 3919 |
|||
#define XPT2046_Y_MAX 3776 |
|||
#define XPT2046_AVG 4 |
|||
#define XPT2046_INV 1 |
|||
#endif |
|||
|
|||
#else |
|||
|
|||
#ifndef USE_XPT2046 |
|||
#define USE_XPT2046 1 |
|||
#define XPT2046_XY_SWAP 1 |
|||
#define XPT2046_X_INV 0 |
|||
#define XPT2046_Y_INV 1 |
|||
#endif |
|||
|
|||
#if USE_XPT2046 |
|||
#define XPT2046_HOR_RES 480 |
|||
#define XPT2046_VER_RES 320 |
|||
#define XPT2046_X_MIN 201 |
|||
#define XPT2046_Y_MIN 164 |
|||
#define XPT2046_X_MAX 3919 |
|||
#define XPT2046_Y_MAX 3776 |
|||
#define XPT2046_AVG 4 |
|||
#define XPT2046_INV 0 |
|||
#endif |
|||
|
|||
#endif |
|||
|
|||
static void xpt2046_corr(uint16_t *x, uint16_t *y) { |
|||
#if XPT2046_XY_SWAP |
|||
int16_t swap_tmp; |
|||
swap_tmp = *x; |
|||
*x = *y; |
|||
*y = swap_tmp; |
|||
#endif |
|||
if ((*x) > XPT2046_X_MIN) (*x) -= XPT2046_X_MIN; else (*x) = 0; |
|||
if ((*y) > XPT2046_Y_MIN) (*y) -= XPT2046_Y_MIN; else (*y) = 0; |
|||
(*x) = uint32_t(uint32_t(*x) * XPT2046_HOR_RES) / (XPT2046_X_MAX - XPT2046_X_MIN); |
|||
(*y) = uint32_t(uint32_t(*y) * XPT2046_VER_RES) / (XPT2046_Y_MAX - XPT2046_Y_MIN); |
|||
#if XPT2046_X_INV |
|||
(*x) = XPT2046_HOR_RES - (*x); |
|||
#endif |
|||
#if XPT2046_Y_INV |
|||
(*y) = XPT2046_VER_RES - (*y); |
|||
#endif |
|||
} |
|||
|
|||
#define times 4 |
|||
#define CHX 0x90// 0x90
|
|||
#define CHY 0xD0// 0xD0
|
|||
|
|||
int SPI2_ReadWrite2Bytes(void) { |
|||
volatile uint16_t ans = 0; |
|||
uint16_t temp = 0; |
|||
#if ENABLED(SPI_GRAPHICAL_TFT) |
|||
temp = SPI_TFT.spi_read_write_byte(0xFF); |
|||
ans = temp << 8; |
|||
temp = SPI_TFT.spi_read_write_byte(0xFF); |
|||
ans |= temp; |
|||
ans >>= 3; |
|||
#else |
|||
temp = W25QXX.spi_flash_read_write_byte(0xFF); |
|||
ans = temp << 8; |
|||
temp = W25QXX.spi_flash_read_write_byte(0xFF); |
|||
ans |= temp; |
|||
ans >>= 3; |
|||
#endif |
|||
return ans & 0x0FFF; |
|||
} |
|||
|
|||
uint16_t x_addata[times], y_addata[times]; |
|||
void XPT2046_Rd_Addata(uint16_t *X_Addata, uint16_t *Y_Addata) { |
|||
uint16_t i, j, k; |
|||
//int result;
|
|||
//#if ENABLED(TOUCH_BUTTONS)
|
|||
|
|||
#if ENABLED(SPI_GRAPHICAL_TFT) |
|||
SPI_TFT.spi_init(SPI_QUARTER_SPEED); |
|||
#endif |
|||
|
|||
for (i = 0; i < times; i++) { |
|||
#if ENABLED(SPI_GRAPHICAL_TFT) |
|||
OUT_WRITE(TOUCH_CS_PIN, LOW); |
|||
SPI_TFT.spi_read_write_byte(CHX); |
|||
y_addata[i] = SPI2_ReadWrite2Bytes(); |
|||
WRITE(TOUCH_CS_PIN, HIGH); |
|||
|
|||
OUT_WRITE(TOUCH_CS_PIN, LOW); |
|||
SPI_TFT.spi_read_write_byte(CHY); |
|||
x_addata[i] = SPI2_ReadWrite2Bytes(); |
|||
WRITE(TOUCH_CS_PIN, HIGH); |
|||
#else // #if ENABLED(TOUCH_BUTTONS)
|
|||
OUT_WRITE(TOUCH_CS_PIN, LOW); |
|||
W25QXX.spi_flash_read_write_byte(CHX); |
|||
y_addata[i] = SPI2_ReadWrite2Bytes(); |
|||
WRITE(TOUCH_CS_PIN, HIGH); |
|||
|
|||
OUT_WRITE(TOUCH_CS_PIN, LOW); |
|||
W25QXX.spi_flash_read_write_byte(CHY); |
|||
x_addata[i] = SPI2_ReadWrite2Bytes(); |
|||
WRITE(TOUCH_CS_PIN, HIGH); |
|||
#endif |
|||
|
|||
} |
|||
//#endif
|
|||
//result = x_addata[0];
|
|||
for (i = 0; i < times; i++) |
|||
for (j = i + 1; j < times; j++) |
|||
if (x_addata[j] > x_addata[i]) { |
|||
k = x_addata[j]; |
|||
x_addata[j] = x_addata[i]; |
|||
x_addata[i] = k; |
|||
} |
|||
if (x_addata[times / 2 - 1] - x_addata[times / 2] > 50) { |
|||
*X_Addata = *Y_Addata = 0; |
|||
return; |
|||
} |
|||
|
|||
*X_Addata = (x_addata[times / 2 - 1] + x_addata[times / 2]) / 2; |
|||
|
|||
//result = y_addata[0];
|
|||
for (i = 0; i < times; i++) |
|||
for (j = i + 1; j < times; j++) |
|||
if (y_addata[j] > y_addata[i]) { |
|||
k = y_addata[j]; |
|||
y_addata[j] = y_addata[i]; |
|||
y_addata[i] = k; |
|||
} |
|||
|
|||
if (y_addata[times / 2 - 1] - y_addata[times / 2] > 50) { |
|||
*X_Addata = *Y_Addata = 0; |
|||
return; |
|||
} |
|||
|
|||
*Y_Addata = (y_addata[times / 2 - 1] + y_addata[times / 2]) / 2; |
|||
} |
|||
|
|||
#define ADC_VALID_OFFSET 10 |
|||
|
|||
uint8_t TOUCH_PressValid(uint16_t _usX, uint16_t _usY) { |
|||
if ((_usX <= ADC_VALID_OFFSET) || (_usY <= ADC_VALID_OFFSET) |
|||
|| (_usX >= 4095 - ADC_VALID_OFFSET) || (_usY >= 4095 - ADC_VALID_OFFSET) |
|||
) return 0; |
|||
|
|||
return 1; |
|||
} |
|||
|
|||
static lv_coord_t last_x = 0, last_y = 0; |
|||
bool my_touchpad_read(lv_indev_drv_t * indev_driver, lv_indev_data_t * data) { |
|||
#if 1 |
|||
uint32_t tmpTime, diffTime = 0; |
|||
|
|||
tmpTime = millis(); |
|||
diffTime = getTickDiff(tmpTime, touch_time1); |
|||
/*Save the state and save the pressed coordinate*/ |
|||
//data->state = TOUCH_PressValid(last_x, last_y) ? LV_INDEV_STATE_PR : LV_INDEV_STATE_REL;
|
|||
//if (data->state == LV_INDEV_STATE_PR) ADS7843_Rd_Addata((u16 *)&last_x, (u16 *)&last_y);
|
|||
//touchpad_get_xy(&last_x, &last_y);
|
|||
/*Save the pressed coordinates and the state*/ |
|||
if (diffTime > 10) { |
|||
XPT2046_Rd_Addata((uint16_t *)&last_x, (uint16_t *)&last_y); |
|||
if (TOUCH_PressValid(last_x, last_y)) { |
|||
|
|||
data->state = LV_INDEV_STATE_PR; |
|||
|
|||
/*Set the coordinates (if released use the last pressed coordinates)*/ |
|||
|
|||
xpt2046_corr((uint16_t *)&last_x, (uint16_t *)&last_y); |
|||
data->point.x = last_x; |
|||
data->point.y = last_y; |
|||
|
|||
} |
|||
else { |
|||
data->state = LV_INDEV_STATE_REL; |
|||
} |
|||
touch_time1 = tmpTime; |
|||
} |
|||
|
|||
return false; /*Return `false` because we are not buffering and no more data to read*/ |
|||
#endif |
|||
} |
|||
|
|||
#endif // TFT_LITTLE_VGL_UI
|
@ -0,0 +1,46 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
/**
|
|||
* @file tft_lvgl_configuration.h |
|||
* @date 2020-02-21 |
|||
* */ |
|||
|
|||
//#ifdef __cplusplus
|
|||
//extern "C" {
|
|||
//#endif
|
|||
|
|||
#include "lvgl.h" |
|||
|
|||
void tft_lvgl_init(); |
|||
void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p); |
|||
bool my_touchpad_read(lv_indev_drv_t * indev_driver, lv_indev_data_t * data); |
|||
|
|||
void LCD_Clear(uint16_t Color); |
|||
void tft_set_point(uint16_t x, uint16_t y, uint16_t point); |
|||
void ili9320_SetWindows(uint16_t StartX, uint16_t StartY, uint16_t width, uint16_t heigh); |
|||
void LCD_WriteRAM_Prepare(void); |
|||
|
|||
//#ifdef __cplusplus
|
|||
//} /* extern "C" */
|
|||
//#endif
|
File diff suppressed because it is too large
@ -0,0 +1,584 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* |
|||
* Based on Sprinter and grbl. |
|||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#include "inc/tft_Language_en.h" |
|||
#include "inc/tft_Language_s_cn.h" |
|||
#include "inc/tft_Language_t_cn.h" |
|||
#include "inc/tft_Language_ru.h" |
|||
#include "inc/tft_Language_fr.h" |
|||
#include "inc/tft_Language_sp.h" |
|||
#include "inc/tft_Language_it.h" |
|||
|
|||
extern void disp_language_init(); |
|||
|
|||
#define LANG_SIMPLE_CHINESE 1 |
|||
#define LANG_COMPLEX_CHINESE 2 |
|||
#define LANG_ENGLISH 3 |
|||
#define LANG_JAPAN 4 |
|||
#define LANG_GERMAN 5 |
|||
#define LANG_FRENCH 6 |
|||
#define LANG_RUSSIAN 7 |
|||
#define LANG_KOREAN 8 |
|||
#define LANG_TURKISH 9 |
|||
#define LANG_SPANISH 10 |
|||
#define LANG_GREEK 11 |
|||
#define LANG_ITALY 12 |
|||
#define LANG_PORTUGUESE 13 |
|||
|
|||
#define MULTI_LANGUAGE_ENABLE 1 |
|||
#define MULTI_LANGUAGE_DISABLE 0 |
|||
|
|||
typedef struct common_menu_disp { |
|||
const char *text_back; |
|||
const char *dialog_confirm_title; |
|||
const char *close_machine_tips; |
|||
const char *unbind_printer_tips; |
|||
const char *print_special_title; |
|||
const char *pause_special_title; |
|||
const char *operate_special_title; |
|||
const char *next; |
|||
const char *previous; |
|||
} common_menu_def; |
|||
extern common_menu_def common_menu; |
|||
|
|||
typedef struct main_menu_disp { |
|||
const char *title; |
|||
const char *preheat; |
|||
const char *move; |
|||
const char *home; |
|||
const char *print; |
|||
const char *extrude; |
|||
const char *leveling; |
|||
const char *autoleveling; |
|||
const char *fan; |
|||
const char *set; |
|||
const char *tool; |
|||
const char *more; |
|||
const char *machine_para; |
|||
} main_menu_def; |
|||
extern main_menu_def main_menu; |
|||
|
|||
typedef struct preheat_menu_disp { |
|||
const char *adjust_title; |
|||
const char *title; |
|||
const char *add; |
|||
const char *dec; |
|||
const char *ext1; |
|||
const char *ext2; |
|||
const char *hotbed; |
|||
const char *off; |
|||
const char *step_1c; |
|||
const char *step_5c; |
|||
const char *step_10c; |
|||
const char *back; |
|||
|
|||
const char *value_state; |
|||
|
|||
const char *dialog_tips; |
|||
|
|||
}preheat_menu_def; |
|||
extern preheat_menu_def preheat_menu; |
|||
|
|||
typedef struct move_menu_disp { |
|||
const char *title; |
|||
const char *x_add; |
|||
const char *x_dec; |
|||
const char *y_add; |
|||
const char *y_dec; |
|||
const char *z_add; |
|||
const char *z_dec; |
|||
const char *step_001mm; |
|||
const char *step_005mm; |
|||
const char *step_01mm; |
|||
const char *step_1mm; |
|||
const char *step_10mm; |
|||
const char *back; |
|||
} move_menu_def; |
|||
extern move_menu_def move_menu; |
|||
|
|||
typedef struct home_menu_disp { |
|||
const char *title; |
|||
const char *home_all; |
|||
const char *home_x; |
|||
const char *home_y; |
|||
const char *home_z; |
|||
const char *stopmove; |
|||
const char *back; |
|||
} home_menu_def; |
|||
extern home_menu_def home_menu; |
|||
|
|||
typedef struct file_menu_disp { |
|||
const char *title; |
|||
const char *page_up; |
|||
const char *page_down; |
|||
const char *back; |
|||
|
|||
const char *file_loading; |
|||
const char *no_file; |
|||
const char *no_file_and_check; |
|||
|
|||
}file_menu_def; |
|||
extern file_menu_def file_menu; |
|||
|
|||
typedef struct extrude_menu_disp { |
|||
const char *title; |
|||
const char *in; |
|||
const char *out; |
|||
const char *ext1; |
|||
const char *ext2; |
|||
const char *step_1mm; |
|||
const char *step_5mm; |
|||
const char *step_10mm; |
|||
const char *low; |
|||
const char *normal; |
|||
const char *high; |
|||
const char *back; |
|||
|
|||
const char *count_value_mm; |
|||
const char *count_value_cm; |
|||
const char *count_value_m; |
|||
const char *temp_value; |
|||
const char *temper_text; |
|||
} extrude_menu_def; |
|||
extern extrude_menu_def extrude_menu; |
|||
|
|||
typedef struct leveling_menu_disp { |
|||
const char *title; |
|||
const char *position1; |
|||
const char *position2; |
|||
const char *position3; |
|||
const char *position4; |
|||
const char *position5; |
|||
|
|||
char *back; |
|||
} leveling_menu_def; |
|||
extern leveling_menu_def leveling_menu; |
|||
|
|||
typedef struct set_menu_disp { |
|||
const char *title; |
|||
const char *filesys; |
|||
const char *wifi; |
|||
const char *about; |
|||
const char *fan; |
|||
const char *filament; |
|||
const char *breakpoint; |
|||
const char *motoroff; |
|||
const char *motoroffXY; |
|||
const char *shutdown; |
|||
const char *language; |
|||
const char *machine_para; |
|||
const char *back; |
|||
} set_menu_def; |
|||
extern set_menu_def set_menu; |
|||
|
|||
typedef struct filesys_menu_disp { |
|||
const char *title; |
|||
const char *filesys; |
|||
const char *sd_sys; |
|||
const char *usb_sys; |
|||
const char *back; |
|||
} filesys_menu_def; |
|||
extern filesys_menu_def filesys_menu; |
|||
|
|||
typedef struct more_menu_disp { |
|||
const char *title; |
|||
const char *zoffset; |
|||
const char *back; |
|||
} more_menu_def; |
|||
extern more_menu_def more_menu; |
|||
|
|||
typedef struct wifi_menu_disp { |
|||
const char *title; |
|||
const char *ip; |
|||
const char *wifi; |
|||
const char *key; |
|||
const char *state_ap; |
|||
const char *state_sta; |
|||
const char *cloud; |
|||
const char *connected; |
|||
const char *disconnected; |
|||
const char *exception; |
|||
const char *back; |
|||
const char *reconnect; |
|||
} wifi_menu_def; |
|||
extern wifi_menu_def wifi_menu; |
|||
|
|||
typedef struct cloud_menu_disp { |
|||
const char *title; |
|||
const char *unbind; |
|||
const char *unbinding; |
|||
const char *unbinded; |
|||
const char *bind; |
|||
const char *binding; |
|||
const char *binded; |
|||
const char *disable; |
|||
const char *disconnected; |
|||
const char *back; |
|||
const char *unbind_printer_tips; |
|||
} cloud_menu_def; |
|||
extern cloud_menu_def cloud_menu; |
|||
|
|||
typedef struct about_menu_disp { |
|||
const char *title; |
|||
const char *type_name; |
|||
const char *firmware_v; |
|||
const char *type; |
|||
const char *version; |
|||
const char *wifi; |
|||
const char *type_robin; |
|||
const char *type_robin_mini; |
|||
const char *back; |
|||
} about_menu_def; |
|||
extern about_menu_def about_menu; |
|||
|
|||
typedef struct fan_menu_disp { |
|||
const char *title; |
|||
const char *add; |
|||
const char *dec; |
|||
const char *full; |
|||
const char *half; |
|||
const char *off; |
|||
const char *back; |
|||
|
|||
const char *state; |
|||
const char *state_value; |
|||
} fan_menu_def; |
|||
extern fan_menu_def fan_menu; |
|||
|
|||
typedef struct filament_menu_disp { |
|||
const char *title; |
|||
const char *in; |
|||
const char *out; |
|||
const char *ext1; |
|||
const char *ext2; |
|||
const char *back; |
|||
const char *stat_temp; |
|||
const char *ready_replace; |
|||
const char *replacing; |
|||
const char *loading; |
|||
const char *unloading; |
|||
const char *heating; |
|||
const char *complete_and_back; |
|||
const char *filament_dialog_load_heat; |
|||
const char *filament_dialog_unload_heat; |
|||
const char *filament_dialog_load_heat_confirm; |
|||
const char *filament_dialog_unload_heat_confirm; |
|||
const char *filament_dialog_loading; |
|||
const char *filament_dialog_unloading; |
|||
const char *filament_dialog_load_completed; |
|||
const char *filament_dialog_unload_completed; |
|||
const char *filament_dialog_ok; |
|||
const char *filament_dialog_back; |
|||
} filament_menu_def; |
|||
extern filament_menu_def filament_menu; |
|||
|
|||
typedef struct language_menu { |
|||
const char *title; |
|||
const char *chinese_s; |
|||
const char *chinese_t; |
|||
const char *english; |
|||
const char *russian; |
|||
const char *japan; |
|||
const char *italy; |
|||
const char *german; |
|||
const char *spanish; |
|||
const char *korean; |
|||
const char *french; |
|||
const char *brazil; |
|||
const char *portuguese; |
|||
const char *next; |
|||
const char *up; |
|||
const char *back; |
|||
} language_menu_def; |
|||
extern language_menu_def language_menu; |
|||
|
|||
typedef struct printing_menu_disp { |
|||
const char *title; |
|||
const char *option; |
|||
const char *temp1; |
|||
const char *temp2; |
|||
const char *bed_temp; |
|||
const char *fan_speed; |
|||
const char *pause; |
|||
const char *resume; |
|||
const char *stop; |
|||
} printing_menu_def; |
|||
extern printing_menu_def printing_menu; |
|||
|
|||
typedef struct operation_menu_disp { |
|||
const char *title; |
|||
const char *pause; |
|||
const char *stop; |
|||
const char *temp; |
|||
const char *fan; |
|||
const char *filament; |
|||
const char *extr; |
|||
const char *speed; |
|||
const char *move; |
|||
const char *more; |
|||
const char *auto_off; |
|||
const char *manual_off; |
|||
const char *back; |
|||
const char *babystep; |
|||
} operation_menu_def; |
|||
extern operation_menu_def operation_menu; |
|||
|
|||
typedef struct pause_menu_disp { |
|||
const char *title; |
|||
const char *resume; |
|||
const char *stop; |
|||
const char *extrude; |
|||
const char *move; |
|||
const char *filament; |
|||
const char *more; |
|||
} pause_menu_def; |
|||
extern pause_menu_def pause_menu; |
|||
|
|||
typedef struct speed_menu_disp { |
|||
const char *title; |
|||
const char *add; |
|||
const char *dec; |
|||
const char *extrude; |
|||
const char *move; |
|||
const char *step_1percent; |
|||
const char *step_5percent; |
|||
const char *step_10percent; |
|||
const char *back; |
|||
const char *move_speed; |
|||
const char *extrude_speed; |
|||
} speed_menu_def; |
|||
extern speed_menu_def speed_menu; |
|||
|
|||
typedef struct printing_more_menu_disp { |
|||
const char *title; |
|||
const char *fan; |
|||
const char *auto_close; |
|||
const char *manual; |
|||
const char *temp; |
|||
const char *speed; |
|||
const char *back; |
|||
} printing_more_menu_def; |
|||
extern printing_more_menu_def printing_more_menu; |
|||
|
|||
typedef struct dialog_menu_disp { |
|||
const char *confirm_title; |
|||
|
|||
const char *error1_repint_no_file; |
|||
const char *error2_communication_fail; |
|||
const char *error3_filename_too_long; |
|||
const char *error4_no_file; |
|||
const char *error5_check_filesys; |
|||
|
|||
const char *tip1_print_file; |
|||
const char *tip2_stop_file; |
|||
} dialog_menu_def; |
|||
extern dialog_menu_def dialog_menu; |
|||
|
|||
typedef struct print_file_dialog_disp { |
|||
const char *title; |
|||
const char *confirm; |
|||
const char *cancle; |
|||
const char *print_file; |
|||
const char *cancle_print; |
|||
const char *retry; |
|||
const char *stop; |
|||
const char *no_file_print_tips; |
|||
const char *print_from_breakpoint; |
|||
const char *file_name_too_long_error; |
|||
const char *close_machine_error; |
|||
const char *filament_no_press; |
|||
const char *print_finish; |
|||
const char *print_time; |
|||
const char *reprint; |
|||
const char *wifi_enable_tips; |
|||
} print_file_dialog_menu_def; |
|||
extern print_file_dialog_menu_def print_file_dialog_menu; |
|||
|
|||
typedef struct zoffset_menu_disp { |
|||
const char *title; |
|||
const char *inc; |
|||
const char *dec; |
|||
const char *step001; |
|||
const char *step01; |
|||
const char *step1; |
|||
const char *back; |
|||
} zoffset_menu_def; |
|||
extern zoffset_menu_def zoffset_menu; |
|||
|
|||
typedef struct tool_menu_disp { |
|||
const char *title; |
|||
const char *preheat; |
|||
const char *extrude; |
|||
const char *move; |
|||
const char *home; |
|||
const char *leveling; |
|||
const char *autoleveling; |
|||
const char *filament; |
|||
const char *more; |
|||
const char *back; |
|||
} tool_menu_def; |
|||
extern tool_menu_def tool_menu; |
|||
|
|||
typedef struct MachinePara_menu_disp { |
|||
const char *title; |
|||
const char *MachineSetting; |
|||
const char *TemperatureSetting; |
|||
const char *MotorSetting; |
|||
const char *AdvanceSetting; |
|||
//const char *back;
|
|||
} MachinePara_menu_def; |
|||
extern MachinePara_menu_def MachinePara_menu; |
|||
|
|||
typedef struct MachineSettings_menu_disp { |
|||
const char *title; |
|||
const char *Machine; |
|||
const char *Stroke; |
|||
const char *HomeDir; |
|||
const char *EndStopType; |
|||
const char *filamet; |
|||
const char *leveling; |
|||
const char *back; |
|||
} MachineSettings_menu_def; |
|||
extern MachineSettings_menu_def MachineSettings_menu; |
|||
|
|||
typedef struct TemperatureSettings_menu_disp { |
|||
const char *title; |
|||
const char *nozzle; |
|||
const char *hotbed; |
|||
const char *preheat; |
|||
const char *back; |
|||
} TemperatureSettings_menu_def; |
|||
extern TemperatureSettings_menu_def TemperatureSettings_menu; |
|||
|
|||
typedef struct pause_msg_disp { |
|||
const char *pausing; |
|||
const char *changing; |
|||
const char *unload; |
|||
const char *waiting; |
|||
const char *insert; |
|||
const char *load; |
|||
const char *purge; |
|||
const char *resume; |
|||
const char *heat; |
|||
const char *heating; |
|||
const char *option; |
|||
const char *purgeMore; |
|||
const char *continuePrint; |
|||
} pause_msg_def; |
|||
extern pause_msg_def pause_msg_menu; |
|||
|
|||
/*****************************************/ |
|||
//********************************************//
|
|||
//#if defined(TFT70)
|
|||
//
|
|||
//#elif defined(TFT35)
|
|||
#define TEXT_VALUE "%d/%d" |
|||
//#endif
|
|||
|
|||
#define TEXT_VALUE_T ": %d℃" |
|||
#define TEXT_VALUE_mm ": %dmm" |
|||
#define TEXT_VALUE_cm ": %dcm" |
|||
#define TEXT_VALUE_m ": %dm" |
|||
|
|||
#define TEMP_UNIT_SYBOL "%d℃" |
|||
#define FLOAT_TEMP_UNIT_SYBOL "%.1f℃" |
|||
|
|||
#define TEXT_1C "1℃" |
|||
#define TEXT_5C "5℃" |
|||
#define TEXT_10C "10℃" |
|||
|
|||
#define AXIS_X_ADD_TEXT "X+" |
|||
#define AXIS_X_DEC_TEXT "X-" |
|||
#define AXIS_Y_ADD_TEXT "Y+" |
|||
#define AXIS_Y_DEC_TEXT "Y-" |
|||
#define AXIS_Z_ADD_TEXT "Z+" |
|||
#define AXIS_Z_DEC_TEXT "Z-" |
|||
#define TEXT_001MM "0.01mm" |
|||
#define TEXT_005MM "0.05mm" |
|||
#define TEXT_01MM "0.1mm" |
|||
#define TEXT_1MM "1mm" |
|||
#define TEXT_10MM "10mm" |
|||
|
|||
#define EXTRUDE_1MM_TEXT "1mm" |
|||
#define EXTRUDE_5MM_TEXT "5mm" |
|||
#define EXTRUDE_10MM_TEXT "10mm" |
|||
|
|||
#define STEP_1PERCENT "1%" |
|||
#define STEP_5PERCENT "5%" |
|||
#define STEP_10PERCENT "10%" |
|||
|
|||
#define LANGUAGE_S_CN "简体" |
|||
#define LANGUAGE_T_CN "繁体" |
|||
#define LANGUAGE_EN "English" |
|||
#define LANGUAGE_JP "日本語" |
|||
#define LANGUAGE_GE "Deutsch" |
|||
#define LANGUAGE_FR "français" |
|||
#define LANGUAGE_IT "Italia" |
|||
#define LANGUAGE_PR "português" |
|||
#define LANGUAGE_KR "Korean" |
|||
#define LANGUAGE_BR "Brazil" |
|||
#define LANGUAGE_RU "русский" |
|||
#define LANGUAGE_SP "español" |
|||
|
|||
#define HOME_X_TEXT "X" |
|||
#define HOME_Y_TEXT "Y" |
|||
#define HOME_Z_TEXT "Z" |
|||
#define HOME_ALL_TEXT "All" |
|||
//#if defined(MKS_ROBIN_NANO)
|
|||
#define ABOUT_TYPE_TEXT "MKS Robin Pro" |
|||
//#elif defined(MKS_ROBIN_MINI)
|
|||
//#define ABOUT_TYPE_TEXT "MKS Robin Mini"
|
|||
//#endif
|
|||
#define ABOUT_VERSION_TEXT "1.0.0" |
|||
//#define ABOUT_WIFI_TEXT "WiFi:"
|
|||
|
|||
#define FAN_OPEN_TEXT "100%" |
|||
#define FAN_HALF_TEXT "50%" |
|||
#define FAN_CLOSE_TEXT "0%" |
|||
//#define FAN_TIPS1_TEXT "FAN"
|
|||
//#define FAN_TIPS2_TEXT "FAN\nClose"
|
|||
|
|||
#define WIFI_TEXT "WIFI" |
|||
#define WIFI_IP_TEXT "IP: " |
|||
#define WIFI_NAME_TEXT "WiFi: " |
|||
#define WIFI_KEY_TEXT "Key: " |
|||
#define WIFI_STATE_AP_TEXT "State: AP" |
|||
#define WIFI_STATE_STA_TEXT "State: STA" |
|||
#define WIFI_CONNECTED_TEXT "Connected" |
|||
#define WIFI_DISCONNECTED_TEXT "Disconnected" |
|||
#define WIFI_EXCEPTION_TEXT "Exception" |
|||
|
|||
#define FILAMENT_TIPS2_TEXT "T:" |
|||
|
|||
#define DIALOG_UPLOAD_ING_EN "Uploading......" |
|||
#define DIALOG_UPLOAD_ERROR_EN "Upload error" |
|||
#define DIALOG_UPLOAD_FINISH_EN "Upload finished" |
|||
#define DIALOG_UPLOAD_SIZE_EN "Size" |
|||
#define DIALOG_UPLOAD_TIME_EN "Time" |
|||
#define DIALOG_UPLOAD_SPEED_EN "Speed" |
|||
#define DIALOG_UPDATE_WIFI_FIRMWARE_EN "Updating wifi model firmware" |
|||
#define DIALOG_UPDATE_WIFI_WEB_EN "Updating wifi model web data" |
|||
|
|||
#define ZOFFSET_STEP001 "0.01mm" |
|||
#define ZOFFSET_STEP01 "0.1mm" |
|||
#define ZOFFSET_STEP1 "1mm" |
@ -0,0 +1,40 @@ |
|||
import os |
|||
Import("env") |
|||
|
|||
# Relocate firmware from 0x08000000 to 0x08007000 |
|||
for define in env['CPPDEFINES']: |
|||
if define[0] == "VECT_TAB_ADDR": |
|||
env['CPPDEFINES'].remove(define) |
|||
env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x08007000")) |
|||
|
|||
custom_ld_script = os.path.abspath("buildroot/share/PlatformIO/ldscripts/mks_robin_nano.ld") |
|||
for i, flag in enumerate(env["LINKFLAGS"]): |
|||
if "-Wl,-T" in flag: |
|||
env["LINKFLAGS"][i] = "-Wl,-T" + custom_ld_script |
|||
elif flag == "-T": |
|||
env["LINKFLAGS"][i + 1] = custom_ld_script |
|||
|
|||
|
|||
# Encrypt ${PROGNAME}.bin and save it as 'Robin_nano35.bin' |
|||
def encrypt(source, target, env): |
|||
import sys |
|||
|
|||
key = [0xA3, 0xBD, 0xAD, 0x0D, 0x41, 0x11, 0xBB, 0x8D, 0xDC, 0x80, 0x2D, 0xD0, 0xD2, 0xC4, 0x9B, 0x1E, 0x26, 0xEB, 0xE3, 0x33, 0x4A, 0x15, 0xE4, 0x0A, 0xB3, 0xB1, 0x3C, 0x93, 0xBB, 0xAF, 0xF7, 0x3E] |
|||
|
|||
firmware = open(target[0].path, "rb") |
|||
robin = open(target[0].dir.path +'/Robin_nano35.bin', "wb") |
|||
length = os.path.getsize(target[0].path) |
|||
position = 0 |
|||
try: |
|||
while position < length: |
|||
byte = firmware.read(1) |
|||
if position >= 320 and position < 31040: |
|||
byte = chr(ord(byte) ^ key[position & 31]) |
|||
if sys.version_info[0] > 2: |
|||
byte = bytes(byte, 'latin1') |
|||
robin.write(byte) |
|||
position += 1 |
|||
finally: |
|||
firmware.close() |
|||
robin.close() |
|||
env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", encrypt); |
Loading…
Reference in new issue