M5Paper partial Update Canvas
- 
					
					
					
					
 Found in the documentation the command 
 Function: flushes the data in the buffer to the specified area of the screen in the specified mode.m5epd_err_t UpdateArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h, m5epd_update_mode_t mode); Can I use it for partial updating the canvas, if yes how to use this command? Cheers, 
 Jan
- 
					
					
					
					
 m5epd_err_t UpdateArea(100,100,100,100) 
 would update an area of 100 px X 100px with the top left corner starting at position X=100, Y=100.
- 
					
					
					
					
 @ajb2k3 
 Thanks, I wont to update (redraw) every time a new character, without updating the whole screen. But the command is not do that what I expect.
 Her my short test program. What is wrong ont it?#include <M5EPD.h> 
 M5EPD_Canvas canvas1(&M5.EPD);String testString[]={"A","B","C","D","E","F","G"}; void setup() { 
 M5.begin();
 M5.TP.SetRotation(180);
 M5.EPD.SetRotation(180);
 M5.EPD.Clear(true);
 canvas1.createCanvas(960, 540);
 canvas1.loadFont("/fonts/GenSenRounded-R.ttf", SD);
 canvas1.createRender(60);
 canvas1.setTextSize(60);
 canvas1.drawString("A",20,20);
 canvas1.pushCanvas(0, 0, UPDATE_MODE_GL16);
 }void loop() { 
 for (int i=1; i<7; i++)
 {
 canvas1.drawString(testString[i],20,20);
 /* m5epd_err_t UpdateArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h, m5epd_update_mode_t mode); */
 M5.EPD.UpdateArea(0,0,100,100,UPDATE_MODE_GL16);
 delay(1000);
 }
 }Cheers 
 Jan.
- 
					
					
					
					
 You need to also include the M5stack libraries. 
 What do you mean "not what you expect"
 any error message?
 Can you post a picture of the screen?
- 
					
					
					
					
 @ajb2k3 said in M5Paper partial Update Canvas: You need to also include the M5stack libraries. Wat do you mean with that? This simple program is complete or not? 
- 
					
					
					
					
 @ajb2k3 
 I espect to see the characters be changed at the fix place. Do you have try to run my simple program?
- 
					
					
					
					
 As mentioned in the other thread, the missing step is transferring the canvas framebuffer to the EPD. 
 If your loop function is changed as below, it works as you expect.void loop() { for (int i=1; i<7; i++) { canvas1.drawString(testString[i],20,20); /* m5epd_err_t UpdateArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h, m5epd_update_mode_t mode); */ M5.EPD.WriteFullGram4bpp((uint8_t*)canvas1.frameBuffer()); M5.EPD.UpdateArea(0,0,100,100,UPDATE_MODE_GL16); delay(1000); } }
