游標的演算法
⑴ C語言的游標
C語言控制台輸入 是行緩沖輸入方式,直到敲回車鍵,行緩沖中的數據才會真正傳輸給程序。如果真想輸入數據後,游標後退, 可以用格式"%b"退格試試
⑵ 游標物理形成的原理
滑鼠的定位原理
光電滑鼠是通過紅外線或者激光檢測滑鼠的位移,將位移信號轉換為電脈沖信號,通過程序的處理控制屏幕中游標箭頭的移動。
一. 滑鼠的結構
光學滑鼠主要由四部分的核心組件構成,分別是發光二極體、透鏡組件、光學引擎以及控制晶元組成。
光電滑鼠的控制晶元
控制晶元負責協調光電滑鼠中各元器件的工作,並與外部電路進行溝通(橋接)及各種信號的傳送和收取。我們可以將其理解成是光電滑鼠中的「管家婆」,實現與主板USB介面之間的橋接。當然,它也具備了一塊控制晶元所應該具備的控制、傳輸、協調等功能。
這里有一個非常重要的概念大家應該知道,就是dpi對滑鼠定位的影響。dpi是它用來衡量滑鼠每移動一英寸所能檢測出的點數,dpi越小,用來定位的點數就越少,定位精度就低;dpi越大,用來定位點數就多,定位精度就高。
光學感應器
光學感應器是光電滑鼠的核心。
光學感應器主要由CMOS感光塊(低檔攝像頭上採用的感光元件)和DSP組成。CMOS感光塊負責採集、接收由滑鼠底部光學透鏡傳遞過來的光線(並同步成像),然後CMOS感光塊會將一幀幀生成的圖像交由其內部的DSP進行運算和比較,通過圖像的比較,便可實現滑鼠所在位置的定位工作。
光學透鏡組件
光學透鏡組件被放在光電滑鼠的底部位置,從圖中可以清楚地看到,光學透鏡組件由一個棱光鏡和一個圓形透鏡組成。
其中,棱光鏡負責將發光二極體發出的光線傳送至滑鼠的底部,並予以照亮。 圓形透鏡則相當於一台攝像機的鏡頭,這個鏡頭負責將已經被照亮的滑鼠底部圖像傳送至光學感應器底部的小孔中。通過觀看光電滑鼠的背面外殼,我們可以看出圓形透鏡很像一個攝像頭。
不管是阻斷棱光鏡還是圓形透鏡的光路,均會立即導致光電滑鼠「失明」。其結果就是光電滑鼠無法進行定位,由此可見光學透鏡組件的重要性。
發光二極體
光學感應器要對缺少光線的滑鼠底部進行連續的「攝像」,自然少不了「攝影燈」的支援。否則,從滑鼠底部攝到的圖像將是一片黑暗,黑暗的圖像無法進行比較,當然更無法進行光學定位了。
通常,光電滑鼠採用的發光二極體是紅色的(也有部分是藍色的),且是高亮的(為了獲得足夠的光照度)。發光二極體發出的紅色光線,一部分通過滑鼠底部的光學透鏡(即其中的棱鏡)來照亮滑鼠底部;另一部分則直接傳到了光學感應器的正面。
二.滑鼠的原理
光電滑鼠的工作原理是:在光電滑鼠內部有一個發光二極體,通過該發光二極體發出的光線,照亮光電滑鼠底部表面(這就是為什麼滑鼠底部總會發光的原因)。然後將光電滑鼠底部表面反射回的一部分光線,經過一組光學透鏡
傳輸到一個光感應器件(微成像器)內成像現在,翻過一隻發紅光的光學滑鼠,您都可以看到一個小凹坑,裡面有一個小棱鏡和一個透鏡。工作時,從棱鏡中會發出一束很強的紅色光線照射到桌面上,然後通過桌面不同顏色或凹凸點的運動和反射,來判斷滑鼠的運動。
當滑鼠移動的時候,成像感測器錄得連續的圖案,然後通過「數字信號處理器」(DSP)對每張圖片的前後對比分析處理,以判斷滑鼠移動的方向以及位移,從而得出滑鼠x, y方向的移動數值。再通過SPI傳給滑鼠的微型控制單元。滑鼠的處理器對這些數值處理之後,傳給電腦主機。
傳統的光電滑鼠采樣頻率約為3000 Frames/sec(幀/秒),也就是說它在一秒鍾內只能採集和處理3000張圖像。
根據所講述的光學滑鼠工作原理,我們可以了解到,影響滑鼠性能的主要因素有哪些。
第一, 成像感測器。成像的質量高低,直接影響下面的數據的進一步加工處理。
第二, 第二,DSP處理器。DSP處理器輸出的x,y軸數據流,影響滑鼠的移動和定位性能。
第三,SPI於MCU之間的配合。數據的傳輸具有一定的時間周期性(稱為數據回報率),而且它們之間的周期也有所不同,SPI主要有四種工作模式,另外滑鼠採用不同的MCU,與電腦之間的傳輸頻率也會有所不同,例如125MHZ、8毫秒;500MHz,2毫秒,我們可以簡單的認為MCU可以每8毫秒向電腦發送一次數據,因此數據從SPI傳送到MCU,以及從MCU傳輸到主機電腦,傳輸時間上的配合尤為重要。
激光滑鼠
激光滑鼠其實也是光電滑鼠,只不過是用激光代替了普通的LED光.好處是可以通過更多的表面,因為激光是 Coherent Light(相干光),幾乎單一的波長,即使經過長距離的傳播依然能保持其強度和波形;而LED 光則是Incoherent Light(非相干光)。
激光滑鼠感測器獲得影像的過程是根據,激光照射在物體表面所產生的干涉條紋而形成的光斑點反射到感測器上獲得的,而傳統的光學滑鼠是通過照射粗糙的表面所產生的陰影來獲得。因此激光能對表面的圖像產生更大的反差,從而使得「CMOS成像感測器」得到的圖像更容易辨別,提高滑鼠的定位精準性。
從光路上來說,激光滑鼠較之普通光電滑鼠至少有兩大不同:首先,激光鼠的光學感測器並不像傳統光電鼠那樣,位於照明區域的正上方,而是在照明區域的側面,我們知道,在光線尤其是相干光反射時,入射角等於反射角,因此,光線最強的區域在側面角度與激光發射角度相通的位置上。而激光滑鼠正是將光學感測器設置在這一位置,這樣,感測器可接受到更明亮的圖像,識別判斷自然更精確。
其次,激光滑鼠使用的是點成像,也就是說,激光在匯聚後,只照明一個極小的區域,而感測器的透鏡,也只匯聚識別這個極小區域的圖像。這相對於讓滑鼠用放大鏡看桌面,不僅可以極大的提高滑鼠的解析度,定位精度較之面成像的傳統光學引擎,也高了不少。
⑶ 電腦上的游標是什麼
滑鼠的箭頭,各種形態,比如箭頭,文字輸入時I型,小手型等統稱游標。
電腦游標是在計算機開始使用滑鼠後為了在圖形界面上標識出滑鼠位置而產生的,隨著計算機軟體的發展,它漸漸的包含了更多的信息。在Windows操作系統中,它首次用不同的指針來表示不同的狀態,如:系統忙,移動中,拖放中。在Windows系統中,使用的滑鼠指針文件被稱為「游標文件」或「動態游標文件」。 現今流行博客,很多blogger可以自由編輯自己的網頁。滑鼠指針就成了耍寶的一大亮點。把大眾化的白色箭頭通過代碼換成自己喜歡的圖案。當然,它也可以用於各種網路平台,比如論壇之類的。滑鼠指針目前經常使用的格式有*.cur和*.ani兩種格式。
了解更多電腦知識,可以到裝機員網站看看
⑷ 游標移動速度和dpi的關系
DPI是一個表示滑鼠精度的硬體指標,DPI值越低,滑鼠指針在屏幕上的移動也就越慢。反過來,DPI值越高就移動得越快。
當使用較低的DPI時,例如400,它能給提供最好的精度。這個值可以依靠修改滑鼠驅動或軟體(游戲)的設定來改變,但其中最基本、最細微的變化只能是游標在屏幕上移動1個像素。
屏幕解析度越大,對DPI的要求就越高;你操控滑鼠的方式越精細,對DPI的要求就越高。如果是那種用整個手臂揮舞滑鼠的人,也許400的dpi就夠了;但如果喜歡純用手腕/手指微操滑鼠的,那麼2000以上dpi的滑鼠更適合。
計量單位
DPI原來是印刷上的記量單位,意思是每英寸上,所能印刷的網點數(Dot Per Inch)。但隨著數字輸入,輸出設備快速發展,大多數的人也將數字影像的解析度用DPI表示,但較為嚴謹的人可能注意到,印刷時計算的網點(Dot)和電腦顯示器的顯示像素(Pixel)並非相同,所以較專業的人士,會用PPI(Pixel Per Inch)表示數字影像的解析度,以區分二者。
以上內容參考:網路-DPI
⑸ C語言隱藏游標
具體代碼如下:
#include <windows.h>
void HideCursor()
{
CONSOLE_CURSOR_INFO cursor_info = {1, 0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
函數和結構體都在windows.h中定義。
CONSOLE_CURSOR_INFO結構體定義如下:
typedef struct
{DWORDdwSize;
BOOLbVisible; //為0時游標不可見
}CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;
VC,MinGW中均沒問題。
(5)游標的演算法擴展閱讀:
指針
如果一個變數聲明時在前面使用 * 號,表明這是個指針型變數。換句話說,該變數存儲一個地址,而 *(此處特指單目運算符 * ,下同。C語言中另有 雙目運算符 *) 則是取內容操作符,意思是取這個內存地址里存儲的內容。指針是 C 語言區別於其他同時代高級語言的主要特徵之一。
指針不僅可以是變數的地址,還可以是數組、數組元素、函數的地址。通過指針作為形式參數可以在函數的調用過程得到一個以上的返回值,不同於return(z)這樣的僅能得到一個返回值。
指針是一把雙刃劍,許多操作可以通過指針自然的表達,但是不正確的或者過分的使用指針又會給程序帶來大量潛在的錯誤。
⑹ 滑鼠內部控制游標移動的工作信號和原理(別說光電那種淺層原理)是什麼,具體到是電阻變化,還是其他什麼
目前所用的光電滑鼠與過去的光電滑鼠原理是完全不同的,簡單說就是通過一個集成在IC內部的低像素的攝像頭,通過光路不斷拍攝光徑下面的物體表面,通過圖像對比再由某種演算法解析出位移量,最後轉換成相應的串列數據由USB口輸出到電腦,再由系統軟體變換為屏幕坐標數據。