K210上利用LittleVGL制作一套酷炫的嵌入式页面

最近工程需要,需要在勘智的k210平台进行一些本体软件开发。

首当其冲的就是界面设计了。

由于k210自身存储空间不是很大,留给ROM和程序的空间并不是很多,所以littlevgl并没有吧它全部去支持了。

而是采取了一半一半的方式。

界面渲染采用了littlevgl,关键的按键消息机制也采用了原生的,但是界面的元素的回调和处理,就没有用LittleVGL了。而是采用了即时生成的方式,效果还不错,可以看一下。


k210做的界面

 

附上一个lvgl的初始化code:

#cooperation screen
class RSDev():
    def __init__(self,key):
        self.last_key = -1
        lcd.init()
        lv.init()
        self._key = key
        #注册颜色缓冲区
        self.lvgl_buf = lv.disp_buf_t()
        screen_width_buf = bytearray(240*10)
        lv.disp_buf_init(self.lvgl_buf,screen_width_buf,None,len(screen_width_buf)//4)
        #注册交互显示器
        self.disp_drv = lv.disp_drv_t()
        lv.disp_drv_init(self.disp_drv)
        self.disp_drv.buffer = self.lvgl_buf
        self.disp_drv.flush_cb = lv_h.flush  #交互的回调函数
        self.disp_drv.hor_res = 240
        self.disp_drv.ver_res = 320
        lv.disp_drv_register(self.disp_drv)
        print("cool")
        #注册交互设备
        self.input_dev = lv.indev_drv_t()
        lv.indev_drv_init(self.input_dev)
        self.input_dev.type=lv.INDEV_TYPE.KEYPAD
        self.input_dev.read_cb=self.input_func
        self.devs = lv.indev_drv_register(self.input_dev)

        self.input_group = lv.group_create()
        lv.group_set_style_mod_cb(self.input_group,self.group_style_func)
        lv.indev_set_group(self.devs,self.input_group)
    def input_func(self,drv,events):
        self._key.read()
        if(self._key.press_hor()):
            print("left")
            events.state = lv.INDEV_STATE.PR
            events.key = lv.KEY.LEFT
        elif(self._key.press_row()):
            print("right")
            events.state = lv.INDEV_STATE.PR
            events.key = lv.KEY.RIGHT
        elif(self._key.press_quit()):
            print("quit")
        elif(self._key.press_enter()):
            events.state = lv.INDEV_STATE.PR
            print("enter")
            events.key = lv.KEY.ENTER
        elif(self._key.unpress()):
            events.state = lv.INDEV_STATE.REL
        return False
    def group_style_func(self,group ,style):
        style.body.border.color = lv.color_make(250,0,0)
        style.text.color = lv.color_make(0,0,0)
    def read_wifi(self):
        return self._key._dev._nic.scan()

 

你可能感兴趣的:(K210开发板,python,界面设计,嵌入式)