CN103777768A - 一种数字式kvm主控端与受控端之间同步状态信息的方法 - Google Patents
一种数字式kvm主控端与受控端之间同步状态信息的方法 Download PDFInfo
- Publication number
- CN103777768A CN103777768A CN201210395727.5A CN201210395727A CN103777768A CN 103777768 A CN103777768 A CN 103777768A CN 201210395727 A CN201210395727 A CN 201210395727A CN 103777768 A CN103777768 A CN 103777768A
- Authority
- CN
- China
- Prior art keywords
- field
- status data
- control end
- byte stream
- coding
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Communication Control (AREA)
Abstract
本发明公开了一种数字式KVM切换器的主控端与受控端之间同步状态信息的协议与实现方式。日常应用中,数字式KVM的主控端与受控端会不断收到来自外部设备(键盘、显示器、鼠标)及自身设备的控制信号、状态信号。为了能够实现远程控制,主控端与受控端必须及时有效的同步这些信息,并更新各自的内部状态。本发明通过提出一种能有效表达层次化结构信息的,紧凑的编码解码方案来优化主控端与受控端的状态同步更新。
Description
技术领域
本发明涉及一种KVM电脑切换器装置,尤其涉及一种采用CAT5网线连接KVM主控端与受控端的数字式KVM切换器。
背景技术
近年来,计算机的应用已经深入到人们生活的方方面面。面对越来越复杂的计算任务,就需要越来越多计算机的协同工作才能完成。例如,在中央机房或数据中心,往往需要部署了几百甚至几千台计算机;甚至一般家庭都有可能配置三台以上的计算机。一般说来,每一台计算机都需要配置一套***设备(键盘、显示器、鼠标)才能被管理员操控。不仅投资巨大,占用空间,而且管理员往往要穿梭于各台计算机之间,十分不便。KVM电脑切换器(KVM Switch)正是用来解决此问题的关键设备。通过将每台计算机的输入输出信号汇总到KVM,使用者仅使用一组键盘、显示器、鼠标,就可以操控这些计算机。当需要切换信号线路时,只需要按一下KVM上的选路开关,即可切换去监控另一台计算机。
传统KVM设备采用“三并线”(键盘、显示器、鼠标的捆绑线)连接电脑主机与KVM设备。但三并线的线材价格较高,信号衰减很快,传输距离不超过20米。由于三并线的接头较多,接线较宽,对于支持16路以上的KVM切换器,其三并线的合计直径可达10厘米以上,线材粗重,容易互相缠结,显得杂乱无章,给使用带来很大不便。数字式KVM通过在每台计算机后端添加一个小型KVM受控端设备,将键盘、显示器、鼠标的信号转化为差分信号,用CAT5网线与KVM切换器(即KVM主控端)连接进行通信,从而取代传统的三并线连接方式。由于网线价格便宜,横截面较小,每条控制线路只需一根网线,信号传输距离可达150米以上,大大降低了机房布线的难度。
为了实现即时的操作响应,数字式KVM的主控端与受控端要不断的同步各种信号,其中包括键盘、鼠标、显示器以及数字式KVM自身的控制信号与状态信号。这些信号中有些具有很高的发送频率,有些则是对复杂的结构化信息的局部更新。如何利用有限的带宽和计算能力受限的微控制器,提供稳定的、高效的状态同步更新机制,是数字式KVM性能优化的一个重要组成部分。
发明内容
数字式KVM设备内部一般都存储着结构化的数据(如C语言的结构体)。这样一个数据往往包含多个字段,字段可以是基本数据类型(如整数),也可以是另一个结构化的数据,从而形成层级结构。当数字式KVM要在主控端与受控端同步这些结构化数据时,往往只是更新结构中的某个或某几个字段。如果传送整个结构的全部信息,不但浪费带宽,也增加了发生传输故障的风险。本发明的目的是给出一种有效的在数字式KVM主控端与受控端进行通信的协议及具体实现方式,此协议具有紧凑的数据表达,向后兼容,高容错性,易于嵌入式 处理器执行的特性。
本发明所采用的技术方案是:
一种数字式KVM主控端与受控端之间同步状态信息的方法,其特征在于:主控端与受控端均具有一套状态更新收集器,执行指定协议的编码器,执行指定协议的解码器;所述更新收集器包括控制器,计时器,两个状态数据存储区;所述编码器与状态更新收集器相连,将状态更新收集器采集到的状态变更编码为字节流;所述解码器与接收装置相连,用于将编码器编码后的字节流转化为状态的更新;所述指定协议是一种编码解码方式,将数字式KVM主控端与受控端所存储的结构化状态数据表达为多个“字段头部信息+字段内容”的直接拼接而成的字节流或将字节流转化为结构化状态数据的某个字段的变化;所述字段头部信息为8bits数据,其中高5bits用于编码字段编号,低2bits用于编码字段类型,剩余1个bit用于表示清空标志;所述字段类型包括变长整数、带长度的字节流、32位定长字节流、64位定长字节流4个可能取值;所述字段内容根据字段头部信息指定的字段类型进行不同的编码。
其中的编码解码方式为:当字段类型为变长整数时,字段内容的编码为约定大小端(Big-endian or Little-endian)的以7bits为单位的整数编码,每个字节(8bits)的最高位用于表达是否还需要额外细节来存放整数编码,剩余位用于存放7bits为单位的整数编码。当字段类型为带长度的字节流时,字段内容的编码为由变长整数表示的字节流长度+字节流原始内容,且编码器将结构化数据中的子结构信息也用带长度的字节流来进行编码。当字段类型为32位定长字节流或64位定长字节流时,则字段内容的编码保持原始字节内容不变,数字式KVM的主控端与受控端根据状态数据的实际结构来确定字段内容是整数还是浮点数。
编码器对于数字式KVM主控端与受控端所存储的结构化状态数据中未变动的字段,不会生成任何编码信息;编码器可以用同一个字段头部发送多个不同的字段内容,用于表示数组字段的各个元素的信息。
解码器对于字节流中多个具有相同字段头部的信息,根据数字式KVM的主控端与受控端状态数据的实际结构来确定是否表达为数组字段的各个元素,如果不是数组字段,则使用收到对应字段的最后一次的值。如果字段头部信息的清空标志被置位,则重置数字式KVM的主控端与受控端状态数据对应字段信息,对于数组字段为清空,对于非数组字段为设为初始的默认值。
解码器收到带长度的字节流时,会根据存储在数字式KVM主控端与受控端中的状态数据的实际结构,来确定是普通字节流还是子结构信息,并对于子结构信息递归的执行相同的解码方式,直到解析至基本类型字段为止。
更新收集器内部的控制器会将更新记录到2个状态数据存储区中的一个里,并由计时器 发出信号,通知控制器清空另一个状态数据存储区,并将此后发生的更新记录到此状态数据存储区中。内部的控制器、2个状态数据存储区都与编码器相连,控制器会切换当前使用的状态数据存储区后通知编码器读取另一个状态数据存储区中的信息。
附图说明:
图1为本发明中数字式KVM切换器的主控端与受控端的通信的功能模块关系图。
图2为本发明中数字式KVM切换器的主控端与受控端的状态变更收集器模块关系图。
图3为本发明中数字式KVM切换器的主控端与受控端的状态更新执行器模块关系图。
具体实施方式:
首先要在图1所示的编码器与解码器中实现下述协议。对数字式KVM的主控端与受控端内部所维护的结构化数据进行编码解码。第一步是对各个字段进行编号。例如结构S,包括三个字段s1,s2,s3,分别用一个整数进行编号,如1,2,3。编号不一定要连续,但要确保同一字段在数字式KVM主控端与受控端的编号一致。编号的取值范围为0到31,也就是每个结构体最多可以有32个字段,这个范围对于一般应用已经足够。第二步,整个结构体的编码就是其所有字段编码的直接拼接:
每个字段的编码都是由1字节的头部,后跟多个字节的内容编码组成的。各个字段的编码不必按字段编号顺序进行,即在编码器输出的整个字节序列中,可以先输出字段2的编码,再输出字段1的编码。在结构体中的字段并不一定都要进行编码,当字段值为空时,就可以不被编码输出,从而节省带宽。解码器能够处理上述这种情况,对未编码的字段,赋予默认值。字段头部为一个字节的编码,包含3个部分。从最高位MSB bit-0到最低位LSB bit-7分别为:
其中字段编号就是结构体中字段被指定的id号(取值范围0-31),清空标志位被置位时表示接收端对应的字段内容应被清空,这是为了区分结构中的某字段到底是没有发生更新,还是更新的内容为清空原有字段的数据,对数组类的字段更新十分有效。类型编码取值范围0-3,表示字段内容的类型:
类型编码 | 含义 | 携带的数据类型 |
0 | 变长整数 | 任意有符号或无符号整数,布尔值 |
1 | 带长度的字节流 | 字符串或子结构 |
2 | 32位定长字节流 | 32位整数,单精度浮点数 |
3 | 64位定长字节流 | 64位整数,双精度浮点数 |
其中“变长整数”的编码为:Little-endian方式排布表达整数的各个字节,每字节8bits,其中低7bit用于存储整数值,高位用于表示是否存在后续字节。例如整数135,将被编码为二进制的:
(1000 0111)(0000 0001),16进制表示为87 01。
| |
有后续 无后续
其中“带长度的字节流”的编码为:长度信息+指定长度的字节信息。其中长度信息以“变长整数”方式编码。这种类型的数据不仅被用于编码字符串,还被用于编码子结构信息。例如某个字段是另一个结构体的实例,则编码器会递归的将这个实例编码为字节流,并当做字符串作为这个字段的被编码后的内容。
其中“32位定长字节流”、“64位定长字节流”的编码就是源数据的原始表达,分别占用4个、8个字节。具体表示整数还是浮点数,则由数字式KVM的主控端与受控端自行约定。
例如结构S的s1字段的编号是2,存储着类型编码为0的整数135,则此字段的整体编码为二进制的:
(0001 0000)(1000 0111)(0000 0001),16进制表示为10 87 01。
| | |
编号2 类型0 变长整数
再例如结构S的s2字段的编号为3,存储着类型编码为1的字符串″abc″,则此字段的整体编码为二进制的:
(0001 1001)(000 00011)(0110 0001)(0110 0010)(0110 0011)
| | | | | |
编号3 类型1 长度3 字符a 字符b 字符c
假如某个字段为数组,则编码为多个具有相同字段编号、具有相同类型编码的字段。例如结构S的s3字段编号为4,变长整数数组,包含了2个元素135和136,则此字段的整体编码为二进制的:
(0010 0000)(1000 0111)(0000 0001)(0010 0000)(1000 1000)(0000 00001)
| | | | | |
编号4 类型0 整数135 编号4 类型0 整数136
第三步,数字式KVM的主控端与受控端内部维护着不同设备的状态信息,但基于上述编码方案,可简化这些结构化信息的使用与传输方式。定义KVM的主控端与受控端状态结构包含4个字段,这4个字段的编号与含义为:
编号 | 含义 |
0 | KVM设备内部状态 |
1 | 视频状态 |
2 | 鼠标状态 |
3 | 键盘状态 |
其中每一个字段都是另一个结构体的实例,由上述编码解码机制递归的解析。
图1所示的状态更新收集器检测接收KVM设备、视频、鼠标、键盘状态的变化,并将变化信息存储在局部数据结构中,并通知编码器来获取结构中的信息。状态更新器内部维护了2个结构相同的局部数据结构,交替用于接收最新状态变更与编码器读取缓冲区。一旦通知编码器来读取信息,则立刻切换两个数据的用途,目的是不阻塞接收新的变更。编码器收到通知后从状态更新器的指定结构中读取数据,并应用上述编码策略,将结构中的信息编码为字节流传递给发送装置。发送装置流式处理编码器的输出,通过物理通讯链路(如CAT5网线)发送到远端的接收装置。接收装置将收到的字节逐一发送给解码器。解码器执行前述编码协议的逆过程,将解码后各字段的变更发送给状态更新执行器。
例如,数字式KVM主控端与受控端都维护了一个键盘CAPS LOCK是否开启的状态信息,这个信息存储在主控端与受控端约定好的编号为3的键盘状态字段中编号为2的整型字段内,此字段为0时表示CAPS LOCK是关闭状态,为1时表示是开启状态。假设初始值为0。如当数字式KVM的主控端接收到键盘CAPS LOCK按键输入时,主控端将信息通过CAT5网线发送给远程的受控端,受控端将按键信号还原并发送给受控主机。如果一切正常,受控主机会反馈一个CAP LOCK state toggle信号给数字式KVM受控端。受控端会更新内部记录的键盘状态,并将此信号发送给图2中的控制器。控制器更新状态数据1中对应字段的值为1。当计时器计时到达指定周期后,就触发控制器切换状态数据。控制器会清空状态数据2中的全部信息,并将以后的输入信号所表示的状态变化更新到状态数据2中。同时,控制器会通知编码器对状态数据1进行编码。按照前述编码方案,编码器会将此更新信息编码为字节流:
(0001 1001)(0000 0010)(0001 0000)(0000 0001)
| | | | | |
编号3 类型1 长度2 编号2 类型0 变长整数1
进而由发送装置送出字节流,表示CAPS LOCK状态反转了。主控端接收装置收到字节流后通过解码器解码,并逐一将变化的字段信息发送给状态更新执行器。如图3所示,状态更新执行器收到解码器送来的CAPS LOCK状态反转消息后,首先由控制器更新状态数据,而后控制器会生成对应的控制信号并发送给键盘设备,通知键盘变更CAPS LOCK LED指示灯的状态。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原 则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数字式KVM主控端与受控端之间同步状态信息的方法,其特征在于:主控端与受控端均具有一套状态更新收集器,执行指定协议的编码器,执行指定协议的解码器;所述更新收集器包括控制器,计时器,两个状态数据存储区;所述编码器与状态更新收集器相连,将状态更新收集器采集到的状态变更编码为字节流;所述解码器与接收装置相连,用于将编码器编码后的字节流转化为状态的更新;所述指定协议是一种编码解码方式,将数字式KVM主控端与受控端所存储的结构化状态数据表达为多个“字段头部信息+字段内容”的直接拼接而成的字节流或将字节流转化为结构化状态数据的某个字段的变化;所述字段头部信息为8bits数据,其中高5bits用于编码字段编号,低2bits用于编码字段类型,剩余1个bit用于表示清空标志;所述字段类型包括变长整数、带长度的字节流、32位定长字节流、64位定长字节流4个可能取值;所述字段内容根据字段头部信息指定的字段类型进行不同的编码。
2.根据权利要求1所述的编码解码方式,其特征在于:当字段类型为变长整数时,字段内容的编码为约定大小端(Big-endian or Little-endian)的以7bits为单位的整数编码,每个字节(8bits)的最高位用于表达是否还需要额外细节来存放整数编码,剩余位用于存放7bits为单位的整数编码。
3.根据权利要求1所述的编码解码方式,其特征在于:当字段类型为带长度的字节流时,字段内容的编码为由权利要求2所述的变长整数表示的字节流长度+字节流原始内容,且编码器将结构化数据中的子结构信息也用带长度的字节流来进行编码。
4.根据权利要求1所述的编码解码方式,其特征在于:当字段类型为32位定长字节流或64位定长字节流时,则字段内容的编码保持原始字节内容不变,数字式KVM的主控端与受控端根据状态数据的实际结构来确定字段内容是整数还是浮点数。
5.根据权利要求1所述的编码器,其特征在于:编码器对于数字式KVM主控端与受控端所存储的结构化状态数据中未变动的字段,不会生成任何编码信息;编码器可以用同一个字段头部发送多个不同的字段内容,用于表示数组字段的各个元素的信息。
6.根据权利要求1所述的解码器,其特征在于:解码器对于字节流中多个具有相同字段头部的信息,根据数字式KVM的主控端与受控端状态数据的实际结构来确定是否表达为数组字段的各个元素,如果不是数组字段,则使用收到对应字段的最后一次的值。
7.根据权利要求1所述的解码器,其特征在于:如果字段头部信息的清空标志被置位,则重置数字式KVM的主控端与受控端状态数据对应字段信息,对于数组字段为清空,对于非数组字段为设为初始的默认值。
8.根据权利要求3所述的编码解码方式,其特征在于:当解码器收到带长度的字节流时,会根据存储在数字式KVM主控端与受控端中的状态数据的实际结构,来确定是普通字节流还是子结构信息,并对于子结构信息递归的执行相同的解码方式,直到解析至基本类型字段为止。
9.根据权利要求1所述的更新收集器,其特征在于:内部的控制器会将更新记录到2个状态数据存储区中的一个里,并由计时器发出信号,通知控制器清空另一个状态数据存储区,并将此后发生的更新记录到此状态数据存储区中。
10.根据权利要求9所述的更新收集器,其特征在于:内部的控制器、2个状态数据存储区都与编码器相连,控制器会切换当前使用的状态数据存储区后通知编码器读取另一个状态数据存储区中的信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210395727.5A CN103777768A (zh) | 2012-10-17 | 2012-10-17 | 一种数字式kvm主控端与受控端之间同步状态信息的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210395727.5A CN103777768A (zh) | 2012-10-17 | 2012-10-17 | 一种数字式kvm主控端与受控端之间同步状态信息的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103777768A true CN103777768A (zh) | 2014-05-07 |
Family
ID=50570110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210395727.5A Pending CN103777768A (zh) | 2012-10-17 | 2012-10-17 | 一种数字式kvm主控端与受控端之间同步状态信息的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103777768A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107885349A (zh) * | 2017-12-14 | 2018-04-06 | 郑州云海信息技术有限公司 | 一种服务器kvm集成*** |
CN108076083A (zh) * | 2016-11-10 | 2018-05-25 | 上海贝锐信息科技股份有限公司 | 一种kvm交换机远程控制方法及*** |
CN111142684A (zh) * | 2019-11-28 | 2020-05-12 | 武汉兴图新科电子股份有限公司 | 分布式kvm显控***多个设备间点播资源的信息同步方法 |
CN112667484A (zh) * | 2020-12-15 | 2021-04-16 | 威创集团股份有限公司 | 光纤坐席***中的键盘灯同步方法、***及存储介质 |
CN115344129A (zh) * | 2022-10-20 | 2022-11-15 | 中孚信息股份有限公司 | 一种单向kvm键盘状态指示同步方法、***及设备 |
-
2012
- 2012-10-17 CN CN201210395727.5A patent/CN103777768A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108076083A (zh) * | 2016-11-10 | 2018-05-25 | 上海贝锐信息科技股份有限公司 | 一种kvm交换机远程控制方法及*** |
CN107885349A (zh) * | 2017-12-14 | 2018-04-06 | 郑州云海信息技术有限公司 | 一种服务器kvm集成*** |
CN111142684A (zh) * | 2019-11-28 | 2020-05-12 | 武汉兴图新科电子股份有限公司 | 分布式kvm显控***多个设备间点播资源的信息同步方法 |
CN111142684B (zh) * | 2019-11-28 | 2023-04-18 | 武汉兴图新科电子股份有限公司 | 分布式kvm显控***多个设备间点播资源的信息同步方法 |
CN112667484A (zh) * | 2020-12-15 | 2021-04-16 | 威创集团股份有限公司 | 光纤坐席***中的键盘灯同步方法、***及存储介质 |
CN112667484B (zh) * | 2020-12-15 | 2023-03-10 | 威创集团股份有限公司 | 光纤坐席***中的键盘灯同步方法、***及存储介质 |
CN115344129A (zh) * | 2022-10-20 | 2022-11-15 | 中孚信息股份有限公司 | 一种单向kvm键盘状态指示同步方法、***及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103777768A (zh) | 一种数字式kvm主控端与受控端之间同步状态信息的方法 | |
CN101771879B (zh) | 基于cabac的并行归一化编码实现电路及编码方法 | |
CN107545066B (zh) | 用于在易失性存储器内保持关系型数据的列向量的技术 | |
CN108027791A (zh) | 多节点网络中的输入/输出信号桥接和虚拟化 | |
CN112822491A (zh) | 一种图像数据的编码、解码方法及装置 | |
US11178212B2 (en) | Compressing and transmitting structured information | |
CN101496288A (zh) | 数据压缩 | |
CN108702160A (zh) | 用于压缩和解压缩数据的方法、设备和*** | |
CN107454959A (zh) | 基数为n的数到物理导线状态码元的转译方法 | |
US10855815B2 (en) | Security-oriented compression | |
US10897270B2 (en) | Dynamic dictionary-based data symbol encoding | |
CN104111742A (zh) | 远程控制***、多电脑切换器及鼠标游标显示方法 | |
CN113220651B (zh) | 运行数据压缩方法、装置、终端设备以及存储介质 | |
CN101364152A (zh) | 可实现自定义鼠标按键功能的方法、***及鼠标 | |
TW587375B (en) | Technique for encoding a sequence of periodic byte values with vertical correlation | |
CN101855615A (zh) | 使用高效指令存储的flexray*** | |
CN107079158B (zh) | 用于转码数据的***与方法 | |
CN104717032A (zh) | 一种适用于afdx网络数据透明传输的编解码方法 | |
JPS6345131B2 (zh) | ||
Pisal | Implementation of data compression algorithm for wireless sensor network using K-RLE | |
KR20040059610A (ko) | 리모트 콘트롤러 시스템 | |
CN202257919U (zh) | 具有触摸显示屏的遥控器 | |
Sun et al. | MIHBS: A mobile interface of high bandwidth for wireless sensor networks | |
TW202002527A (zh) | 資料分階壓縮傳輸方法及實現該方法的器件和電子設備 | |
CN108809320A (zh) | 一种基于lz77的数据压缩方法、设备及终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
DD01 | Delivery of document by public notice |
Addressee: Shen Lei Document name: Notification of Passing Preliminary Examination of the Application for Invention |
|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140507 |