让你的HMI开启VNC骚操作

嵌入式HMI通过VNC远程控制
本文介绍了如何在嵌入式设备上利用emWin的VNC功能实现远程控制。通过VNC服务器和查看器,可以在不同平台上同步显示和控制嵌入式设备的人机界面,需要TCP/IP协议栈和多任务系统支持。文章提供了win32模拟运行的步骤,以及移植到硬件板上的代码分析,帮助开发者将VNC应用到实际项目中。

嵌入式开发中,经常会有人机界面的开发,如果你的板子有网口的话,可以开启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了。

                                        扫描识别二维码添加关注

### VNCHMI 的集成与工业控制中的应用 #### 工业控制系统中的 VNC 技术 虚拟网络计算 (VNC) 是一种图形桌面共享系统,允许用户远程访问操作计算机及其应用程序。在工业自动化领域,VNC 被广泛用于监控和管理分布式设备以及人机界面 (HMI)[^1]。通过 VNC,技术人员可以从中央位置连接到远端的 PLC 或 SCADA 系统,从而实现高效的维护和支持。 #### HMI 的角色 HMI(Human Machine Interface),即人机接口,在现代制造业中扮演着至关重要的角色。它提供了直观的操作方式让用户能够轻松地交互并控制复杂的机械设备。通常情况下,HMIs 集成了触摸屏功能、实时数据展示以及其他高级特性来增强用户体验[^2]。 #### 将 VNC 整合至 HMI 解决方案的优势 当把 VNC 技术引入基于硬件或者软件形式存在的 HMIs 中时,可以带来如下好处: - **提高灵活性**: 使用者无论身处何方都可以即时查看生产线上任何一台机器的状态。 - **降低成本**: 减少了对于物理工作站的需求量,因为多个员工可以通过自己的电脑接入同一个画面. - **加强协作能力**: 不同部门之间更容易分享信息资源而无需亲自到场. 然而需要注意的是,在实施此类项目之前应该充分考虑网络安全方面的要求以保护敏感的企业资料不受未授权访问的影响[^3]. ```python import vnc_api as vnca def connect_to_hmi(vnc_server_ip='192.168.x.y', port=5900): try: client = vnca.VNCApi() connection_status = client.connect(vnc_server_ip,port) if not connection_status: raise Exception("Failed to establish a connection with the server.") return True except Exception as e: print(f"An error occurred during setup:{str(e)}") return False if __name__ == "__main__": success = connect_to_hmi() if success: # Proceed further actions here... pass ``` 上述 Python 示例展示了如何利用 `vnc_api` 库建立一个简单的客户端程序去尝试链接指定 IP 地址上的 VNC 服务器。这只是一个基础框架;实际部署可能还需要额外的安全措施比如加密传输通道等[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值