当前位置:首页 » 操作系统 » 光标的算法

光标的算法

发布时间: 2022-10-03 05:18:25

⑴ 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口输出到电脑,再由系统软件变换为屏幕坐标数据。

热点内容
php地址正则表达式 发布:2025-05-16 19:44:01 浏览:465
oracle存储过程优点 发布:2025-05-16 19:41:36 浏览:613
无法访问g盘拒绝访问 发布:2025-05-16 19:32:57 浏览:118
阿里云服务器如何把c盘变成d盘 发布:2025-05-16 19:12:36 浏览:496
unix环境高级编程学习 发布:2025-05-16 19:11:49 浏览:421
如何将20的硝酸配置成5的 发布:2025-05-16 19:04:42 浏览:971
怎么给一个文件夹设置时间开锁 发布:2025-05-16 18:58:00 浏览:823
脚本存放目录 发布:2025-05-16 18:57:20 浏览:566
cs16制作脚本 发布:2025-05-16 18:44:25 浏览:444
分油算法 发布:2025-05-16 18:36:19 浏览:691