www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]一種快速精確的KVM遠程鼠標同步方法

 摘 要:針對鍵盤顯示器鼠標(KVM)中遠程被控鼠標與主機鼠標的同步要求,提出一種基于高速USB2.0-HID 類規(guī)范的鼠標同步方法。在傳統(tǒng)相對鼠標同步方法中加入自適應(yīng)"殘差處理",去除相對偏移的累積誤差,增加一種絕對鼠標同步方法,用雙字節(jié)絕對坐標值代替?zhèn)鹘y(tǒng)單字節(jié)相對坐標偏移進行定位。實驗結(jié)果表明,該方法使同步延遲時間降至3 ms 以下,能有效提高同步的精確性和時效性。

1 概述

KVM 即鍵盤(Keyboard)、顯示器(Video)、鼠標(Mouse)的縮寫組合[1].由于網(wǎng)絡(luò)延時或被控機分辨率不在KVM 可控范圍內(nèi)等因素,傳統(tǒng)KVM 在鼠標同步方面存在被控機鼠標與主機鼠標位置偏差過大、鼠標操作延緩甚至無法響應(yīng)等問題。故提高鼠標同步的精確性和時效性,成為KVM 技術(shù)發(fā)展的一項重要內(nèi)容。目前支持設(shè)備通用連接并具有高傳輸速率的USB 接口已成為外設(shè)連接PC 主機的主流方式。

USB2.0 接口標準在原有的12 Mb/s 和1.5 Mb/s 傳輸速率基礎(chǔ)上加入480 Mb/s 的高速支持,使單位時間內(nèi)能夠傳輸和處理更多的事務(wù)數(shù)據(jù)。鍵盤、鼠標等支持人與計算機交互的設(shè)備歸為人接口設(shè)備(Human Interface Device, HID)類,是最為廣泛使用的USB 設(shè)備,并已得到Windows/Linux 等操作系統(tǒng)內(nèi)置驅(qū)動程序的良好支持。本文依據(jù)HID 類規(guī)范協(xié)議,通過高速USB2.0 的硬件支持,向被控機發(fā)送信令數(shù)據(jù)模擬鼠標操作。

2 鼠標同步方法

2.1 實現(xiàn)原理

KVM 核心技術(shù)是通過鍵盤、鼠標、顯示器的適當(dāng)配置,對KVM 切換器的多臺遠程被控機進行管理,實現(xiàn)用一套I/O外設(shè)去訪問和操作多臺被控機。圖1 為其框架示意圖。

圖1 KVM 框架示意圖

HID 類設(shè)備的信息以描述符形式存儲在設(shè)備ROM 中,通過設(shè)置、檢測相應(yīng)描述符結(jié)構(gòu)完成設(shè)備與主機之間信令、數(shù)據(jù)的傳輸和獲取。HID 類設(shè)備的具體應(yīng)用數(shù)據(jù)如鍵盤鍵值、鼠標指針值等主要用報告描述符進行描述。報告描述符由多片規(guī)則則條目的信息由片段組成,可由HID 類規(guī)范自定義數(shù)據(jù)表達類型。主要條目第3 位數(shù)值(Bit2{Absolute(0)|Relative(1)})標識設(shè)備操作使用是絕對模式還是相對模式,從而在支持鼠標同步方法中,有絕對同步和相對同步這2 種方式。鼠標數(shù)據(jù)內(nèi)容包括鼠標的按鍵狀態(tài)、坐標位置和滾輪滾動值等。

傳輸方式根據(jù)鼠標應(yīng)用數(shù)據(jù)量較小、不定時發(fā)生、延遲受限等特點,采用對時間有嚴格限制的中斷傳輸方式。同時,高速USB2.0 支持單個事務(wù)可傳送最大數(shù)據(jù)包的容量達1 024 Byte,輪詢事務(wù)的時間間隔僅為125 Fs,支持傳輸速率可達到24.5 Mb/s.

2.2 相對鼠標同步

相對鼠標同步是根據(jù)計算前后2 次鼠標坐標的差值,對當(dāng)前鼠標位置進行偏移。由于條目以1 Byte 為單位,因此傳輸單字節(jié)坐標偏移的相對同步方式最早應(yīng)用于KVM 的鼠標同步。相對鼠標同步的有效數(shù)據(jù)區(qū)定義如表1 所示。

表1 相對鼠標同步數(shù)據(jù)區(qū)定義

由字節(jié)的低3 位,即0 bit~2 bit 分別表示滾輪、右鍵和左鍵按下或彈起的狀態(tài),即按鍵狀態(tài)。

相對偏移差值數(shù)值范圍為?127~127,當(dāng)差值在水平方向(X 軸)或豎直方向(Y 軸)大于127 時,需要分多次進行移動,即循環(huán)多次發(fā)送差值數(shù)據(jù)。滾輪以±1表示向上或向下滾動一格,并可累計滾動格數(shù),以支持更多頁面滾動。本文用匯編語言定義相對鼠標同步的報告描述符內(nèi)容如表2 所示。

表2 相對鼠標同步的報告描述符

通過界面獲得的鼠標坐標值以一個像素為單位,較實際位置有一定的精度損失。且相對鼠標同步每次的偏移值均以上次坐標為基準,數(shù)值損失將不斷累加。針對此問題,本文在相對同步方式中增加了自適應(yīng)的誤差彌補,對累積誤差進行檢測和處理,即"殘差處理".該處理方法主要采用坐標值精度轉(zhuǎn)換、累計殘差、足1 補齊的方式,具體實現(xiàn)方法如下所述:

(1)坐標值精度轉(zhuǎn)換

采用short 型雙字節(jié)數(shù)值表示法,以屏幕左上角為原點,且無論何種分辨率均定義右下角坐標為(32 767, 32 767),將界面獲取的坐標根據(jù)屏幕分辨率按比例進行轉(zhuǎn)換。

同時記錄本次的雙字節(jié)絕對坐標位置作為下次偏移的基準,減少以偏移差值為基準而引入的累積誤差。

(2)殘差累計及補償

使用double 型變量累計每次坐標值轉(zhuǎn)為short 整型時丟棄的小數(shù)值。當(dāng)累計值大于1 時,在當(dāng)前坐標差值上補1 再進行發(fā)送。同時定時檢測誤差累計值大于1 的次數(shù)頻率,當(dāng)超過一定程度時,采取自動重新同步。即先進行13 次(?127,?127)坐標偏移,將鼠標移動到屏幕左上角,然后再用一次至多次偏移,將鼠標定位到控制主機記錄的最后坐標位置。

然后采用13 次坐標偏移,若以1 920×1 080 分辨率屏幕為上界,則在當(dāng)前主流顯示器中,均可以將鼠標移至屏幕左上角。

2.3 絕對鼠標同步

絕對鼠標同步在經(jīng)過直接傳輸換算后,其雙字節(jié)絕對坐標值的每次同步,均需要以原點為基準重新定位鼠標,以去除與前一次鼠標位置的關(guān)聯(lián),由此避免了相對偏移造成的誤差累積。其有效同步數(shù)據(jù)區(qū)定義如表3 所示。

表3 絕對鼠標同步的數(shù)據(jù)區(qū)定義

絕對鼠標同步具有更精確的同步效果,并且需要占用報告描述符條目的2 Byte 空間來表示坐標值(滾輪值),故必須得到操作系統(tǒng)內(nèi)置HID 類驅(qū)動程序的支持?,F(xiàn)代Windows系列(XP/Win7/Vista 等)、Mac OS 10.5 以及Linux 2.6 版本等操作系統(tǒng)均可支持絕對鼠標模式,OS/2 系統(tǒng)也于2010 年5 月發(fā)布xsmouse00.zip 提供支持該模式的鼠標驅(qū)動程序。由于絕對鼠標同步方法采用雙字節(jié)表示有效數(shù)據(jù),其報告描述符結(jié)構(gòu)設(shè)置與相對同步方式不同,描述符內(nèi)容如表4 所示。[!--empirenews.page--]

表4 絕對鼠標同步的報告描述符

3 KVM 系統(tǒng)總體結(jié)構(gòu)

本文設(shè)計并實現(xiàn)了基于該鼠標同步方法的KVM 系統(tǒng),主要分為3 個模塊:(1)運行于控制主機的客戶端;(2)連接多臺被控機的KVM 切換系統(tǒng);(3)通過USB 接口與被控機相連,并且能模擬HID 設(shè)備的控制模塊。KVM 系統(tǒng)總體結(jié)構(gòu)如圖2 所示。

圖2 KVM 系統(tǒng)總體結(jié)構(gòu)

KVM 系統(tǒng)3 個模塊功能定義如下:

(1)控制主機客戶端

本文設(shè)計的KVM 系統(tǒng)基于B/S 框架,控制主機組合鼠標、鍵盤、顯示器等I/O 設(shè)備,通過Web 頁面調(diào)用操作界面。

界面經(jīng)TCP/IP 網(wǎng)絡(luò)接收被控機屏幕畫面并解碼顯示,同時檢測本機鼠標、鍵盤事件,將數(shù)據(jù)發(fā)送至KVM 切換系統(tǒng)。由于被控機的視頻流發(fā)送負荷達5 Mb/s~10 Mb/s,為避免鼠標數(shù)據(jù)延遲,因此,本系統(tǒng)采用獨立的TCP/IP 連接發(fā)送鼠標鍵盤數(shù)據(jù)。

(2)KVM 切換系統(tǒng)

KVM 切換系統(tǒng)的核心是:運行主要內(nèi)核程序及服務(wù)器程序,并通過HPI 接口連接多臺被控機進行切換控制的嵌入式處理器。處理器網(wǎng)絡(luò)接收鼠標數(shù)據(jù)并完成坐標處理算法,并將數(shù)據(jù)發(fā)送至與相應(yīng)被控機連接的HID 設(shè)備控制模塊。

(3)HID 設(shè)備控制模塊

采用USB2.0 接口與被控機相連,支持480 Mb/s 的傳輸速率。經(jīng)HPI 接收KVM 切換系統(tǒng)的鼠標數(shù)據(jù)并對報告描述符結(jié)構(gòu)進行設(shè)置,通過中斷傳輸方式傳送至被控機,實現(xiàn)鼠標設(shè)備的模擬控制。該模塊是KVM 系統(tǒng)中完成HID 設(shè)備數(shù)據(jù)通信的核心模塊。

4 實驗與結(jié)果分析

4.1 延時測試

本文分別對KVM 鼠標操作總體的延遲時間,以及同步方法模塊的延遲時間進行測試,定義如下:

(1)總體延時

本文采用"回環(huán)模式"對總體延時進行測試?;丨h(huán)模式主要通過在主控機和被控機上形成對同一事件的循環(huán)響應(yīng),獲取兩者的響應(yīng)時間差值,以得出延遲時間。具體實現(xiàn)方法為:在主控機和被控機上同時運行一個測試客戶端,鼠標單擊主控機的客戶端界面,界面響應(yīng)事件并發(fā)出UDP 數(shù)據(jù)包標識時間;事件傳遞至被控機客戶端后,被控機客戶端同樣響應(yīng)該事件并發(fā)出UDP 包。通過網(wǎng)絡(luò)工具捕捉這2 個UDP包,并計算兩者之間的時間差值,即得到總體的鼠標延時。

鼠標總體延時測試的實現(xiàn)流程如圖3 所示。

圖3 總體延時測試

(2)同步方法延時

考慮到控制主機性能和網(wǎng)絡(luò)環(huán)境等不固定因素,本文同時對鼠標同步方法的延遲時間進行測試。同步方法延時測試主要采用硬件中斷方式。同樣在主控機和被控機上各運行一個客戶端,并對主控機客戶端進行鼠標單擊操作。當(dāng)鼠標操作數(shù)據(jù)由主控機客戶端傳輸?shù)教幚砥鲿r,處理器產(chǎn)生中斷并拉高電平;被控機客戶端接收到鼠標操作數(shù)據(jù),發(fā)出UDP 包作為回應(yīng),當(dāng)處理器接收到被控機端的UDP 包時拉低電平,從而形成一個時間脈沖。忽略UDP 包的網(wǎng)絡(luò)傳輸時間,則該時間脈沖寬度即可近似為同步方法的延遲時間。同步方法延時測試的實現(xiàn)流程如圖4 所示。

圖4 同步方法延時測試

"回環(huán)模式"測試最終所得的總體鼠標延時及同步方法延時測試結(jié)果如表5 所示。

表5 延時測試結(jié)果

4.2 同步精確度

KVM 測試運行12 h,并在被控機上播放MKV 視頻以增加網(wǎng)絡(luò)傳輸負荷。定期進行鼠標操作,且操作時間保持30 h以上。經(jīng)測試評估,在絕對鼠標同步模式下,長時間使用鼠標不會出現(xiàn)位置偏差;在相對鼠標同步模式下,正常狀態(tài)操作鼠標不會出現(xiàn)位置不同步現(xiàn)象,但在大范圍區(qū)間內(nèi)快速移動鼠標時會有約1 mm 的位置偏差,但鼠標可以在移動中自動更正重新達到重合。

5 結(jié)束語

本文提出一種快速精確的KVM 遠程鼠標同步方法。采用USB2.0 接口實現(xiàn)數(shù)據(jù)高速傳輸,通過加入自適應(yīng)"殘差處理"和雙字節(jié)坐標表示法改進傳統(tǒng)相對鼠標同步方式,即實現(xiàn)鼠標同步方式絕對化。測試結(jié)果表明,該方法能提高鼠標定位的精準度,系統(tǒng)能夠更快處理鼠標事務(wù)。以后將不斷對本文方法進行優(yōu)化,實現(xiàn)高速度與高精度更好的融合。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

Socket接收隊列是內(nèi)核中為每個Socket維護的一個緩沖區(qū),用于臨時存儲接收到的UDP數(shù)據(jù)包。它的存在使得應(yīng)用程序可以異步地處理網(wǎng)絡(luò)數(shù)據(jù),同時提供了流量控制的能力(通過丟棄隊滿時的數(shù)據(jù)包)。理解接收隊列的工作原理對于...

關(guān)鍵字: socket UDP

從通信原理看,UDP上的SIP消息解析是應(yīng)用層對無連接、不可靠傳輸層的數(shù)據(jù)報進行結(jié)構(gòu)化解析的過程。每個UDP數(shù)據(jù)報包含一個完整的SIP消息,解析器需要按照SIP協(xié)議規(guī)范將字節(jié)流轉(zhuǎn)換為結(jié)構(gòu)化的消息對象,然后根據(jù)消息類型進行...

關(guān)鍵字: socket UDP

如何在同一個Go程序中監(jiān)聽多個UDP端口,解析SIP消息,并根據(jù)來源端口進行不同的處理邏輯。需要結(jié)合并發(fā)編程、SIP協(xié)議解析和消息轉(zhuǎn)發(fā)機制來實現(xiàn)這一需求。

關(guān)鍵字: socket UDP

服務(wù)器接收請求是一個涉及網(wǎng)絡(luò)層(IP/端口綁定)、傳輸層(UDP/TCP/TLS 適配)、應(yīng)用層(SIP 協(xié)議解析)

關(guān)鍵字: 服務(wù)器 TCP UDP

在Linux內(nèi)核中,網(wǎng)絡(luò)丟包是指由于網(wǎng)絡(luò)傳輸過程中出現(xiàn)問題,導(dǎo)致數(shù)據(jù)包未能成功到達目的地。這可能由多種原因引起,包括網(wǎng)絡(luò)擁塞、硬件故障、錯誤配置等。當(dāng)發(fā)生網(wǎng)絡(luò)丟包時,應(yīng)用程序可能會受到影響,例如導(dǎo)致數(shù)據(jù)傳輸延遲或失敗。為...

關(guān)鍵字: UDP Linux

英格蘭安多弗2024年8月8日 /美通社/ -- 全球領(lǐng)先的獨立薪資支付解決方案提供商CloudPay今日宣布完成1.2億美元融資,本輪融資由Blue Owl Capital領(lǐng)投,現(xiàn)有股東Rho Capital Part...

關(guān)鍵字: PAY UDP API MATRIX

隨著信息技術(shù)的飛速發(fā)展,USB(Universal Serial Bus,通用串行總線)已成為連接計算機與各種外設(shè)的重要標準。在眾多USB版本中,USB2.0憑借其高速、兼容性強等特點,廣泛應(yīng)用于日常生活和工作中。本文將...

關(guān)鍵字: USB USB2.0

FTDI Chip高速USB 2.0系列FT4232HA是業(yè)界首款USB2.0高速轉(zhuǎn)四通道UART或雙通道MPSSE的車規(guī)級芯片。

關(guān)鍵字: USB2.0 車規(guī)級芯片 Windows

TCP,全稱為傳輸控制協(xié)議(Transmission Control Protocol),是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。它在OSI七層協(xié)議模型的網(wǎng)絡(luò)層中起著核心作用,為FTP、SMTP、POP3、...

關(guān)鍵字: TCP通信協(xié)議 UDP

Iperf 是一個網(wǎng)絡(luò)性能測試工具,可以測試最大TCP和UDP帶寬性能,具有多種參數(shù)和UDP特性,可以根據(jù)需要調(diào)整,可以報告帶寬、延遲抖動和數(shù)據(jù)包丟失。

關(guān)鍵字: Iperf 網(wǎng)絡(luò)性能測試工具 UDP
關(guān)閉