Multi-platform DWIN_CREALITY_LCD support (#20738)

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
This commit is contained in:
Johan van der Vyver
2021-01-13 02:05:49 +02:00
committed by GitHub
parent a26f2fb00b
commit 7f3dcb3e8a
10 changed files with 73 additions and 50 deletions

View File

@ -82,20 +82,27 @@ inline void DWIN_String(size_t &i, const __FlashStringHelper * string) {
// Send the data in the buffer and the packet end
inline void DWIN_Send(size_t &i) {
++i;
LOOP_L_N(n, i) { MYSERIAL1.write(DWIN_SendBuf[n]); delayMicroseconds(1); }
LOOP_L_N(n, 4) { MYSERIAL1.write(DWIN_BufTail[n]); delayMicroseconds(1); }
LOOP_L_N(n, i) { LCD_SERIAL.write(DWIN_SendBuf[n]); delayMicroseconds(1); }
LOOP_L_N(n, 4) { LCD_SERIAL.write(DWIN_BufTail[n]); delayMicroseconds(1); }
}
/*-------------------------------------- System variable function --------------------------------------*/
// Handshake (1: Success, 0: Fail)
bool DWIN_Handshake(void) {
#ifndef LCD_BAUDRATE
#define LCD_BAUDRATE 115200
#endif
LCD_SERIAL.begin(LCD_BAUDRATE);
const millis_t serial_connect_timeout = millis() + 1000UL;
while (!LCD_SERIAL && PENDING(millis(), serial_connect_timeout)) { /*nada*/ }
size_t i = 0;
DWIN_Byte(i, 0x00);
DWIN_Send(i);
while (MYSERIAL1.available() > 0 && recnum < (signed)sizeof(databuf)) {
databuf[recnum] = MYSERIAL1.read();
while (LCD_SERIAL.available() > 0 && recnum < (signed)sizeof(databuf)) {
databuf[recnum] = LCD_SERIAL.read();
// ignore the invalid data
if (databuf[0] != FHONE) { // prevent the program from running.
if (recnum > 0) {

View File

@ -497,14 +497,21 @@ inline void Draw_Back_First(const bool is_sel=true) {
if (is_sel) Draw_Menu_Cursor(0);
}
inline bool Apply_Encoder(const ENCODER_DiffState &encoder_diffState, auto &valref) {
if (encoder_diffState == ENCODER_DIFF_CW)
valref += EncoderRate.encoderMoveValue;
else if (encoder_diffState == ENCODER_DIFF_CCW)
valref -= EncoderRate.encoderMoveValue;
else if (encoder_diffState == ENCODER_DIFF_ENTER)
return true;
#define APPLY_ENCODER_F \
if (encoder_diffState == ENCODER_DIFF_CW) \
valref += EncoderRate.encoderMoveValue; \
else if (encoder_diffState == ENCODER_DIFF_CCW) \
valref -= EncoderRate.encoderMoveValue; \
else if (encoder_diffState == ENCODER_DIFF_ENTER) \
return true; \
return false;
inline bool Apply_Encoder(const ENCODER_DiffState &encoder_diffState, int16_t &valref) {
APPLY_ENCODER_F
}
inline bool Apply_Encoder(const ENCODER_DiffState &encoder_diffState, float &valref) {
APPLY_ENCODER_F
}
//

View File

@ -249,7 +249,8 @@ typedef struct {
float Move_E_scale = 0;
#endif
float offset_value = 0;
char show_mode = 0; // -1: Temperature control 0: Printing temperature
TERN_(__STM32F1__, signed)
char show_mode = 0; // -1: Temperature control 0: Printing temperature
} HMI_value_t;
#define DWIN_CHINESE 123