嵌入式开发中,经常会有人机界面的开发,如果你的板子有网口的话,可以开启vnc功能,这样就可以同步hmi到pc,平板,或者手机。亲测效果非常棒。以emwin的vnc功能来介绍。
1
vnc简介
emwin vnc 服务器可用于管理嵌入式目标以及多种其他用途,支持压缩(hextile)编码。vnc 表示“虚拟网络计算”。它是基于一种简单的显示协议的客户端-服务器系统,允许用户从互联网的任何地方查看和控制“桌面”计算环境,支持多种机器架构,采用的是 tcp/ip 通信协议。换言之:嵌入式设备的显示内容可以在运行客户端的机器(如 pc)的屏幕上看到;可以用鼠标和键盘来
控制目标。emwin 仿真和试用版都提供了该功能。emwin vnc 支持是一个单独的软件包,所以不包含在基本软件包内。vnc 支持需要 emwin 颜色。如果文件系统可用,还能在客户端和带 emwinvnc 客户端的目标之间实现文件传输,vnc 由两类组件构成:一是服务器,生成显示,一是查看器,在屏幕上实际绘制显示内容。不但可以看到远程机器(目标或仿真),而且可以通过鼠标和键盘进行控制。服务器和查看器可以在不同的机器上,可以采用不同的架构。用于连接服务器和查看器的协议具有简单、开放且不受平台限制的特点。查看器不存储状态。断开查看器与服务器的连接,然后重新连接不会导致数据丢失。由于可以从其他地方重新连接,因此可以轻松实现移动性。使用 vnc 服务器,可以从任何地方控制您的目标机器。
2
运行需求
因为vnc是跑在网络上的,所以必须有tcp/ip协议栈,例如我们嵌入式中经常用的lwip等就可以用,另外vnc 服务器需要以独立线程运行。因此,使用 emwin vnc 服务器要求采用多任务系统。最后如果要传文件还需要文件系统。实现是完全线程安全的及可重入的;多个 vnc 服务器可以在同一 cpu 的不同层或显示器中启动。如果目标(当然,同样适用于模拟)有多个显示器或多个层,这可能是一个有用的选项。只有一个 vnc 服务器可以在任何时候在每一层启动;一旦与查看器的连接结束,则可以连接另一个。
3
win32模拟
首先可以参考emwin的例程,vnc在同一电脑上模拟
打开模拟解决方案工程,使用vs2019模拟
打开工程配置使能vnc,也可以根据自己实际调整分辨率,这里以480*272来展示。如果编译没有问题运行工程
打开vnc连接,可参照如下手册提示连接
4
代码分析
我们要将代码移植到我们的硬件板子上其实也很简单,首先要保证你的tcp/ip协议栈运行正常,可以测试tcp/ip协议栈正常运行后,开始移植vnc,主要就几个文件需要根据不同的协议栈修改,但都是socket编程,所以接口都一样。主要就是开启vnc函数的实现
这里我们以lwip协议栈为例来说明,以iar环境为工程载体,以freertos为操作系统,参考上面的例程调用,先添加头文件
这个函数就是实现创建vnc的任务,在任务里调用 gui_vnc_process(&_context, _send, _recv, (void *)sock);去实现vnc的处理。
将实现的文件添加到工程里,并编译无误,
在gui任务化地方调用开启vnc服务,还可以设置密码,名字等等,调用相应的api就可以
这样编译无误后,就可以下载试验了,更多api和玩法可以参考emwin手册。这个之前测试过,手边此刻没有板子,就不给大家演示了。如果你是使用freertos+lwip+emwin可以参照文中的代码,基本不用变就可以用起来,当然,之前必须保证你的gui和tcp/ip协议栈可以正常使用。可以参照前面的模拟看效果。这样就可以很炫的玩你的gui了。
联通在线打造出了区块链技术的身份认证和数据存证平台
TE推出新款微型ALCOSWITCH BLUE系列按钮开关
举例几种常见的加密算法
电子封装净化间的静电防护及监控(二)
疫情改变用电习惯,各国提前验收智能电网成果
人机界面开发之开启VNC功能同步HMI到PC
多核战争进入高潮 多核处理器成未来主流
量子计算:信息社会的未来
如何优化混合信号电路PCB设计的性能
iPhone8什么时候上市?iPhone8最新消息:iPhone8新特色,LOGO能显示电量与消息?
电浮筒游液位计校准工作如何做
华为鸿蒙系统官网报名 鸿蒙系统报名流程介绍
视觉检测设备的组成结构,它的核心部分是什么
一路走来 | 上缆藤仓4m成缆机改造之施工
Altera:20nm技术延续硅片融合承诺
提供基于MikroSDK 2.0的GSDK扩展支持以简化第三方硬件集成设计
7 FPGA大数据互联及视频系统开发板
钢丝绳漏磁法检测方法
NFC生态环境渐成熟 行业壁垒成障碍
AI智能语音控制系统