这是 NodeMCU 上 Lua 的 VNC 服务器框架。一个基本子集,并使 Lua 脚本能够通过 TCP 连接将图形发送到 PC 或智能
手机上的 VNC 客户端。它的灵感来自,它演示了嵌入式系统和智能客户端之间通过 VNC 进行图形交互的简单性。
vncserver.lua 模块和随附的示例脚本可从获得。
需要编译成固件的模块:
vnc 服务器在 NodeMCU 套接字实例上运行,该实例必须由用户脚本预先准备好:建立一个侦听端口 5900 的 TCP 服务器,并在客户端连接时调用 start() 函数。
代码:
全选vncsrv = require("vncserver")
-- Set up TCP server
srv = net.createServer( net.TCP, 120 )
srv:listen( 5900,
func
tion( conn )
-- start VNC server with connected socket
vncsrv.start( conn, 128, 128 )
end
)
所有协议序列随后都由 vncserver 模块处理。
一旦服务器交换了所有必需的信息,它就会待机并等待来自客户端的消息。它将通过回调将这些委托给用户脚本。可以使用 vncsrv.on() 注册以下事件的回调函数
每当客户端请求更新帧缓冲区时,服务器都应发送包含矩形列表的
请注意,vncserver目前仅支持
一个矩形告诉客户端显示器的哪个区域受到影响以及该区域的背景颜色是什么:
代码:
全选vncsrv.rre_rectangle( base_x, base_y, width, height, num_subrectangles, background )
以下子矩形(如果有)定义了不同颜色的区域。它们是相对于周围矩形指定的:
代码:
全选vncsrv.rre_subrectangle( rel_x, rel_y, width, height, color )
来自 rectangles.lua 的示例:
代码:
全选function draw_rectangles()
-- FramebufferUpdate message indicating that 1 rectangle description follows:
vncsrv.update_fb( 1 )
-- Next is the rectangle in RRE encoding, 4 sub-rectangles will follow:
vncsrv.rre_rectangle( 0, 0, 128, 128, 4, 0 )
-- The sub-rectangles:
vncsrv.rre_subrectangle( 10, 10, 30, 10, red )
vncsrv.rre_subrectangle( 50, 20, 20, 40, green )
vncsrv.rre_subrectangle( 80, 80, 40, 40, blue )
vncsrv.rre_subrectangle( 60, 50, 30, 50, yellow )