├── .gitattributes ├── .gitignore ├── .travlis.yml ├── LICENSE ├── README.md ├── SConscript └── dwin ├── SConscript ├── basic ├── dwin_cmd.c ├── dwin_cmd.h ├── dwin_init.c ├── dwin_init.h ├── dwin_parse.c ├── dwin_parse.h ├── dwin_system.c ├── dwin_system.h ├── dwin_trans.c └── dwin_trans.h ├── dwin.h ├── dwin_def.h └── widgets ├── dwin_button.c ├── dwin_button.h ├── dwin_gbk.c ├── dwin_gbk.h ├── dwin_gbk_input.c ├── dwin_gbk_input.h ├── dwin_icon.c ├── dwin_icon.h ├── dwin_num.c ├── dwin_num.h ├── dwin_num_input.c ├── dwin_num_input.h ├── dwin_number.c ├── dwin_number.h ├── dwin_obj.c ├── dwin_obj.h ├── dwin_page.c ├── dwin_page.h ├── dwin_qrcode.c ├── dwin_qrcode.h ├── dwin_scale.c └── dwin_scale.h /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Prerequisites 2 | *.d 3 | 4 | # Object files 5 | *.o 6 | *.ko 7 | *.obj 8 | *.elf 9 | 10 | # Linker output 11 | *.ilk 12 | *.map 13 | *.exp 14 | 15 | # Precompiled Headers 16 | *.gch 17 | *.pch 18 | 19 | # Libraries 20 | *.lib 21 | *.a 22 | *.la 23 | *.lo 24 | 25 | # Shared objects (inc. Windows DLLs) 26 | *.dll 27 | *.so 28 | *.so.* 29 | *.dylib 30 | 31 | # Executables 32 | *.exe 33 | *.out 34 | *.app 35 | *.i*86 36 | *.x86_64 37 | *.hex 38 | 39 | # Debug files 40 | *.dSYM/ 41 | *.su 42 | *.idb 43 | *.pdb 44 | 45 | # Kernel Module Compile Results 46 | *.mod* 47 | *.cmd 48 | .tmp_versions/ 49 | modules.order 50 | Module.symvers 51 | Mkfile.old 52 | dkms.conf 53 | -------------------------------------------------------------------------------- /.travlis.yml: -------------------------------------------------------------------------------- 1 | language: c 2 | 3 | before_script: 4 | - sudo apt-get update 5 | - "sudo apt-get -qq install gcc-multilib libc6:i386 libgcc1:i386 gcc-4.6-base:i386 libstdc++5:i386 libstdc++6:i386 libsdl-dev || true" 6 | 7 | script: scons -C ./ 8 | 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 liuguang 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | 注意: 声明禁止DWIN公司将该库用于商业目的. 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | :tada: DWIN for RT-Thread :tada: 2 | ================ 3 | 4 | [![Build Status](https://travis-ci.org/liu2guang/dwin.svg?branch=v2.x.x)](https://travis-ci.org/liu2guang/dwin) 5 | [![License](https://img.shields.io/apm/l/vim-mode.svg)](https://github.com/liu2guang/dwin/blob/master/LICENSE) 6 | 7 | DWIN库是基于MIT开源协议的dwin串口屏幕快速开发库. 该库需要工作在RT-Thread(后文简写RTT)物联网操作系统上, 整个DWIN库基于RTT底层设备层框架进行开发, 只要支持串口设备的RTT BSP都可以直接env在线安装DWIN库. 8 | 9 | 效果与代码 10 | ------------------- 11 | 12 | ![dwin1](https://i.imgur.com/sxzFraT.jpg) 13 | ![dwin2](https://i.imgur.com/CyAndSV.jpg) 14 | 15 | 代码: 16 | ~~~ 17 | #include 18 | #include 19 | 20 | /* 页面 */ 21 | #define PAGE_NUM 2 22 | dwin_page_t page[PAGE_NUM]; 23 | 24 | dwin_num_input_t input; 25 | dwin_button_t login; 26 | dwin_qrcode_t qrcode; 27 | dwin_gbk_t gbk; 28 | dwin_icon_t icon; 29 | 30 | static void input_callback(rt_uint32_t value) 31 | { 32 | rt_kprintf("User input password is %.8d.\n", value); 33 | } 34 | 35 | static void login_callback(void) 36 | { 37 | rt_kprintf("Login.\n"); 38 | } 39 | 40 | int main(void) 41 | { 42 | rt_uint16_t index = 0; 43 | 44 | for(index = 0; index < sizeof(page)/sizeof(dwin_page_t); index++) 45 | { 46 | page[index] = dwin_page_create(index); 47 | } 48 | 49 | /* 全局控件 */ 50 | gbk = dwin_gbk_create(DWIN_ALL_PAGE, DWIN_VAR_ADDR(0x000), 100); 51 | dwin_gbk_show_string(gbk, "你好不好呢ppp呢"); 52 | 53 | /* 页面0 */ 54 | qrcode = dwin_qrcode_create(page[0], 0x0300, 100); 55 | dwin_qrcode_show_url(qrcode, "https://github.com/liu2guang/dwin"); 56 | 57 | icon = dwin_icon_create(page[0], DWIN_VAR_ADDR(0x400), 6); 58 | dwin_icon_set_index(icon, 5); 59 | 60 | /* 页面1 */ 61 | input = dwin_num_input_create(page[1], DWIN_VAR_ADDR(0x0034), input_callback); 62 | login = dwin_button_create (page[1], DWIN_VAR_ADDR(0x0038), login_callback); 63 | 64 | return dwin_run(0); 65 | } 66 | ~~~ 67 | 68 | 功能简介 69 | ------------------- 70 | 71 | 功能 | 描述 72 | ---- | ---- 73 | button | 按键控件, 支持按下执行回调函数 74 | scale | 滑块控件, 支持滑动数据变动执行回调函数, 支持代码控制滑块滑动 75 | icon | 图标显示控件, 支持改变图标 76 | qrcode | 二维码控件, 支持网页、字符串生成二维码显示 77 | gbk | GBK字符串显示控件, 支持GBK显示, 数字和汉字混合显示 78 | gbk_input | GBK录入控件, 支持键盘录入GBK字符串 79 | num | 数字显示控件, 支持整数和浮点数显示 80 | num_input| 数字录入控件, 支持整数和浮点数录入 81 | cmd | RTT CMD调试功能 82 | 83 | CMD功能 84 | ------------------- 85 | 86 | ![dwin_cmd](https://i.imgur.com/FBmmMf1.png) 87 | 88 | 功能 | 描述 89 | ---- | ---- 90 | 读取变量和寄存器 | dwin -t r {reg or var} {addr} {len} 91 | 更改变量和寄存器 | dwin -t w {reg or var} {addr} {len} {data...} 92 | 打印dwin版本信息 | dwin -s ver 93 | 设置背光亮度 | dwin -s bl [level] 94 | 蜂鸣 | dwin -s buzz {tick} 95 | 获取当前页面 | dwin -s page 96 | 跳转页面 | dwin -s jump {page} 97 | 开启关闭触摸功能 | dwin -s touch {enable or disable} 98 | 设置或者读取 | dwin -s rtc [year] [mon] [day] [hour] [min] [sec] 99 | 发送软按键 | dwin -s key {code} 100 | 打印当前注册解析器信息 | dwin -d parse 101 | 打印当前页面与控件信息 | dwin -d page 102 | 103 | :tada: 感谢 :tada: 104 | ------------------- 105 | 106 | - @balanceTWK 107 | - @uestczyh222 108 | 109 | :tada: MIT许可证 :tada: 110 | ------------------- 111 | 112 | MIT License 113 | 114 | Copyright (c) 2018 liu2guang(liuguang) 115 | 116 | Permission is hereby granted, free of charge, to any person obtaining a copy 117 | of this software and associated documentation files (the "Software"), to deal 118 | in the Software without restriction, including without limitation the rights 119 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 120 | copies of the Software, and to permit persons to whom the Software is 121 | furnished to do so, subject to the following conditions: 122 | 123 | The above copyright notice and this permission notice shall be included in all 124 | copies or substantial portions of the Software. 125 | 126 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 127 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 128 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 129 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 130 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 131 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 132 | SOFTWARE. 133 | 134 | 附加许可: 禁止DWIN公司将该库用于商业目的. 135 | -------------------------------------------------------------------------------- /SConscript: -------------------------------------------------------------------------------- 1 | import os 2 | from building import * 3 | 4 | objs = [] 5 | cwd = GetCurrentDir() 6 | list = os.listdir(cwd) 7 | 8 | for item in list: 9 | if os.path.isfile(os.path.join(cwd, item, 'SConscript')): 10 | objs = objs + SConscript(os.path.join(item, 'SConscript')) 11 | 12 | Return('objs') 13 | -------------------------------------------------------------------------------- /dwin/SConscript: -------------------------------------------------------------------------------- 1 | from building import * 2 | 3 | # get current dir path 4 | cwd = GetCurrentDir() 5 | 6 | # init src and inc vars 7 | src = [] 8 | inc = [] 9 | 10 | # add dwin basic include 11 | inc = inc + [cwd] 12 | inc = inc + [cwd + "/basic"] 13 | inc = inc + [cwd + "/widgets"] 14 | 15 | # add dwin basic code 16 | src = src + Glob('./*.c') 17 | src = src + Glob('./basic/*.c') 18 | src = src + Glob('./widgets/*.c') 19 | 20 | group = DefineGroup('dwin', src, depend = ['PKG_USING_DWIN'], CPPPATH = inc) 21 | 22 | Return('group') 23 | -------------------------------------------------------------------------------- /dwin/basic/dwin_cmd.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtpkgs/dwin/e63f2bbdc27a6e7e0ea38e4033a09d62e2bb8335/dwin/basic/dwin_cmd.c -------------------------------------------------------------------------------- /dwin/basic/dwin_cmd.h: -------------------------------------------------------------------------------- 1 | /* 2 | * @File: dwin_cmd.c 3 | * @Author: liu2guang 4 | * @Date: 2018-04-22 14:52:10 5 | * 6 | * @LICENSE: MIT 7 | * https://github.com/liu2guang/dwin/blob/master/LICENSE 8 | * 9 | * Change Logs: 10 | * Date Author Notes 11 | * 2018-04-24 liu2guang update v2 framework. 12 | */ 13 | 14 | #ifndef __DWIN_CMD_H__ 15 | #define __DWIN_CMD_H__ 16 | 17 | #include "dwin_def.h" 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /dwin/basic/dwin_init.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtpkgs/dwin/e63f2bbdc27a6e7e0ea38e4033a09d62e2bb8335/dwin/basic/dwin_init.c -------------------------------------------------------------------------------- /dwin/basic/dwin_init.h: -------------------------------------------------------------------------------- 1 | /* 2 | * @File: dwin_init.h 3 | * @Author: liu2guang 4 | * @Date: 2018-04-22 14:52:10 5 | * 6 | * @LICENSE: MIT 7 | * https://github.com/liu2guang/dwin/blob/master/LICENSE 8 | * 9 | * Change Logs: 10 | * Date Author Notes 11 | * 2018-04-22 liu2guang update v2 framework. 12 | */ 13 | 14 | #ifndef __DWIN_INIT_H__ 15 | #define __DWIN_INIT_H__ 16 | 17 | #include "dwin_def.h" 18 | 19 | int dwin_init(void); 20 | rt_err_t dwin_run(rt_uint16_t page_id); 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /dwin/basic/dwin_parse.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtpkgs/dwin/e63f2bbdc27a6e7e0ea38e4033a09d62e2bb8335/dwin/basic/dwin_parse.c -------------------------------------------------------------------------------- /dwin/basic/dwin_parse.h: -------------------------------------------------------------------------------- 1 | /* 2 | * @File: dwin_parse.c 3 | * @Author: liu2guang 4 | * @Date: 2018-04-07 14:52:10 5 | * 6 | * @LICENSE: MIT 7 | * https://github.com/liu2guang/dwin/blob/master/LICENSE 8 | * 9 | * Change Logs: 10 | * Date Author Notes 11 | * 2018-04-07 liu2guang update v2 framework. 12 | */ 13 | #ifndef __DWIN_PARSE_H__ 14 | #define __DWIN_PARSE_H__ 15 | 16 | #include "dwin_def.h" 17 | 18 | struct dwin_parse *dwin_parse_create(enum dwin_obj_type type, 19 | void (*event)(struct dwin_obj *obj, uint8_t *data, uint8_t len)); 20 | rt_err_t dwin_parse_delect(struct dwin_parse *parse); 21 | #define dwin_parse_delect_safe(parse) \ 22 | do{ \ 23 | dwin_parse_delect(parse); parse = RT_NULL; \ 24 | }while(0) 25 | rt_err_t dwin_parse_register(struct dwin_parse *parse); 26 | rt_err_t dwin_parse_unregister(struct dwin_parse *parse); 27 | rt_err_t dwin_parse_send(struct dwin_data_frame *data); 28 | void dwin_parse_register_info(void); 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /dwin/basic/dwin_system.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtpkgs/dwin/e63f2bbdc27a6e7e0ea38e4033a09d62e2bb8335/dwin/basic/dwin_system.c -------------------------------------------------------------------------------- /dwin/basic/dwin_system.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtpkgs/dwin/e63f2bbdc27a6e7e0ea38e4033a09d62e2bb8335/dwin/basic/dwin_system.h -------------------------------------------------------------------------------- /dwin/basic/dwin_trans.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtpkgs/dwin/e63f2bbdc27a6e7e0ea38e4033a09d62e2bb8335/dwin/basic/dwin_trans.c -------------------------------------------------------------------------------- /dwin/basic/dwin_trans.h: -------------------------------------------------------------------------------- 1 | /* 2 | * @File: dwin_trans.c 3 | * @Author: liu2guang 4 | * @Date: 2018-04-22 14:52:10 5 | * 6 | * @LICENSE: MIT 7 | * https://github.com/liu2guang/dwin/blob/master/LICENSE 8 | * 9 | * Change Logs: 10 | * Date Author Notes 11 | * 2018-04-22 liu2guang update v2 framework. 12 | */ 13 | 14 | #ifndef __DWIN_TRANS_H__ 15 | #define __DWIN_TRANS_H__ 16 | 17 | #include "dwin_def.h" 18 | 19 | rt_err_t dwin_watch_init(dwin_t dwin, const char *name, rt_uint32_t baudrate); 20 | rt_err_t dwin_reg_read (rt_uint16_t addr, rt_uint8_t *data, rt_uint8_t len); 21 | rt_err_t dwin_reg_write(rt_uint16_t addr, rt_uint8_t *data, rt_uint8_t len); 22 | rt_err_t dwin_var_read (rt_uint16_t addr, rt_uint16_t *data, rt_uint8_t len); 23 | rt_err_t dwin_var_write(rt_uint16_t addr, rt_uint16_t *data, rt_uint8_t len); 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /dwin/dwin.h: -------------------------------------------------------------------------------- 1 | /* 2 | * @File: dwin.h 3 | * @Author: liu2guang 4 | * @Date: 2018-04-22 14:52:10 5 | * 6 | * @LICENSE: MIT 7 | * https://github.com/liu2guang/dwin/blob/master/LICENSE 8 | * 9 | * Change Logs: 10 | * Date Author Notes 11 | * 2018-04-22 liu2guang update v2 framework. 12 | */ 13 | 14 | #ifndef __DWIN_H__ 15 | #define __DWIN_H__ 16 | 17 | #include "dwin_def.h" 18 | 19 | /* basic */ 20 | #include "dwin_init.h" 21 | #include "dwin_trans.h" 22 | #include "dwin_system.h" 23 | #include "dwin_parse.h" 24 | 25 | /* obj and widgets */ 26 | #include "dwin_obj.h" 27 | #include "dwin_page.h" 28 | 29 | #include "dwin_button.h" 30 | #include "dwin_scale.h" 31 | #include "dwin_num.h" 32 | #include "dwin_num_input.h" 33 | #include "dwin_gbk.h" 34 | #include "dwin_gbk_input.h" 35 | #include "dwin_qrcode.h" 36 | #include "dwin_icon.h" 37 | 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /dwin/dwin_def.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtpkgs/dwin/e63f2bbdc27a6e7e0ea38e4033a09d62e2bb8335/dwin/dwin_def.h -------------------------------------------------------------------------------- /dwin/widgets/dwin_button.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtpkgs/dwin/e63f2bbdc27a6e7e0ea38e4033a09d62e2bb8335/dwin/widgets/dwin_button.c -------------------------------------------------------------------------------- /dwin/widgets/dwin_button.h: -------------------------------------------------------------------------------- 1 | /* 2 | * @File: dwin_button.c 3 | * @Author: liu2guang 4 | * @Date: 2018-06-07 17:27:10 5 | * 6 | * @LICENSE: MIT 7 | * https://github.com/liu2guang/dwin/blob/master/LICENSE 8 | * 9 | * Change Logs: 10 | * Date Author Notes 11 | * 2018-06-07 liu2guang implementing the button object. 12 | */ 13 | 14 | #ifndef __DWIN_BUTTON_H__ 15 | #define __DWIN_BUTTON_H__ 16 | 17 | #include "dwin_def.h" 18 | 19 | struct dwin_button 20 | { 21 | struct dwin_obj obj; 22 | void (*push_cb)(void); 23 | }; 24 | typedef struct dwin_button* dwin_button_t; 25 | 26 | rt_err_t dwin_button_init(void); 27 | struct dwin_button *dwin_button_create(struct dwin_page *page, rt_uint16_t addr, 28 | void (*push_cb)(void)); 29 | rt_err_t dwin_button_delect(struct dwin_button *button); 30 | rt_err_t dwin_button_set_callback(struct dwin_button *button, void (*cb)(void)); 31 | rt_err_t dwin_button_set_active(struct dwin_button *button, rt_bool_t active); 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /dwin/widgets/dwin_gbk.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtpkgs/dwin/e63f2bbdc27a6e7e0ea38e4033a09d62e2bb8335/dwin/widgets/dwin_gbk.c -------------------------------------------------------------------------------- /dwin/widgets/dwin_gbk.h: -------------------------------------------------------------------------------- 1 | /* 2 | * @File: dwin_gbk.h 3 | * @Author: liu2guang 4 | * @Date: 2018-06-19 14:39:10 5 | * 6 | * @LICENSE: MIT 7 | * https://github.com/liu2guang/dwin/blob/master/LICENSE 8 | * 9 | * Change Logs: 10 | * Date Author Notes 11 | * 2018-06-19 liu2guang implement the gbk object. 12 | */ 13 | 14 | #ifndef __DWIN_GBK_H__ 15 | #define __DWIN_GBK_H__ 16 | 17 | #include "dwin_def.h" 18 | 19 | struct dwin_gbk 20 | { 21 | struct dwin_obj obj; 22 | rt_uint16_t max_len; 23 | }; 24 | typedef struct dwin_gbk* dwin_gbk_t; 25 | 26 | rt_err_t dwin_gbk_init(void); 27 | struct dwin_gbk *dwin_gbk_create(struct dwin_page *page, rt_uint16_t addr, rt_uint16_t max_len); 28 | rt_err_t dwin_gbk_delect(struct dwin_gbk *gbk); 29 | rt_err_t dwin_gbk_show_string(struct dwin_gbk *gbk, char *string); 30 | rt_err_t dwin_gbk_clear(struct dwin_gbk *gbk); 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /dwin/widgets/dwin_gbk_input.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtpkgs/dwin/e63f2bbdc27a6e7e0ea38e4033a09d62e2bb8335/dwin/widgets/dwin_gbk_input.c -------------------------------------------------------------------------------- /dwin/widgets/dwin_gbk_input.h: -------------------------------------------------------------------------------- 1 | /* 2 | * @File: dwin_input.h 3 | * @Author: liu2guang 4 | * @Date: 2018-06-10 04:36:10 5 | * 6 | * @LICENSE: MIT 7 | * https://github.com/liu2guang/dwin/blob/master/LICENSE 8 | * 9 | * Change Logs: 10 | * Date Author Notes 11 | * 2018-06-12 balanceTWK implementing the input object. 12 | */ 13 | 14 | #ifndef __DWIN_GBK_INPUT_H__ 15 | #define __DWIN_GBK_INPUT_H__ 16 | 17 | #include "dwin_def.h" 18 | 19 | struct dwin_gbk_input 20 | { 21 | struct dwin_obj obj; 22 | void (*input_cb)(char *str, rt_uint8_t len); 23 | }; 24 | typedef struct dwin_gbk_input* dwin_gbk_input_t; 25 | 26 | rt_err_t dwin_gbk_input_init(void); 27 | struct dwin_gbk_input *dwin_gbk_input_create(struct dwin_page *page, rt_uint16_t addr, 28 | void (*cb)(char *str, rt_uint8_t len)); 29 | rt_err_t dwin_gbk_input_delect(struct dwin_gbk_input *input); 30 | rt_err_t dwin_gbk_input_set_callback(struct dwin_gbk_input *input, void (*cb)(char *str, rt_uint8_t len)); 31 | rt_err_t dwin_gbk_input_set_active(struct dwin_gbk_input *input, rt_bool_t active); 32 | rt_err_t dwin_gbk_input_read(struct dwin_gbk_input *input, char *str, rt_uint8_t len); 33 | rt_err_t dwin_gbk_input_write(struct dwin_gbk_input *input, char *str, rt_uint8_t len); 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /dwin/widgets/dwin_icon.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtpkgs/dwin/e63f2bbdc27a6e7e0ea38e4033a09d62e2bb8335/dwin/widgets/dwin_icon.c -------------------------------------------------------------------------------- /dwin/widgets/dwin_icon.h: -------------------------------------------------------------------------------- 1 | /* 2 | * @File: dwin_icon.h 3 | * @Author: liu2guang 4 | * @Date: 2018-06-14 15:56:10 5 | * 6 | * @LICENSE: MIT 7 | * https://github.com/liu2guang/dwin/blob/master/LICENSE 8 | * 9 | * Change Logs: 10 | * Date Author Notes 11 | * 2018-06-14 liu2guang implement the icon object. 12 | */ 13 | 14 | #ifndef __DWIN_ICON_H__ 15 | #define __DWIN_ICON_H__ 16 | 17 | #include "dwin_def.h" 18 | 19 | struct dwin_icon 20 | { 21 | struct dwin_obj obj; 22 | rt_uint16_t current_index; 23 | }; 24 | typedef struct dwin_icon* dwin_icon_t; 25 | 26 | rt_err_t dwin_icon_init(void); 27 | struct dwin_icon *dwin_icon_create(struct dwin_page *page, rt_uint16_t addr, rt_uint16_t init_index); 28 | rt_err_t dwin_icon_delect(struct dwin_icon *icon); 29 | rt_err_t dwin_icon_set_index(struct dwin_icon *icon, rt_uint16_t index); 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /dwin/widgets/dwin_num.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtpkgs/dwin/e63f2bbdc27a6e7e0ea38e4033a09d62e2bb8335/dwin/widgets/dwin_num.c -------------------------------------------------------------------------------- /dwin/widgets/dwin_num.h: -------------------------------------------------------------------------------- 1 | /* 2 | * @File: dwin_num.c 3 | * @Author: liu2guang 4 | * @Date: 2018-06-13 14:30:10 5 | * 6 | * @LICENSE: MIT 7 | * https://github.com/liu2guang/dwin/blob/master/LICENSE 8 | * 9 | * Change Logs: 10 | * Date Author Notes 11 | * 2018-06-13 liu2guang implementing the number object. 12 | */ 13 | 14 | #ifndef __DWIN_NUMBER_H__ 15 | #define __DWIN_NUMBER_H__ 16 | 17 | #include "dwin_def.h" 18 | 19 | enum dwin_num_type 20 | { 21 | DWIN_NUM_TYPE_S16 = 0, 22 | DWIN_NUM_TYPE_U16, 23 | DWIN_NUM_TYPE_S32, 24 | DWIN_NUM_TYPE_U32, 25 | DWIN_NUM_TYPE_U64, 26 | }; 27 | typedef enum dwin_num_type dwin_num_type_t; 28 | 29 | struct dwin_num 30 | { 31 | struct dwin_obj obj; 32 | enum dwin_num_type type; 33 | }; 34 | typedef struct dwin_num* dwin_num_t; 35 | 36 | rt_err_t dwin_num_init(void); 37 | struct dwin_num *dwin_num_create(struct dwin_page *page, rt_uint16_t addr, 38 | enum dwin_num_type type); 39 | rt_err_t dwin_num_delect(struct dwin_num *number); 40 | rt_err_t dwin_num_get_value_s16(struct dwin_num *number, rt_int16_t *value); 41 | rt_err_t dwin_num_get_value_u16(struct dwin_num *number, rt_uint16_t *value); 42 | rt_err_t dwin_num_get_value_s32(struct dwin_num *number, rt_int32_t *value); 43 | rt_err_t dwin_num_get_value_u32(struct dwin_num *number, rt_uint32_t *value); 44 | rt_err_t dwin_num_get_value_u64(struct dwin_num *number, uint64_t *value); 45 | 46 | rt_err_t dwin_num_set_value_s16(struct dwin_num *number, rt_int16_t value); 47 | rt_err_t dwin_num_set_value_u16(struct dwin_num *number, rt_uint16_t value); 48 | rt_err_t dwin_num_set_value_s32(struct dwin_num *number, rt_int32_t value); 49 | rt_err_t dwin_num_set_value_u32(struct dwin_num *number, rt_uint32_t value); 50 | rt_err_t dwin_num_set_value_u64(struct dwin_num *number, uint64_t value); 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /dwin/widgets/dwin_num_input.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtpkgs/dwin/e63f2bbdc27a6e7e0ea38e4033a09d62e2bb8335/dwin/widgets/dwin_num_input.c -------------------------------------------------------------------------------- /dwin/widgets/dwin_num_input.h: -------------------------------------------------------------------------------- 1 | /* 2 | * @File: dwin_num_input.c 3 | * @Author: liu2guang 4 | * @Date: 2018-06-13 17:36:10 5 | * 6 | * @LICENSE: MIT 7 | * https://github.com/liu2guang/dwin/blob/master/LICENSE 8 | * 9 | * Change Logs: 10 | * Date Author Notes 11 | * 2018-06-13 liuguang implementing the num input object. 12 | */ 13 | 14 | #ifndef __DWIN_NUM_INPUT_H__ 15 | #define __DWIN_NUM_INPUT_H__ 16 | 17 | #include "dwin_def.h" 18 | 19 | struct dwin_num_input 20 | { 21 | struct dwin_obj obj; 22 | void (*input_cb)(rt_uint32_t value); 23 | }; 24 | typedef struct dwin_num_input* dwin_num_input_t; 25 | 26 | rt_err_t dwin_num_input_init(void); 27 | struct dwin_num_input *dwin_num_input_create(struct dwin_page *page, rt_uint16_t addr, 28 | void (*cb)(rt_uint32_t value)); 29 | rt_err_t dwin_num_input_delect(struct dwin_num_input *input); 30 | rt_err_t dwin_num_input_set_callback(struct dwin_num_input *input, void (*cb)(rt_uint32_t value)); 31 | rt_err_t dwin_num_input_set_active(struct dwin_num_input *input, rt_bool_t active); 32 | rt_err_t dwin_num_input_read(struct dwin_num_input *input, rt_uint32_t *value); 33 | rt_err_t dwin_num_input_write(struct dwin_num_input *input, rt_uint32_t value); 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /dwin/widgets/dwin_number.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtpkgs/dwin/e63f2bbdc27a6e7e0ea38e4033a09d62e2bb8335/dwin/widgets/dwin_number.c -------------------------------------------------------------------------------- /dwin/widgets/dwin_number.h: -------------------------------------------------------------------------------- 1 | /* 2 | * @File: dwin_number.c 3 | * @Author: liu2guang 4 | * @Date: 2018-06-13 14:30:10 5 | * 6 | * @LICENSE: MIT 7 | * https://github.com/liu2guang/dwin/blob/master/LICENSE 8 | * 9 | * Change Logs: 10 | * Date Author Notes 11 | * 2018-06-13 liu2guang implementing the number object. 12 | */ 13 | 14 | #ifndef __DWIN_NUMBER_H__ 15 | #define __DWIN_NUMBER_H__ 16 | 17 | #include "dwin_def.h" 18 | 19 | enum dwin_number_type 20 | { 21 | DWIN_NUMBER_TYPE_S16 = 0, 22 | DWIN_NUMBER_TYPE_U16, 23 | 24 | DWIN_NUMBER_TYPE_S32, 25 | DWIN_NUMBER_TYPE_U32, 26 | 27 | DWIN_NUMBER_TYPE_U64, 28 | 29 | //DWIN_NUMBER_TYPE_VP_HIGH_BYTE, 30 | //DWIN_NUMBER_TYPE_VP_LOW_BYTE, 31 | }; 32 | typedef enum dwin_number_type dwin_number_type_t; 33 | 34 | struct dwin_number 35 | { 36 | struct dwin_obj obj; 37 | enum dwin_number_type type; 38 | }; 39 | typedef struct dwin_number* dwin_number_t; 40 | 41 | rt_err_t dwin_number_init(void); 42 | struct dwin_number *dwin_number_create(struct dwin_page *page, rt_uint16_t addr, 43 | enum dwin_number_type type); 44 | rt_err_t dwin_number_delect(struct dwin_number *number); 45 | rt_err_t dwin_number_get_value_s16(struct dwin_number *number, rt_int16_t *value); 46 | rt_err_t dwin_number_get_value_u16(struct dwin_number *number, rt_uint16_t *value); 47 | rt_err_t dwin_number_get_value_s32(struct dwin_number *number, rt_int32_t *value); 48 | rt_err_t dwin_number_get_value_u32(struct dwin_number *number, rt_uint32_t *value); 49 | rt_err_t dwin_number_get_value_u64(struct dwin_number *number, uint64_t *value); 50 | 51 | rt_err_t dwin_number_set_value_s16(struct dwin_number *number, rt_int16_t value); 52 | rt_err_t dwin_number_set_value_u16(struct dwin_number *number, rt_uint16_t value); 53 | rt_err_t dwin_number_set_value_s32(struct dwin_number *number, rt_int32_t value); 54 | rt_err_t dwin_number_set_value_u32(struct dwin_number *number, rt_uint32_t value); 55 | rt_err_t dwin_number_set_value_u64(struct dwin_number *number, uint64_t value); 56 | 57 | #endif 58 | -------------------------------------------------------------------------------- /dwin/widgets/dwin_obj.c: -------------------------------------------------------------------------------- 1 | /* 2 | * @File: dwin_obj.c 3 | * @Author: liu2guang 4 | * @Date: 2018-06-06 17:27:10 5 | * 6 | * @LICENSE: MIT 7 | * https://github.com/liu2guang/dwin/blob/master/LICENSE 8 | * 9 | * Change Logs: 10 | * Date Author Notes 11 | * 2018-06-06 liu2guang implementing the object. 12 | */ 13 | 14 | #include "dwin_obj.h" 15 | 16 | void dwin_obj_init(struct dwin_obj *obj, rt_uint16_t addr, rt_uint8_t size, enum dwin_obj_type type) 17 | { 18 | RT_ASSERT(obj != RT_NULL); 19 | 20 | obj->type = type; 21 | obj->value_addr = addr; 22 | obj->value_size = size; 23 | obj->active = RT_TRUE; 24 | } 25 | 26 | rt_err_t dwin_obj_set_active(struct dwin_obj *obj, rt_bool_t active) 27 | { 28 | RT_ASSERT(obj != RT_NULL); 29 | 30 | obj->active = active; 31 | 32 | return RT_EOK; 33 | } 34 | -------------------------------------------------------------------------------- /dwin/widgets/dwin_obj.h: -------------------------------------------------------------------------------- 1 | /* 2 | * @File: dwin_obj.h 3 | * @Author: liu2guang 4 | * @Date: 2018-06-06 17:27:10 5 | * 6 | * @LICENSE: MIT 7 | * https://github.com/liu2guang/dwin/blob/master/LICENSE 8 | * 9 | * Change Logs: 10 | * Date Author Notes 11 | * 2018-06-06 liu2guang implementing the object. 12 | */ 13 | 14 | #ifndef __DWIN_OBJ_H__ 15 | #define __DWIN_OBJ_H__ 16 | 17 | #include "dwin_def.h" 18 | 19 | void dwin_obj_init(struct dwin_obj *obj, rt_uint16_t addr, rt_uint8_t size, enum dwin_obj_type type); 20 | rt_err_t dwin_obj_set_active(struct dwin_obj *obj, rt_bool_t active); 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /dwin/widgets/dwin_page.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtpkgs/dwin/e63f2bbdc27a6e7e0ea38e4033a09d62e2bb8335/dwin/widgets/dwin_page.c -------------------------------------------------------------------------------- /dwin/widgets/dwin_page.h: -------------------------------------------------------------------------------- 1 | /* 2 | * @File: dwin_page.h 3 | * @Author: liu2guang 4 | * @Date: 2018-06-05 17:27:10 5 | * 6 | * @LICENSE: MIT 7 | * https://github.com/liu2guang/dwin/blob/master/LICENSE 8 | * 9 | * Change Logs: 10 | * Date Author Notes 11 | * 2018-06-05 liu2guang implementing the page object. 12 | */ 13 | 14 | #ifndef __DWIN_PAGE_H__ 15 | #define __DWIN_PAGE_H__ 16 | 17 | #include "dwin_def.h" 18 | 19 | struct dwin_page *dwin_page_create(rt_uint16_t id); 20 | #define dwin_page_delect_safe(page) \ 21 | do{ \ 22 | dwin_page_delect(page); page = RT_NULL; \ 23 | }while(0) 24 | rt_err_t dwin_page_add_obj(struct dwin_page *page, struct dwin_obj *obj); 25 | rt_err_t dwin_page_remove_obj(struct dwin_obj *obj); 26 | struct dwin_page *dwin_page_current(void); 27 | struct dwin_page *dwin_page_get_from_id(rt_uint16_t id); 28 | rt_err_t dwin_page_jump(struct dwin_page *page); 29 | rt_err_t dwin_page_jump_id(rt_uint16_t id); 30 | void dwin_page_obj_info(struct dwin_page *page); 31 | void dwin_page_info(void); 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /dwin/widgets/dwin_qrcode.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtpkgs/dwin/e63f2bbdc27a6e7e0ea38e4033a09d62e2bb8335/dwin/widgets/dwin_qrcode.c -------------------------------------------------------------------------------- /dwin/widgets/dwin_qrcode.h: -------------------------------------------------------------------------------- 1 | /* 2 | * @File: dwin_qrcode.c 3 | * @Author: balanceTWK 4 | * @Date: 2018-06-15 14:00:00 5 | * 6 | * @LICENSE: MIT 7 | * https://github.com/liu2guang/dwin/blob/master/LICENSE 8 | * 9 | * Change Logs: 10 | * Date Author Notes 11 | * 2018-06-15 balanceTWK implementing the button object. 12 | */ 13 | 14 | #ifndef __DWIN_QRCODE_H__ 15 | #define __DWIN_QRCODE_H__ 16 | 17 | #include "dwin_def.h" 18 | 19 | struct dwin_qrcode 20 | { 21 | struct dwin_obj obj; 22 | 23 | rt_uint16_t max_len; 24 | }; 25 | typedef struct dwin_qrcode* dwin_qrcode_t; 26 | 27 | rt_err_t dwin_qrcode_init(void); 28 | struct dwin_qrcode *dwin_qrcode_create(struct dwin_page *page, rt_uint16_t addr, rt_uint16_t max_len); 29 | rt_err_t dwin_qrcode_delect(struct dwin_qrcode *qrcode); 30 | rt_err_t dwin_qrcode_show_string(struct dwin_qrcode *qrcode, char *string); 31 | rt_err_t dwin_qrcode_show_url(struct dwin_qrcode *qrcode,char *url); 32 | rt_err_t dwin_qrcode_clear(struct dwin_qrcode *qrcode); 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /dwin/widgets/dwin_scale.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rtpkgs/dwin/e63f2bbdc27a6e7e0ea38e4033a09d62e2bb8335/dwin/widgets/dwin_scale.c -------------------------------------------------------------------------------- /dwin/widgets/dwin_scale.h: -------------------------------------------------------------------------------- 1 | /* 2 | * @File: dwin_scale.h 3 | * @Author: liu2guang 4 | * @Date: 2018-06-10 04:36:10 5 | * 6 | * @LICENSE: MIT 7 | * https://github.com/liu2guang/dwin/blob/master/LICENSE 8 | * 9 | * Change Logs: 10 | * Date Author Notes 11 | * 2018-06-10 liu2guang implementing the button object. 12 | */ 13 | 14 | #ifndef __DWIN_SCALE_H__ 15 | #define __DWIN_SCALE_H__ 16 | 17 | #include "dwin_def.h" 18 | 19 | struct dwin_scale 20 | { 21 | struct dwin_obj obj; 22 | 23 | rt_uint16_t current_value; 24 | void (*input_cb)(rt_uint16_t value); 25 | }; 26 | typedef struct dwin_scale* dwin_scale_t; 27 | 28 | rt_err_t dwin_scale_init(void); 29 | struct dwin_scale *dwin_scale_create(struct dwin_page *page, rt_uint16_t addr, 30 | void (*cb)(rt_uint16_t value), rt_uint16_t init_value); 31 | rt_err_t dwin_scale_delect(struct dwin_scale *scale); 32 | rt_err_t dwin_scale_set_callback(struct dwin_scale *scale, void (*cb)(rt_uint16_t value)); 33 | rt_err_t dwin_scale_set_active(struct dwin_scale *scale, rt_bool_t active); 34 | rt_err_t dwin_scale_get_value(struct dwin_scale *scale, rt_uint16_t *value); 35 | rt_err_t dwin_scale_set_value(struct dwin_scale *scale, rt_uint16_t value); 36 | 37 | #endif 38 | --------------------------------------------------------------------------------