单台物理投影仪上同时显示多个计算机桌面的方法 【技术领域】
本发明属于计算机 ( 及手持终端 ) 显示器与投影显示设备技术领域, 特别涉及在 网络环境下多台计算机桌面同时使用同一个物理投影仪投影显示的控制系统与方法。 【背景技术】
目前常见的投影仪系统的功能一般仅支持在一段时间内只能显示一个计算机桌 面, 而许多实际应用场景迫切需要投影仪系统能够同时支持多个计算机桌面的投影显示。 例如教学培训场景中, 教师可以通过让多个学生的计算机桌面同时显示在同一个投影仪 上, 从而很容易展示多个学生对同一个问题的不同解决方法以及进一步进行比较讨论, 因 此本发明所要解决的问题具有很高的实用价值。
当前针对多个计算机桌面在物理投影仪上的显示的研究目前成果比较少, 主要有 2 个代表性的研究论文 :
论 文 1(1.Kenji Tsunashima, Tetsuro Shida, etc.Compact Programmable Network DisplaySystem for Portable Projectors.IEEE Transactions on Consumer Electronics, Vol.55, No.2, MAY 2009) 研究了网络环境下基于 VNC 和 XWindow 组合技术的 多个计算机桌面同时显示在一个物理投影仪上, 该论文给出的系统结构过于复杂, 同时由 于采用了从投影仪端去连接用户计算机的方式因此并不能支持用户计算机存在私有 IP 网 络的实际场景。
论文 2(2.Tor-Magne Stien Hagen, Espen Skjelnes Johnsen, etc.Liberating the Desktop.First International Conference on Advances in Computer-Human Interaction, 2008.p89-94) 研究了网络环境下基于位图的多个计算机桌面同时显示在一 个物理投影仪上, 该论文给出的系统结构简单, 所提出的方法固定且不具有扩展性, 由于在 客户端和服务器之间进行图像传输时, 对不同类型的图像均采用单一不可变的处理方法, 导致传输效率很难提高 ; 由于其使用的压缩算法、 客户端刷新频率等均是预先指定值, 并不 能满足网络环境多样化及软硬件性能不同的应用场合, 使得该系统的使用受到了很大的局 限; 当需要频繁切换待投影的多个计算机桌面时将耗费大量的网络连接资源。另外该论文 对硬件设备及网络带宽要求很高, 也很难满足多个计算机桌面同时显示的具体实际需求和 各种不同场合的应用等。 【发明内容】
本发明目的是为了解决上述现有技术存在的问题, 提供一种支持在单台物理投影 仪上同时显示多个计算机桌面的方法。
该方法涉及的硬件和控制模块包括 : 待投影用户计算机、 安装在待投影用户计算 机上的桌面投影客户端控制系统、 桌面投影控制服务器硬件平台、 安装在桌面投影控制服 务器硬件平台上的桌面投影服务器控制系统、 桌面投影服务器遥控器硬件平台、 安装在桌 面投影服务器遥控器硬件平台上的桌面投影服务器遥控系统、 物理投影仪以及网络通信系统, 该方法的具体实现步骤如下 :
第 1、 启动核心系统的硬件运行环境, 包括桌面投影控制服务器硬件平台、 桌面 投影服务器遥控器硬件平台、 网络通信系统及物理投影仪, 网络通信系统开始监听网络连 接;
第 2、 运行安装在桌面投影控制服务器硬件平台上的桌面投影服务器控制系统, 并 与本地的 “网络通讯系统” 实现本地连接, 并包括如下 :
第 2.1、 从本地网络通讯系统中接收数据包, 并对数据包头部信息解析, 确认数据 包为桌面图像流数据还是命令数据, 并送交相应功能模块进一步处理 ;
第 2.2、 远程计算机桌面投影用户身份认证 ;
第 2.3、 与各个桌面投影客户端控制系统单独就 “计算机桌面投影协议” 进行协 商;
第 2.4、 接收各个桌面投影客户端控制系统发来的计算机桌面图像流 ;
第 2.5、 处理及优化计算机桌面图像流, 生成相应投影窗口, 每个投影窗口代表一 个用户计算机桌面, 因此每个投影窗口对应一个已连接的计算机桌面图像流 ; 投影窗口的 状态包括投影状态和不投影状态。
第 2.5、 为各个桌面投影客户端控制系统的 “计算机桌面” 图像流生成桌面缩略图; 第 2.6、 接收并响应远程的桌面投影服务器遥控系统发来的鼠标和键盘指令 ;
第 2.7、 根据本地具体功能配置和管理员设置, 对于所有的投影窗口, 若该投影窗 口的状态为投影状态, 则在 “物理投影仪” 上显示该投影窗口, 从而实现显示指定的各个待 投影用户计算机的桌面 ; 管理员可以动态设置, 使得多个投影窗口同时投影显示。
第 3、 运行安装在桌面投影服务器遥控器硬件平台上的桌面投影服务器遥控系统, 并包括如下 :
第 3.1、 网络连接并登录到远程的桌面投影服务器控制系统 ;
第 3.2、 监控本地桌面投影服务器遥控器硬件平台上的鼠标和键盘事件 ;
第 3.3、 将本地新产生的鼠标和键盘事件, 根据功能设置, 若属于操控投影服务器 遥控系统的事件则及时发送到桌面投影服务器遥控系统 ;
第 3.4、 将本地新产生的鼠标和键盘事件, 根据功能设置, 若属于操控物理投影仪 的事件则及时转化为控制指令, 并以红外信号方式及时发送给物理投影仪, 从而控制物理 投影仪相关功能。
自此, 通过桌面投影服务器遥控系统即可控制远程的物理投影仪和远程的桌面投 影服务器控制系统。
第 4、 启动各待投影用户计算机, 然后独立运行安装在各个待投影用户计算机上的 桌面投影客户端控制系统, 并与本地的 “网络通讯系统” 实现本地连接。并包括如下 :
第 4.1、 从本地网络通讯系统中接收数据包, 并对数据包头部信息解析, 并送交相 应功能模块进一步处理 ;
第 4.2、 网络连接并登录到远程的桌面投影服务器控制系统 ;
第 4.3、 与远程的桌面投影服务器控制系统就 “计算机桌面投影协议” 进行协商 ;
第 4.4、 进行本地图形操作系统桌面的图像捕捉 ;
第 4.5、 本地桌面图像优化处理, 生成桌面图像流 ;
第 4.6、 根据 “计算机桌面投影协议” , 若需本地生成桌面缩略图, 则在本地生成桌 面缩略图 ;
第 4.7、 根据 “计算机桌面投影协议” , 定期发送本地桌面图像流及缩略图。
本发明所涉及的具体内容及所述术语的含义是 :
(1) 待 投 影 用 户 计 算 机 : 用户在 “待 投 影 的 计 算 机”上 ( 例 如 Windows XP、 Windows2003、 Linux、 Solaris 等 ) 运行若干任意程序 ( 包括网页浏览、 视频以及文档演示 等 )。
(2) 桌面投影客户端控制系统 : 作为软件 ( 以后台软件方式 ) 运行在待投影的用 户计算机上。 该软件不限于某一特定的操作系统, 针对不同的图形操作系统, 可以有不同的 技术方案。对于常见的操作系统, 如 Windows、 Linux 等, 在内核态驱动程序中捕捉桌面图 像, 在用户态程序中进行图像压缩和传递。该软件同样可由 JAVA 等跨平台的方法实现。
桌面投影客户端控制系统包括 “网络连接和登录” 、 “协议协商” 、 “桌面图像捕捉” 、 “图像压缩” 、 “桌面图像信息流队列” 、 “桌面图像信息流传送” 、 “缩略图生成” 、 “操作封装与 解析” 、 “数据收发” 等模块。 “网络连接和登录” 模块 : 根据用户输入的 “投影控制服务器” 的网络地址和监听端 口, 向该服务器发出连接请求 ; 与某指定 “投影控制服务器” 建立 TCP 连接之后, 使用用户名 和密码尝试登录。
“协议协商” 模块 : 成功登录到某指定 “投影控制服务器” 之后, 该服务器向 “投影 控制客户端系统” 发送协议协商请求, 包括 “桌面图像信息” 流的传递频率、 “计算机桌面图 像” 捕捉质量、 “投影仪桌面网络通讯系统” 所使用的网络协议等。
“桌面图像捕捉” 模块 : 根据 “协议协商” 模块获得的 “桌面图像信息” 流传递频率, 每隔一定的时间, “桌面图像捕捉” 模块捕获桌面的图像信息存入一个数据区。该模块的实 现针对不同的图形操作系统有不同的版本。对于 Windows 系列操作系统, GDI 图像处理库 可以满足大部分场合的桌面图像捕捉。但是由于 “待投影的计算机设备” 使用硬件加速, 很 多操作系统提供的 API 函数不能捕捉到视频流的图像信息, 需要直接访问显卡驱动程序的 方法。
“图像压缩” 模块 : 为了提高压缩率, 该模块首先将 “桌面图像捕捉” 模块得到的 32 位位图数据信息转化为 24 位位图信息, 具体的实现方法为抛弃 32 位位图数据中表示 ALPHA 通道的一个字节。然后根据 “协议协商” 模块获得的 “计算机桌面图像质量” 参数, 选择特 定的压缩算法。这里的压缩算法支持有损压缩和无损压缩。可以是第三方的压缩函数库, 也可以是独立开发的压缩算法。 “图像压缩” 模块将压缩后的数据包存入下述 “桌面图像信 息流队列” 中。
“桌面图像信息流队列” 模块 : 该模块维护一个 “计算机桌面图像” 的压缩包的队 列, 队列数据来源是 “图像压缩” 模块, 数据出口是 “桌面图像信息流传送” 模块。 “桌面图像 信息流队列” 模块保持 “图像压缩” 模块和 “桌面图像信息流传送” 模块对该队列的互斥访 问和同步控制。为了减少投影延时, 增加流畅度, 当该队列拥挤时, “图像压缩” 模块等待 ; 当该队列空闲时, “桌面图像信息传送” 模块等待。
“桌面图像信息传送” 模块 : 该模块与本地的 “投影仪桌面网络通讯系统” 协同工
作。每隔一定时间, 从 “桌面图像信息队列” 中取出一个压缩包, 对其进行进一步的封装。如 果数据包较大, 则分成几个较小的数据包进行传送。每个小数据包的头部记录该数据包的 标识、 大小、 全包大小、 以及该包在全包中的偏移量。 “桌面图像信息传送” 模块将数据包交 给 “投影仪桌面网络通讯系统” , 传送至指定的 “投影控制服务器” 。
“操作封装与解析” 模块 : 负责将命令或者图像数据报文封装成统一格式。
“数据收发” 模块 : 负责将封装后的数据报文传送至指定的 “投影控制服务器系 统” 。
“缩略图生成” 模块 : “投影控制客户端系统” 中支持本地计算机桌面图像缩略图的 生成, 对于已连接但暂时不投影的用户, 其 “投影控制客户端系统” 向 “投影控制服务器” 直 接发送数据量较小的桌面缩略图, 大大降低了网络流量的消耗。
(3) 桌面投影控制服务器硬件平台 : 该硬件平台既可以由任意一台通用计算机 ( 例如 PC 机 ) 来承担, 也可采用专用的嵌入式系统 ( 例如 ARM 硬件平台 ) 来承担, 上述无论 哪种计算设备都需要有能力与一台物理投影仪相连接, 其连接既可以是有线 RS232 电缆也 可以是网络方式。本发明的实施例 1 中的 “投影控制服务器” 基于 ARM9 进行开发, 使用了 S3C2440 微处理器、 SD 卡, 通过 VGA 转接板与物理投影仪相连接, 其桌面的内容直接显示与 投影仪屏幕上。 (4) 桌面投影服务器控制系统 : 通过网络 ( 包括无线网络和有线网络 ) 桌面投影 服务器控制系统将通过 “网络通讯系统” 与桌面投影客户端控制系统进行通信, 桌面投影服 务器控制系统负责对来自桌面投影客户端控制系统的用户进行认证、 与若干 “投影控制客 户端系统” 就用户的 “桌面图像信息” 捕捉、 解压缩及优化、 和网络传递的协议协商, 接收若 干 “投影控制客户端系统” 的 “桌面图像信息” , 维护当前网络中已登录用户的列表, 显示已 登录用户的缩略图, 以及控制若干 “计算机桌面” 的显示等。
桌面投影服务器控制系统由 “请求监听” “用户认证” “协议协商” 、 “已登录用户列 、 表” 、 “桌面图像缩略图” 、 “投影仪工作模式控制” 、 “桌面图像信息” 流接收、 “桌面图像信息 流队列” 、 “图像解压缩和优化” 、 “数据收发” 、 “操作封装与解析” 、 “系统命令” 、 “物理投影仪 控制” 、 “投影控制” 、 “投影窗口布局” 等功能模块构成。
“请求监听” 模块 : “投影控制服务器” 启动后, 在指定的 TCP 端口监听用户请求, 维 护一个请求队列, 该队列中每一个用户都与 “投影控制服务器” 建立一条 TCP 连接。根据投 影仪使用情况, 管理员可以设定请求队列的上限值, 以此来合理地管理投影仪资源的使用, 减少竞争和等候。
“用户认证” 模块 : 对请求队列中的用户, 如果用户使用指定的用户名和密码尝试 登录, “用户认证” 模块从本地 “用户信息文件” 中查找用户名和密码, 如果匹配则登录成功, 继续从该文件中查找该用户对应的初始权限, 根据不同的权限值对用户提供不同的服务。 此处的 “权限” 指的是不同的 “桌面图像信息” 流传递频率、 图像质量、 投影窗口大小、 投影位 置等, 通过这些参数, “投影控制服务器” 逻辑上定义了一个用户对投影仪资源的使用程度, 即该用户对投影仪使用的优先权。 如果用户名和密码不匹配, 则登录失败, 向用户反馈失败 信息。
“计算机桌面投影协议” 协商模块 : 当某一用户通过认证之后, “协商模块” 通过网 络与指定桌面投影客户端控制系统进行有关 “桌面图像信息” 的协议协商, 包括 “桌面图像
信息” 流的传递频率、 “计算机桌面图像” 捕捉质量、 “网络通讯系统” 所使用的网络协议等。
“已登录用户列表” 模块 : 对于所有已经与桌面投影服务器控制系统建立连接并 登录成功的用户, 桌面投影服务器控制系统维护一个列表, 记录每个用户的用户名、 网络地 址、 “桌面图像信息” 流传递频率、 图像质量等信息。
“桌面图像缩略图” 模块 : 对于 “已登录用户列表” 中每一个用户, 桌面投影服务器 控制系统为其维护一幅实时的 “桌面图像缩略图” 。 该模块从下述 “图像解压缩和优化” 模块 中取出处理后的 “桌面图像信息” 进行显示。该缩略图的刷新频率、 图像质量等参数由 “协 议协商” 模块获得。 “桌面图像缩略图” 模块是多个缩略图的集合, 该集合中的元素随着 “已 登录用户列表中” 用户的增加和减少而变化。
“投影仪工作模式控制” 模块 : 桌面投影服务器控制系统可以指定当前 “物理投影 仪” 的工作模式为以下两种模式之一 : “演讲模式” 或者 “讨论模式” 。 “演讲模式” 下, 任意 时刻最多允许一个用户使用投影仪, 为该用户分配全部的 “物理投影仪” 区域进行投影。当 有一个用户正在演讲时, 其他所有用户的投影仪使用申请均被拒绝。 “讨论模式” 下, 同一时 刻可以有 1 个或者多个用户同时使用 “物理投影仪” 。管理员可以从 “已登录用户列表中” 选择指定的用户, 为其分配投影窗口, 则该用户计算机的桌面内容按比例缩放显示到 “物理 投影仪” 的某个区域中。
“桌面图像信息流接收” 模块 : 该模块和 “网络通讯系统” 协同工作, 从指定的桌面 投影客户端控制系统接收 “桌面图像信息” 原始数据包。由于桌面投影客户端控制系统在 传送数据包时可能分段传送, “桌面图像信息流接收” 模块在接收到一个数据包时首先进行 拆包, 根据其头部的参数, 陆续接收到一个完整的 “计算机桌面图像信息” 压缩数据包, 并将 该数据包存入 “桌面图像信息流队列” 中。
“桌面图像信息流队列” 模块 : 该模块维护一个 “桌面图像信息” 数据包的队列, 队 列的数据来源为 “桌面图像信息流接收” 模块, 数据出口为 “图像解压缩和优化” 模块。为了 保证桌面投影服务器控制系统的工作效率, 该模块需要保持 “桌面图像信息流接收” 模块和 “图像解压缩和优化” 模块的互斥访问和同步。当队列拥挤时, “桌面图像信息流接收” 模块 需要等待 ; 队列空闲时, “图像解压缩和优化” 模块等待。
“图像解压缩和优化” 模块 : 该模块从上述 “桌面图像信息流” 队列中取出原始数据 包, 使用与桌面投影客户端控制系匹配的图像压缩算法对数据包进行解压缩。然后将得到 的 24 位位图的数据信息还原为 32 位位图数据信息, 并对该位图进行滤波处理, 得到质量较 高的桌面图像。
“数据收发” 模块 : 负责从 “网络通讯系统” 中获取数据包。
“操作封装与解析” 模块 : 负责将命令封装成统一格式的报文和将某一数据包解析 获得相应的命令或者图像数据。
“系统命令” 模块 : 负责解析来自桌面投影服务器遥控系统的命令, 并触发相应操 作。
“投影控制” 模块 : 管理员通过该模块从 “已登录用户列表” 中选择一个或多个用 户, 为其分配投影窗口进行投影。对于指定用户, 管理员可以通过 “投影控制” 模块对其进 行暂停、 继续投影等操作。针对不同的投影仪工作模式, “投影控制” 模块执行不同的控制策 略。 “演讲模式” 下只允许一个用户使用投影仪 ; “讨论模式” 下, “投影控制” 模块维护一个当前所有参加讨论的用户的队列。
“投影窗口布局” 模块 : 管理员通过该模块对用户的投影窗口进行大小、 位置的调 整。既可以自由地移动, 也可以实现平铺、 水平对齐、 垂直对齐等窗口布局。该模块的设计 使得投影仪资源得到充分利用, 并且可以根据实际需要获得用户满意的投影效果。
(5) 网络通信系统是运行于用户计算机和桌面投影控制服务器的后台进程, 它可 以作为一个独立的进程, 也可以作为桌面投影客户端控制系统或桌面投影服务器控制系统 的一个子模块。该系统对于来自上层应用程序的 “桌面图像信息” 数据包有着特殊的处理 方式, 包括对不同标识的数据包采用不同的优先级等。 该系统所使用的网络协议由上述 “投 影控制客户端系统” 和 “投影控制服务器” 的 “协议协商” 模块确定。该系统包括 “网络连 接” 、 “网络优化” 、 “网络通信” 三个模块。
“网络连接” 模块 : 负责与另一个 “网络通讯系统” 建立连接 ;
“网络优化” 模块 : 负责对封装后的 “控制包” 和 “图像包” 根据其头部的标识进行 优先级分配 ;
“网络通信” 模块 : 负责将数据传输和接收。
(6) 桌面投影服务器遥控器硬件平台 : 负责运行桌面投影服务器遥控系统。该硬 件平台既可以由任意一台通用计算机 ( 例如 PC 机 ) 来承担, 也可采用专用的嵌入式系统 ( 例如 ARM 硬件平台 ) 来承担。当采用专用的嵌入式系统方式时, 包括 “嵌入式微处理器” 、 “电源” 、 “存储器” 、 “触摸屏” 、 “USB” 、 “无线网卡” 、 “红外设备” ( 即红外发生器 ) 等单元。 其中, “无线网卡” 负责与桌面投影控制服务器硬件平台建立网络连接 ; “红外设 备” 向物理投影仪发送红外信号以实现对物理投影仪的开关等控制。
(7) 桌面投影服务器遥控系统 : 实现对桌面投影服务器控制系统的远程控制和 对 “物理投影仪” 的红外控制。该系统的使用者为投影仪管理员, 投影仪管理员通过操纵 桌面投影服务器遥控系统来远程控制物理投影仪和桌面投影服务器控制系统的各项功能 ( 例如选择哪些已连接桌面窗口显示在物理投影仪上等前述桌面投影服务器控制系统的功 能 )。
(6) 物理投影仪 : “物理投影仪” 指实际的 “投影仪” 设备。桌面投影服务器控制系 统对所连接的 “物理投影仪” 不做任何特殊要求, 市场上常规 “物理投影仪” 即可, 同时也支 持高端 “物理投影仪” 。
本发明的优点和积极效果 :
相对于传统的只允许一个计算机使用投影仪的情况, 本发明具有以下优势 :
在教师授课和会议场景下, 本发明满足了多个使用者需要在同一台投影仪上完成 讨论的需求 ;
使用嵌入式设备作为桌面投影服务器控制系统的运行平台, 使得投影仪不再需要 与 PC 机绑定, 嵌入式设备的专用性使其能够满足桌面投影服务器控制系统的需求 ;
桌面投影服务器控制系统则独立于任何待投影的用户计算机操作系统, 只有桌面 投影客户端控制系统需要根据不同的待投影的用户计算机操作系统给出相应软件版本, 桌 面投影客户端控制系统与桌面投影服务器控制系统只需传递位图图像信息从而本发明中 的桌面投影服务器控制系统端可以投影显示任何用户计算机桌面, 实现了支持不同计算机 硬件平台及操作系统图形桌面下的多个桌面同时投影显示问题 ;
本发明中的 “桌面投影控制协议” 模式具有可扩展性, 可以支持多种图像流压缩优 化处理方法, 既可以支持现有公开协议的, 也可以支持专用协议的 ;
本发明中的 “桌面投影控制协议” 协商, 桌面投影客户端控制系统与桌面投影服务 器控制系统双方均可以随时发起针对此次连接的 “计算机桌面投影协议” 具体参数重新设 定, 此后双方按照此协议约定进行待投影用户计算机桌面图像网络传递和操作控制。从而 可以根据网络负载等实际情况实时改变图像捕捉、 图像优化、 网络传输等策略, 以最大限度 满足用户对图像质量和流畅度的要求 ;
本发明不但可以支持多个用户计算机桌面在单个物理服务器的同时投影显示, 而 且对于用户计算机桌面的运行程序类型没有任何约束, 可包括常见的网页浏览、 幻灯片演 示、 视频播放等各种桌面场景 ;
本发明中桌面投影服务器控制系统的投影控制功能支持动态地从所有已连接用 户中选择若干将其计算机桌面内容显示到投影仪上, 从而减少不必要的网络流量浪费 ;
本发明中桌面投影服务器控制系统动态支持已连接用户计算机桌面的缩略图实 时生成和显示。一方面极大地方便投影仪管理员动态查看用户计算机桌面实时内容, 从而 决定是否将其显示到投影仪上 ; 另一方面对于已连接但其计算机桌面暂时不需投影的用 户, 其桌面投影客户端控制系统仅需要将数据量很小的桌面缩略图传送至桌面投影服务器 控制系统端, 因此可以大大降低网络流量浪费 ; 本发明中桌面投影服务器控制系统支持动态地 “投影窗口布局” 功能。 大大方便了 投影仪管理员对投影窗口进行大小、 位置调整等有效管理, 使得投影仪资源得到充分利用, 并且可以根据实际需要获得用户满意的投影效果。
本发明中的 “投影控制服务器遥控器” 可以对桌面投影服务器控制系统进行远程 控制, 使得管理员对直接连接于 “物理投影仪” 的桌面投影服务器控制系统进行方便地管 理。
【附图说明】
图 1 是本发明的物理架构示意图, 从该图可以容易看出本发明所适用的场景, 各 种用户计算机设备 10 均可以通过网络将自己的计算机桌面传送到桌面投影服务器控制系 统 20 上, 而管理员可以通过遥控器 30 来管理这些投影窗口, 并决定是否显示这些投影窗口 和在物理投影仪 50 上显示的位置。
图 2 是采用专用嵌入式实现的桌面投影控制服务器硬件平台和桌面投影服务器 遥控器硬件平台的整体硬件结构图, 本图完整给出采用专用嵌入式系统而非采用普通 PC 机的桌面投影控制服务器和桌面投影服务器遥控器的硬件结构。
图3是 “投影控制服务器遥控器系统” 工作流程图, 该系统功能一部分是通过红外 设备控制物理投影仪, 另一部分功能是模拟桌面投影控制服务器系统的鼠标和键盘操作, 从而实现对桌面投影控制服务器系统的远程遥控。
图 4 是本发明的逻辑架构图, 该图完整给出桌面投影客户端控制系统、 桌面投影 服务器控制系统、 桌面投影服务器遥控系统和网络通信系统内部逻辑功能模块和之间的关 系;
图 5 是用户连接和登录过程图, 桌面投影客户端控制系统向桌面投影服务器控制系统发起连接请求并就用户身份进行认证, 桌面投影服务器控制系统只为合法用户提供计 算机桌面投影服务 ;
图6是 “计算机桌面投影协议” 协商流程图, 桌面投影客户端控制系统与桌面投影 服务器控制系统在已连接情况下可以动态地发起 “计算机桌面投影协议” 的协商 ;
图 7 是应用实例 1 的工作流程图, 从中可以看出桌面投影客户端控制系统和桌面 投影服务器控制系统中的主要处理流程 ;
图 8 是应用实例 1 中图像传递和接收部分流程图, 从中可以看出桌面投影客户端 控制系统和桌面投影服务器控制系统中就计算机桌面图像的主要处理流程 ;
图 9 是应用实例 1 中数据包的实例图, 桌面投影客户端控制系统与桌面投影服务 器控制系统所传递的任何数据被封装为一个数据包, 其包含头部信息和具体数据 ;
图 10 是应用实例 1“演讲模式” 的物理拓扑图, 演讲模式下, 只有一个用户计算机 桌面被投影到物理投影仪上 ;
图 11 是应用实例 1“讨论模式” 的物理拓扑图, 讨论模式下, 可以有多个用户计算 机桌面同时投影到同一个物理投影仪上。 【具体实施方式】 本发明提供了一种在单台物理投影仪上同时显示多个计算机桌面的方法, 该方法 涉及的硬件和控制模块包括待投影用户计算机、 安装在待投影用户计算机上的桌面投影客 户端控制系统、 桌面投影控制服务器硬件平台、 安装在桌面投影控制服务器硬件平台上的 桌面投影服务器控制系统、 桌面投影服务器遥控器硬件平台、 安装在桌面投影服务器遥控 器硬件平台上的桌面投影服务器遥控系统、 物理投影仪以及网络通信系统, 该方法的具体 实现步骤如下 :
第 1、 启动核心系统的硬件运行环境, 包括桌面投影控制服务器硬件平台、 桌面 投影服务器遥控器硬件平台、 网络通信系统及物理投影仪, 网络通信系统开始监听网络连 接;
第 2、 运行安装在桌面投影控制服务器硬件平台上的桌面投影服务器控制系统, 并 与本地的 “网络通讯系统” 实现本地连接, 并包括如下 :
第 2.1、 从本地网络通讯系统中接收数据包, 并对数据包头部信息解析, 确认数据 包为桌面图像流数据还是命令数据, 并送交相应功能模块进一步处理 ;
第 2.2、 远程计算机桌面投影用户身份认证 ;
第 2.3、 与各个桌面投影客户端控制系统单独就 “计算机桌面投影协议” 进行协 商;
第 2.4、 接收各个桌面投影客户端控制系统发来的计算机桌面图像流 ;
第 2.5、 处理及优化计算机桌面图像流, 生成相应投影窗口, 每个投影窗口代表一 个用户计算机桌面, 因此每个投影窗口对应一个已连接的计算机桌面图像流 ; 投影窗口的 状态包括投影状态和不投影状态。
第 2.5、 为各个桌面投影客户端控制系统的 “计算机桌面” 图像流生成桌面缩略 图;
第 2.6、 接收并响应远程的桌面投影服务器遥控系统发来的鼠标和键盘指令 ;
第 2.7、 根据本地具体功能配置和管理员设置, 对于所有的投影窗口, 若该投影窗 口的状态为投影状态, 则在 “物理投影仪” 上显示该投影窗口, 从而实现显示指定的各个待 投影用户计算机的桌面 ; 管理员可以动态设置, 使得多个投影窗口同时投影显示。
第 3、 运行安装在桌面投影服务器遥控器硬件平台上的桌面投影服务器遥控系统, 并包括如下 :
第 3.1、 网络连接并登录到远程的桌面投影服务器控制系统 ;
第 3.2、 监控本地桌面投影服务器遥控器硬件平台上的鼠标和键盘事件 ;
第 3.3、 将本地新产生的鼠标和键盘事件, 根据功能设置, 若属于操控投影服务器 遥控系统的事件则及时发送到桌面投影服务器遥控系统 ;
第 3.4、 将本地新产生的鼠标和键盘事件, 根据功能设置, 若属于操控物理投影仪 的事件则及时转化为控制指令, 并以红外信号方式及时发送给物理投影仪, 从而控制物理 投影仪相关功能。
自此, 通过桌面投影服务器遥控系统即可控制远程的物理投影仪和远程的桌面投 影服务器控制系统。
第 4、 启动各待投影用户计算机, 然后独立运行安装在各个待投影用户计算机上的 桌面投影客户端控制系统, 并与本地的 “网络通讯系统” 实现本地连接。并包括如下 :
第 4.1、 从本地网络通讯系统中接收数据包, 并对数据包头部信息解析, 并送交相 应功能模块进一步处理 ;
第 4.2、 网络连接并登录到远程的桌面投影服务器控制系统 ;
第 4.3、 与远程的桌面投影服务器控制系统就 “计算机桌面投影协议” 进行协商 ;
第 4.4、 进行本地图形操作系统桌面的图像捕捉 ;
第 4.5、 本地桌面图像优化处理, 生成桌面图像流 ;
第 4.6、 根据 “计算机桌面投影协议” , 若需本地生成桌面缩略图, 则在本地生成桌 面缩略图 ;
第 4.7、 根据 “计算机桌面投影协议” , 定期发送本地桌面图像流及缩略图。
本发明第 2.3 及 4.3 步所述的 “计算机桌面投影协议” 包含待投影用户计算机桌 面图像捕捉频率、 计算机桌面图像优化协议具体版本号、 计算机桌面投影图像质量、 及图像 传递控制参数 ; “计算机桌面投影协议” 采用版本号方式管理, 多个版本可以在本系统内并 存, 并支持未来新的 “计算机桌面投影协议” “计算机桌面投影协议” ; 的协商是指桌面投影 客户端控制系统和桌面投影服务器控制系统双方在用户登录后均可以任意时刻发起针对 本次连接的 “计算机桌面投影协议” 具体参数重新设定, 此后双方按照新的协议约定进行待 投影用户计算机桌面图像捕捉、 处理、 网络传递和操作控制。
本发明所述的桌面投影客户端控制系统中具备支持用户身份登录认证请求 ; 用户 信息可被记录在本地参数文件中, 该系统可根据此信息连接指定的桌面投影服务器控制系 统, 若连接成功则向桌面投影服务器控制系统提请进行用户身份认证请求, 若请求通过, 则 成功登陆到桌面投影服务器控制系统。同时具备支持根据与桌面投影服务器控制系统 “计 算机桌面投影协议” 协商约定结果在本地进行约定频率的图像捕捉, 包括支持视频播放场 景下桌面图像 ; 在本地生成桌面图像缩略图 ; 优化及压缩桌面图像, 从而形成桌面图像流 ; 并约定频率发送给远程的桌面投影服务器控制系统。本发明所述的桌面投影控制服务器硬件平台既可以由任意一台通用计算机来承 担, 也可采用专用的嵌入式系统来承担, 上述无论哪种计算设备都需要有能力与一台物理 投影仪相连接, 其连接方式既可以是有线电缆也可以是网络方式。
本发明所述的桌面投影服务器遥控器硬件平台既可以由任意一台通用计算机来 承担, 也可采用专用的嵌入式系统来承担, 但需有无线网卡或有线网卡, 从而远程操控桌面 投影服务器控制系统 ; 若带有红外设备即红外信号发生器则可支持对物理投影仪的操控。
本发明所述的桌面投影服务器控制系统中具备支持用户管理和用户身份认证, 采 用多用户模式来管理多个桌面投影客户端控制系统的连接, 用户信息既可以直接采用桌面 投影服务器控制系统所在的操作系统用户, 也可以使用桌面投影服务器控制系统内自定义 的用户 ; 桌面投影客户端控制系统必须使用合法用户身份并通过桌面投影服务器控制系统 认证后方可以与桌面投影服务器控制系统进行桌面投影通信 ; 桌面投影服务器控制系统中 支持对所有已登录的用户列表的维护, 并记录每个桌面投影客户端控制系统的用户名、 网 络地址和 “桌面图像信息” 流传递频率能参数 ; 桌面投影服务器控制系统中支持动态关闭已 登录用户的连接。具备支持与多个已连接的桌面投影客户端控制系统进行各自的 “计算机 桌面投影协议” 的协商工作, 桌面投影服务器控制系统既可以主动发起协议协商, 也可以被 动应答协议协商 ; 桌面投影服务器控制系统同时支持多个版本的 “计算机桌面投影协议” , 与不同的桌面投影客户端控制系统可以采用不同版本的 “计算机桌面投影协议” 。 还应当具 备支持对 “桌面图像信息” 流进行解压缩及优化处理, 并支持无损和有损图像恢复, 从而在 桌面投影服务器控制系统端重新生成网络上待投影计算机桌面的桌面投影窗口 ; 桌面投影 服务器控制系统对各个桌面投影窗口可实时生成对应的缩略图, 并可显示缩略图。具备支 持对桌面投影窗口的布局, 包括桌面投影窗口大小的调整、 桌面投影窗口位置的移动、 桌面 投影窗口的平铺、 桌面投影窗口的层叠操作 ; 桌面投影服务器控制系统中具备支持从多个 已连接的用户计算机桌面中选择若干建立桌面投影窗口并显示在物理投影仪上, 同时该功 能也支持桌面投影窗口内容的实时显示、 暂停与继续操作。
为能进一步了解本发明的技术内容、 特点及功效, 兹列举以下应用实例, 并配合附 图详细说明如下 :
应用实例 1
在传统的教学场景中, 往往是教师在讲台上使用幻灯片演示课程内容, 学生被动 地接收, 当学生对教授内容有任何疑问时, 不能及时表达并得到解答。 特别是在计算机课程 中, 每个学生都在使用自己的电脑进行练习, 当练习过程中遇到疑惑需要老师解决时只能 等待老师走到身边进行解答, 多个同学之间也很难就一个问题进行交流。
在应用实例 1 中, 教师可以通过让多个学生的计算机桌面同时显示在同一个物理 投影仪上, 从而很容易展示多个学生对同一个问题的不同解决方法以及进一步进行比较讨 论。
传统的教师讲课学生听讲的模式下, 教师与学生之间的互动很少。
图 4 是本发明的完整逻辑框图。
图 7 展示应用实例 1 的工作流程。
第一、 启动硬件运行环境和各服务器软件系统
首先, 桌面投影控制服务器硬件平台启动。实施例 1 使用基于 ARM9 的开发板, 使用 S3C2440 微处理器、 SD 存储卡、 VGA 转接板等。根据使用的 “物理投影仪” 的不同, 桌面投 影控制服务器硬件平台与投影仪连接方式不同。对于普通的有线投影仪, 通过 RS232 线缆 连接 ; 对于高端的网络投影仪, 通过无线网络 IEEE 802.11b/g 连接。
步骤 11 : 桌面投影控制服务器硬件平台启动。
其次, 桌面投影控制服务器硬件平台上的 “网络通讯系统” 启动。这里的 “网络通 讯系统” 可以作为一个独立的进程, 也可以作为桌面投影服务器控制系统的一子模块。 实施 例 1 中将其作为桌面投影服务器控制系统的一个子模块。当桌面投影服务器控制系统的进 程启动时, “网络通讯系统” 在监听预设的 TCP 端口, 等待来自桌面投影客户端控制系统的连 接请求。
步骤 21 : 桌面投影服务器控制系统启动。
步骤 22 : 桌面投影服务器控制系统端的 “网络通讯系统” 启动。
步骤 23 : 桌面投影服务器遥控器硬件平台启动和运行在其上的桌面投影服务器 遥控系统启动。
步骤 24 : 桌面投影服务器遥控系统和桌面投影服务器控制系统建立连接并进行 登录。 登录成功之后, 桌面投影服务器遥控系统中触摸板上指定区域的鼠标和键盘的消 息将被映射到桌面投影服务器控制系统从而实现前者对后者的远程控制, 也可以通过红外 设备来操纵物理投影仪。桌面投影服务器遥控系统的使用者为投影仪管理员, 投影仪管理 员通过操纵桌面投影服务器遥控系统来远程控制物理投影仪和桌面投影服务器控制系统 的各项功能 ( 例如选择列出桌面投影服务器控制系统上已登录用户的功能 ), 本案例中教 师操控着桌面投影服务器遥控器硬件平台和其上的桌面投影服务器遥控系统, 他维护者物 理投影仪具体显示哪些学生的计算机桌面。
第二、 独立运行安装在各个待投影用户计算机上的桌面投影客户端控制系统
启动待投影用户计算机以及其上的桌面投影客户端控制系统软件。本案例中, 教 师和每个学生的计算机 ( 即待投影用户计算机 ) 都启动 ( 这些计算机都有可能将他们的计 算机桌面投影到投影仪上 ), 并启动运行于他们各自计算机中的桌面投影客户端控制系统 软件。每个参与演示过程的用户计算机的操作系统可不尽相同, 运行对应的桌面投影客户 端控制系统或基于 Java 的跨平台桌面投影客户端控制系统均可, 这些桌面投影客户端控 制系统实现原理相同 ( 详见前述发明内容 ), 只是针对不同操作系统的桌面图像捕捉略有 不同。
步骤 31 : 待投影用户计算机启动。
步骤 32 : 桌面投影客户端控制系统启动。
然后, 教师和学生的个人计算机根据指定的 IP 地址和端口号与教室内的 “服务 器” 建立 TCP 连接。不同计算机之间的连接方式取决于教室内的布线方式, 可以通过以太网 或者无线网络相互连接。实质上, 教室内的所有计算机, 包括 “服务器主机” 构成一个小型 的局域网, 这样的环境保证了 “投影控制客户端系统” 与 “投影控制服务器” 之间图像信息 传递的效率, 增强了多个用户之间交流的效果。
步骤 33 : 各用户 ( 教师和学生 ) 计算机网络连接到远程的桌面投影服务器控制系 统。
第三、 通过操控桌面投影服务器控制系统来实现单台物理投影仪上同时显示多个 计算机桌面
所有想要参与演示的教师和 / 或学生使用自己的用户名和密码登录到教室内的 桌面投影服务器控制系统。在桌面投影服务器控制系统上有一个用户信息文件, 记录了用 户的密码和权限。当桌面投影服务器控制系统接收到登录请求时, 在用户信息文件中查找 用户名和密码, 如果匹配, 则返回该用户的权限。 这个权限决定了该用户的桌面图像捕捉频 率、 图像质量、 和传递效率等。用户通过认证之后, 桌面投影服务器控制系统便与桌面投影 客户端控制系统进行协议协商, 对上述参数进行约定。之后的一切有关图像的操作均按照 约定的协议进行。
步骤 41 : 桌面投影服务器控制系统对远程计算机桌面投影用户身份认证
步骤 42 : 桌面投影服务器控制系统与各个桌面投影客户端控制系统单独就 “计算 机桌面投影协议” 进行协商
每当有用户登录, 桌面投影服务器控制系统就会在 “已登录用户列表中” 记录该用 户的基本信息, 并为之显示一幅缩略图。该缩略图的刷新频率和画面质量由上述协议协商 结果决定。表 1 显示了 “已登录用户列表” 的一种实现方式。
表 1“已登录用户列表” 实例 用户名 用户 1 用户 2 用户 3 ... IP 地址 刷新频率 实时网速 当前状态 讨论 讨论 未使用 ... 缩略图 缩略图 1 缩略图 2 缩略图 3 ...192.168.0.2 30 次 / 秒 500kb/s 192.168.0.3 25 次 / 秒 300kb/s 192.168.0.4 20 次 / 秒 100kb/s ... ... ...步骤 43 : 刷新 “已登录用户列表” , 显示缩略图。
根据课堂内容, 在教室讲课阶段, 管理员可以将桌面投影服务器控制系统工作模 式设置为 “演讲模式” 。 在这种模式下, 教师用户独自使用投影仪, 为其分配全部的投影仪屏 幕。图 10 显示了 “演讲模式” 的一个实例。
在学生讨论阶段, 管理员可以将桌面投影服务器控制系统工作模式设置为 “讨论 模式” 。在这种模式下, 多个用户 ( 包括学生和教师 ) 同时登录到桌面投影服务器控制系统 中, 管理员 ( 本案例中为教师 ) 通过设置桌面投影服务器控制系统的 “已登录用户列表” 每 一行用户的当前状态, 该状态决定每个已连接到桌面投影服务器控制系统的用户计算机桌 面窗口显示或不显示 ; 对于投影状态的用户计算机桌面窗口, 管理员可以采用鼠标选中拖 拽的方法移动指定的用户计算机桌面窗口, 这些操作结果会显示在物理投影仪上, 因此实 现了将指定的用户计算机桌面窗口投影到物理投影仪的指定区域。在物理投影仪上, 同时 有多个用户计算机桌面窗口 ( 多个计算机桌面窗口之间位置和叠放顺序均可任意 ), 教师 和学生之间可以自由的讨论课堂内容。比如计算机课程上, 学生 A 将自己的练习程序的运
行结果投影到屏幕上, 学生 B 可以看到, 判断出错的原因, 为其解释。或者, 学生 B 可以将正 确的解决方法投影到 “物理投影仪” 的另一块区域, 学生 A 通过将自己的程序代码和学生 B 比较, 可以很直观地找到出错的位置, 并加以改正。
需要说明的是, 这里桌面投影服务器控制系统还可以接入更多的学生, 这样就形 成了课堂上多人讨论的场景。如图 11 所示。讨论过程中, “投影控制服务器” 维护一个讨论 组, 所有用户可以申请加入或退出讨论组, 桌面投影服务器控制系统端相应的操作是为该 用户分配投影窗口或者剥夺其投影窗口。
另外, 讨论过程中, 管理员 ( 本案例中即指教师 ) 通过桌面投影服务器遥控系统远 程控制桌面投影服务器控制系统 ( 即控制其的键盘和鼠标 ) 可以自由安排所有投影窗口的 布局, 调整其大小和位置, 已达到最好的讨论效果。例如, 当前有 2 个学生正在讨论, 则为其 分配较大的投影窗口, 且置于 “物理投影仪” 的中心位置, 而讨论组中的其他用户则可以暂 时缩小投影窗口, 或者隐藏其投影窗口, 以保证正在讨论的同学占有最多的 “物理投影仪” 资源。
步骤 44 : “演讲模式” 下, 管理员从 “已登录用户列表” 中选择一个用户, 为其分配 全部的 “物理投影仪” 屏幕, 显示其计算机桌面的内容。
步骤 45 : “讨论模式” 下, 管理员从 “已登录用户列表” 中选择多个用户, 分别为其 分配一个投影窗口, 用以显示其计算机桌面的内容。
步骤 46 : 讨论过程中, 管理员调整讨论组中各个用户的投影窗口的布局。
第四、 桌面投影客户端控制系统与桌面投影服务器控制系统之间 “桌面位图图像 信息” 的传递
图 8 中的步骤 641-642-651-652-661-662 显示了桌面投影客户端控制系统和桌面 投影服务器控制系统之间图像传递的过程。
首先, 桌面投影客户端控制系统初始化镜像显卡的驱动, 包括分辨率的设置、 注册 表的更新等内容。 初始化之后, 该驱动程序将一虚拟显卡镜像到真实的显卡, 将真实显卡的 每一帧 ( 即 “桌面位图图像信息” ) 的拷贝保存于一块内存中。这里的每一帧就是该计算机 桌面的显示内容。为了在用户态程序可以获得该帧的信息, 在此驱动程序中将保存每一帧 图像信息的内存映射到用户进程空间。
步骤 51 : 桌面投影客户端控制系统系统初始化镜像显卡驱动。
步骤 52 : 桌面投影客户端控制系统捕捉计算机桌面生成 “桌面位图图像信息” 。
其次, 桌面投影客户端控制系统根据其和桌面投影服务器控制系统协商得到的参 数, 每隔一定时间从前述共享内存中取出一帧数据。在 Windows XP 操作系统下, 这里的一 帧是 32 位位图格式, 为了增大压缩比, 首先将该帧数据转化成 24 位位图数据。然后将 24 位位图数据区使用指定的压缩算法 ( 本例中采用 JPEG 算法 ) 进行压缩, 压缩后的数据包保 存于本地的图像流队列中。
接着, 桌面投影客户端控制系统的 “桌面图像信息传送” 模块每隔一定时间从本地 的图像流队列中取出一个压缩包, 准备将其交给本地 “网络通讯系统” 传送至指定的 “投影 控制服务器” 。如果压缩包数据量较大, 将其分段为几个较小的数据包。每个包添加一个头 部, 记录该包的标识、 大小、 在总包中的偏移量等信息。图 9 所示是一个数据包的结构。分 段之后, 依次将每个数据包传送至桌面投影服务器控制系统。步骤 53 : 压缩 “桌面位图图像信息” , 存入到本地的图像流队列。
步骤 54 : 将数据包分段发送至桌面投影服务器控制系统。
桌面投影服务器控制系统的接收端, 每当接收到一个数据包, 拆包后, 检查其标 识、 大小和在总包中的偏移量等信息, 根据偏移量, 陆续接收到一个完整的图像压缩包。然 后将该压缩包存入本地的图像流队列中。
桌面投影服务器控制系统的 “图像解压缩和优化模块” 每隔一定时间从本地的图 像流队列中取出一个压缩包, 使用和桌面投影客户端控制系统匹配的压缩算法进行解压, 并将解压得到的 24 位位图的帧信息转化成 32 位位图的帧信息。最后对该帧进行滤波等优 化。 最终将优化后的帧数据输出到指定的投影窗口中, 并生成缩略图。 桌面投影客户端控制 系统和桌面投影服务器控制系统之间的协议协商可以提高帧刷新的频率, 提升用户体验。
步骤 55 : 桌面投影服务器控制系统接收到数据包。
步骤 56 : 解压收到的数据包并优化处理, 输出到指定的投影窗口中, 若该投影窗 口状态为投影状态, 则该投影窗口最新变化将及时显示到物理投影仪上。