综合商城网站建设,毕业设计网站源码,网站建设广州网站建设,昌平区网站建设公司【 声明#xff1a;版权所有#xff0c;欢迎转载#xff0c;请勿用于商业用途。 联系信箱#xff1a;feixiaoxing 163.com】只要是嵌入式设备#xff0c;不管是stm32也好#xff0c;或者是linux设备#xff0c;总少不了人机交互。如果产品本身还是在开发的阶段#xff…【 声明版权所有欢迎转载请勿用于商业用途。 联系信箱feixiaoxing 163.com】只要是嵌入式设备不管是stm32也好或者是linux设备总少不了人机交互。如果产品本身还是在开发的阶段那么基本上采用串口开发的方式就可以实现人机交互了。但是等到后期慢慢往产品方向转的时候这个时候就不能采用串口通信了。毕竟大部分客户都没有这方面的知识只能想想其他的办法了。1、按键方式如果不输入的话一个小的液晶显示屏甚至是数码管就可以完成消息的输出。但是如果需要有输入信息的需求通常就是采用按键的方式来完成。这也是大多数嵌入式设备的交互方式。一来按键开发非常简单二来成本也很低。只要是不太复杂的功能都可以通过gpio状态机lvgl的方式开发出来。2、触摸屏的方式前面说过可以用按键的方式来进行人机交互。这对一般的产品来说是足够的。但是如果遇到复杂一点的产品比如需要输入用户名、密码需要修改内部的文件名需要设置规则属性等等这就有点麻烦了。很多的输入需要涉及到英文字母大小写、涉及到数字甚至很多国产的设备还涉及到汉字的输入这部分内容靠按键来实现是完全不现实的。遇到这种情况的时候最好的处理办法还是添加一块触摸屏。有了触摸屏之后就可以虚拟出一个键盘。这样的一个键盘上面密密麻麻布置了很多的按键。通过把虚拟键盘和编辑框做一个绑定那么就可以实现复杂的信息输入了。即使是中文也可以通过这种方式来完成的。有了虚拟键盘之后我们就可以像操作手机一样操作嵌入式设备整体产品的调性和档次也会增加不少。一般来说触摸屏就是比普通lcd屏幕多一个触摸功能用一对i2c总线就可以获取对应的x/y信息了。但交互方式一下子就自然了很多。整体代码如下所示#include ../../lv_examples.h #if LV_USE_KEYBOARD LV_BUILD_EXAMPLES void lv_example_keyboard_2(void) { /*Create an AZERTY keyboard map*/ static const char * kb_map[] {A, Z, E, R, T, Y, U, I, O, P, LV_SYMBOL_BACKSPACE, \n, Q, S, D, F, G, J, K, L, M, LV_SYMBOL_NEW_LINE, \n, W, X, C, V, B, N, ,, ., :, !, ?, \n, LV_SYMBOL_CLOSE, , , , LV_SYMBOL_OK, NULL }; /*Set the relative width of the buttons and other controls*/ static const lv_buttonmatrix_ctrl_t kb_ctrl[] {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, LV_BUTTONMATRIX_CTRL_HIDDEN | 2, 6, LV_BUTTONMATRIX_CTRL_HIDDEN | 2, 2 }; /*Create a keyboard and add the new map as USER_1 mode*/ lv_obj_t * kb lv_keyboard_create(lv_screen_active()); lv_keyboard_set_map(kb, LV_KEYBOARD_MODE_USER_1, kb_map, kb_ctrl); lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_USER_1); /*Create a text area. The keyboard will write here*/ lv_obj_t * ta; ta lv_textarea_create(lv_screen_active()); lv_obj_align(ta, LV_ALIGN_TOP_MID, 0, 10); lv_obj_set_size(ta, lv_pct(90), 80); lv_obj_add_state(ta, LV_STATE_FOCUSED); lv_keyboard_set_textarea(kb, ta); } #endif从代码中可以看出来虚拟键盘是单独创建的lv_obj_t * kb lv_keyboard_create(lv_screen_active()); lv_keyboard_set_map(kb, LV_KEYBOARD_MODE_USER_1, kb_map, kb_ctrl); lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_USER_1);接着继续创建编辑区域lv_obj_t * ta; ta lv_textarea_create(lv_screen_active()); lv_obj_align(ta, LV_ALIGN_TOP_MID, 0, 10); lv_obj_set_size(ta, lv_pct(90), 80); lv_obj_add_state(ta, LV_STATE_FOCUSED);最后是把键盘和编辑区域做一个绑定即可lv_keyboard_set_textarea(kb, ta);3、web交互的方式这种方式比较适合网络设备。首先开发的设备上面至少需要一个网卡不管是有线的还是无线的至少可以和外界通过网络进行沟通。其次在嵌入式设备上面需要布置一个web server这样外部浏览器和设备通信的时候才有可能进行数据的交流。这样的web server不必很大类似于mongoose就很合适。最后要设计好交互的网页。一般来说网页部分是单独设计出来的比如大家熟悉的vue.jselementui就是前端的范畴。设计好了之后随着web server一起部署到嵌入式设备上这就完成了web的交互功能了。就嵌入式设备而言很多时候web的加载和保存都是为了配置一个ini文件。如果这个ini文件可以完成文件的读取和保存大体上web交互的作用就达到了。至于ini文件做什么用什么时候起作用这就要看嵌入式设备的应用场合和工作场景了。