嵌入式实训总结

嵌入式实训总结

20xx年x月我参加了学校安排的课题实训,基地在北京,学院安排我们集体坐火车一同前去,浩浩荡荡的队伍开始出发了。刚来北京的时候,映入眼绵的都是高楼大厦,一直想到的地方终于到了,好多以前的同学听说我要去北京实训都很羡慕不已,我自己也隐隐感到自豪。

我参加的课题实训是嵌入式方向的,开课的内容主要是嵌入式开发方面的,C语言,数据结构,LINUX基本操作,网络编程,操作系统和汇编语言,这些都是嵌入式不可缺少的。每个专业技能都决定了你以后找工过。我们班分了很多小组,每组都有小组长,小组长直接对我们负责。教课老师很认真,都是从很基础的开始讲;同学们听课也很认真,由于代码操作比较多,键盘的声音源源不断的在响。好久没有感觉到这种浓重的学习气氛了,而在这紧张而充实的学习氛围中我获益匪浅,感受颇多。

授课过程中老师们也传授了一些找工作方面的经验,比如简介的样式和写法,面试中的一些着装,礼貌用语和技巧,对此基地的老师还精心的为我们安排了一场模拟面试,在其中我们学到了很多有关于面试方面的经验。

通过这几个月的实训我学到了很多,同时也让我们意识到我们要学的更多。从程序的设计到编写、画图、调试、修改、完善、到最后的实训报告,每个人都付出了时间和精力去做好自己的任务帮助队友,所以团队的合作和队友之间的相互协助非常重要。通过实训让我们更深一步的对自己的专业,对自己的能力,对自己所学的有正确的认识,并且能在以后的学习工作中不断提高和完善自己。特别是讲C语言和进程通信中老师给了我们每个小组的几个小项目,让我学到了更多项目经验,这在学校之前是没有的。这次实训也碰到了些问题,比如项目文档的写法,代码的规范,流程图的画法,这些都有讲究,在老师和同学的帮助下,我不断的提高了在这些方面的学习。

生活上班主任郭老师和王老师对我们关怀备至,让我们没有感觉在外面的那种不适感,同学们也互帮互助,所以生活上大致没什么问题,这让我们更好的去学专业。很感谢学校有这样的实训安排。

总的来说,这次实训还是比较成功的,无论是个人动手能力还是团队协作能力都得到了很好的锻炼。在实训过程中老师也交给我们很多简单实用的技巧。我们也学到了,做好做对一个项目固然重要,同时美观程度也是必不可少的,无论是从参观者的角度还是自己看的角度都很重要。

 

第二篇:嵌入式实习总结

实习总结

就在昨天3月x日,学校规定实习时间已经到期了。从上个月的13日到现在已经近一个月,虽然与公司的实习时间还没有结束,但是为了完成学校交待的任务,在此对这段时间的实习做一个总结。

首先,我先来简单介绍下实习单位。我实习的单位全称——上海宝信软件股份有限公司厦门分公司。其作为上海宝信软件中的重要一员,是宝信软件在全国多网点支持服务的延伸,具备与宝信软件上海总部相同的技术服务能力,并可无限制调用总部专家资源,秉承宝信软件“IT服务,提升信息价值”的经营理念,致力于IT服务,主营业务包括网络安全产品销售、系统集成、运维服务、软件工程等。

其次,向大家介绍是我的实习内容。这里要先介绍我的实习岗位——嵌入式软件开发工程师。实习内容大致分为两块,一是软件测试,二是编码。在我们刚来的前两周,我的实习内容就是软件测试。软件测试的主要内容是UnitTest也就是单元测试。但是,在实习刚开始的阶段,我并没有就马上做测试。而是有前辈给我发了一份我们要做的产品的功能书给我看。功能书文档是日文版的,我要把它看懂,才知道我们这里到底是做什么。后面的测试工作就是做单元测试了。

我们在做测试是有测试环境的,整个单元测试过程是有前人经验的。所以只要按照规则来就没有问题,也相对比较简单。就这样单元测试做了近8天左右,测试了51个c++函数。其实,单元测试比较简单,但是碰到函数的输入输出的值及路径多的时候,特别的烦,会影响测试效率。实习的另一个内容就是编码,其实说的确切一点,是看代码。一个刚来不到3周的新员工,以前又没有经验,公司怎么会放心让你写代码。有前辈给我安装了秀丸和Source Insight软件,然后给了我一代码,让我按上面看,有问题可以问组里的前辈。C++代码是看的懂,但是太多的函数,被调用的关系也不清楚,也不了解决函数的意义,所以感到很无趣。也许是在考验我的耐心或者是让我熟悉代码编写的规范。不管是什么目的,至少自己可以巩固下c++的基础。不过真的要感谢前辈的细心指导,使我大概了解程序的调用关系。

再次,向大学介绍下我的实习阶段的工作过程。每的8小时的上班时间,但是一般会比这个时间长的。早上8点45分到9点15分不等上班,晚上5点30分到6点不等下班,中午11点可以去吃饭、1点之前上班。这个时间还是比较人性化的。当然也有时候也要加班,如有时候日本客户来这里的时候,发现我们的人都很早下班的时候,他就会和我们的上级说,然后我们就得加班。这也是一种非常情况,但是加班是可以调休的。每天的上班时间基本上是跟电脑打交道。

前期实习阶段都是打开电子表格看日语版功能说明书,后面做测试的时间就是各种软件一起用了。每天做单元测试的时候,其实感觉特别烦。有时候一天做7到8个,有时候一天2个做不到。但是整个过程自己还是坚持下来了,虽然很累,自己还是很好强的。后期基本上是学习编程了。由于后面项目已经交互,所以每天都不没有加班了。每天的工作主要就是学习代码规范,如那里怎么缩进、命名之类的事。至于逻辑什么的,还是很不清楚,还需要努力多问多想。

再次,与大家分享下我的实习收获。虽然与原计划5个月的实习还差很远,但自己还是很有收获。其一,对于歌乐Audio项目有一定的了解。具体的表现在,分了几层。我个人是分配到app层,也就是业务应用层。虽然对业务的熟悉不够深,但大概知道,每一天前辈们都在做什么事。其二,日语方面的加强。因为客户方面基本上是日本人,所以加强日语学习是必须的。有了这样的一种压力,自动会转化为一种动力,促使我去学习。我想这样多少可以提高下我的日语能力。还有就是,常常有很多日本客户就做在我的旁边。感情还是很紧张,因为不知道怎么跟他交流。结果每一天他来的时候,我只能和他说声早上好。希望自己在今

后的时间里要多多加强日语学习,争取与日本客户交流,才能提升自己的能力。其三,交流沟通能力的提高。其实自习也一直觉得沟通能力对成功贡献是最大,要把一件做成肯定不是一个人的事情,我们需要与别人沟通。在沟通中互相了解相联系的部分,这样才能够避免摩擦带来不必要时间与精力的浪费。而我自己的沟通能力提高表现在自我意识的提高。当遇到问题的时候,会主动的想想,是哪个具体的点不懂,然后列出问题,再向前辈请教。这样大脑里就会有一个逻辑过程。通过这样就可以把自己的意思清楚的传达给别人。在别人向自己传达信息的时候,我会边思考边听,遇到不了解的地方,讲明白自己的不解之处。这样这个沟通过程就会比较流畅。其四,职场意识的提高。可以说来实习就意味我们提前毕业了,提前进入社会。所以,由学生到社会职业人的过渡期就被实习给填充了。经过一个月实习,我发现自己已经很习惯在公司工作。对于自己能做什么,未来能做什么也有了一定的思考。不管毕业,我还是留在这个公司还是去其他的公司,我想我心中已经有了这份意识,这对我将来的职业生涯都是有帮助的。其五,时间管理。很多人工作的时候就忘记了生活的存在,我们的生活是多彩的,并不是只有工作。其中,有一项转变的比较大,就是很多人不喜欢运动了。对于这些,我都是不太认可的。我还是会抽出时间出去运动一下。我觉得运动可以带给我健康,同时会让我的精神更好,工作更有效率。其实,运动并不会浪费我们时间,而是会给生活带更美好。

最后,与大家分享一下我这个月实习的心得与体会。通过这段时间的学习,从无知到认知,到深入了解,渐渐的我喜欢上这份工作,让我深刻的体会到学习的过程是最美的。在整个实习过程中,我每天都有很多的新的体会,新的想法,想说的很多,我总结下来主要有以下几点:

1、持之以恒

既然选择了自己的这份工作,不管工作本身怎么样,我们都要坚持往下走。因为我相信每一家公司的工作原理都是差不多的。如果你在这家公司做不住的话,我想你在另外一家公司也是做不住的。只有我们改变自己的态度,才可能战胜心中的浮躁。我们新人一来到公司我,一开始都不会立刻给工作我们做,-一般也都是先让我们看看文档或代码,时间短的要几天,时间长的要几周,在这段时间里很多人会觉得很无聊,没事可做,便觉没有发展空间,于是产生想走的念头。恰恰在这个关键的时候更需要我们的坚持,轻易放弃只会让自己后悔。

2、不怕做小事,那是一种考验

我们一来到公司实习的时候,很多组里的前辈多数还是把我们当学生看待。他们不会也不敢让我们直接参考到一个真正的项目中去。在这个其间一般会给我们看一些过去做过项目的文档和代码,其实不可小看这些小事,也许是为了考验我们,也许是让我们先了解业务。作为一人新人,一定要积极面对这些,勇于担当做小事,喜欢做小事。这样公司同事才会更快的接受你,慢慢地才会让你做一些重要的工作。

3 、态度端正,一定要多主动

我们到公司工作以后,要知道自己能否胜任这份工作,关键是看你自己对待工作的态度,态度对了,即使自己以前没学过的知识也可以在工作中逐渐的掌握。态度不好,就算自己有知识基础也不会把工作做好,四多一少就是我的态度,我刚到这个岗位工作,根本不清楚该做些什么,并且这和我在学校读的专业与这里做的东西还是不太一样的,刚开始我觉得很头痛,可经过工作过程中多看别人怎样做,多听别人怎样说,多想自己应该怎样做,然后自己亲自动手去多做,终于在这一个月里对工作有了一个较系统的认识,慢慢的自己也可以完成相关的工作了,光用嘴巴去说是不行的,所以,我们今后不管干什么都要端正自己的态度,这样才能把事情做好。

4.不要报怨

其实在做单元测试的那个时候,有时候觉的特别的烦。有时候做了半天连一个函数都没有把弄出来,那种感觉真的是非常的难受,心中也有委屈。可是这是我的工作,我报怨也没有用。只能一步一个脚印走过来。直到后面把函数测完,心中还是很有成就感的。其实有的人会觉得公司这里不好那里不好,同事也不好相处工作也不如愿,经常埋怨。我觉这样只会影响自己的工作情绪,不但做不好工作,还增加了自己的压力。所以,我们应该少埋怨,要看到公司好的一面,对存在的问题应该想办法去解决而不是去报怨,这样才能保持工作的激情。

5、虚心学习

由于我们是新手,而且又还没有从学校里完全走出来。所以在工作过程中,我们会碰到很多问题,有的问题我们可以有我们所学的解决,有的有很大业务性的问题,我们就无法解决。这个时候不要不懂装懂,应该虚心地向前辈们请教。请不要害怕,因为前辈肯教我们肯定是我们的福气,对我们以后在工作中都有帮助的。同时请教的时候也是一个锻炼沟通的过程。在前辈给我们解惑的时候,我们也应该虚心的接受,不要装着一副不屑的样子。

6、知错能改

做为一名新人,不管在学校有多么的优秀,来到公司,我们顶多就只有点基础,其他什么的都得重新开始。在学习的过程当中,犯错是不可避免的。知错能改是我们唯一的选择。明知自己有错,还理直气壮那是不应该的。我认为这种行为是可耻的。在犯错的时候来铭记于心,不要第二次在犯同样的错了。当前辈或其他人指出我们的错误时,我们要虚心听教,坦诚改错。这样我们才会进步,才会在组里与同事相处融洽。

7、团队合作

重要的不是我,是我们。在一个项目组里,我并不是一个人。我只能说我是组里的一个部分。我们每一人都不是神,我们不可能一个来完成所有的工作,因此,必须分工。但是,分工并不是都很明确的。每个人分到的工作,多多少少都会和别人的工作的有交集。这是因为,作为一个项目的每个部分,最终还是整合形成整体。我们还是需要这些部分与部分交集作为连接点组合起来。因此,每个虽是分工,但更多是合作。我们中的我必须明白这些,要有团队观,做好自己的同时,更重要也要做好与别人的沟通。这样才会避免工作的重复,意见的不同等负能量。

8、沟通能力

在上一点的体会团队合作中,其实我已经说了,团队合作的基础就是沟通。一个有效率的团队,我认为它的成功就在于成员之间良好的沟通能力。因为,人与人的沟通是信息传递的媒介。没有良好的沟通基础,信息在传递的时候就会被曲解。在软件开发的整个过程,团队合作是至关重要。每一环节,都离不开沟通。需求变更带来的问题,尤其需要在沟通中解决问题。所以,让自己把信息传递的正确和有效,提高沟通能力是必不可少的。

9.做人做事讲究原则

其实在公司上下班是一个很大的学问。同事都已经来上班了,你才来。或者是同事还没下班,你人就都先走了。其实要把这些看成一种常态。在公司上班不是比谁先来,也不是比谁晚走的,比得是自己的工作的效率。有时候,我们工作做完,是可以先走。你想想,你走了之后,估计别人也敢走了。从这一点上,可以说你是帮助了大家。当然这只是开玩笑,做人做事要有点原则。工作没完成当然不能跑回去,这是没有责任的表现,以后主管怎么能把事情交给你。工作做完,想先走就走了,不必当担心这担心那的。我相信一个好的主管,不会以一些无所谓的因素来衡量一个人的。只要自己身体正,就不怕别人说。

10.做好职业生涯规划

每个人在来实习之前,肯定会想我来这家公司是做什么。当你想好,并决定来的时候,你已经做了第一步职业生涯规划了。实习也是成了我们检验计划的时候,如果你发现这个工作不适合你,毕业前你还有机会可以做换。如果感觉这个工作适合你,那么你就可以做下一步

的规划了。我当初选择这个工作,是因为嵌入式软件开发在近几年会发展会比较快,而且本人对c++和c比较感兴趣。同时,目前做的工作是对日外包,对于我日语的提高也是很有帮助的。现在实习给我感觉是,不出现什么其他状况,应该毕业后会留在这个公司。至少今后的职业规划以日语和编程提高为主,以管理为辅。

在这里,我要感谢上海宝信软件股份分司给我这次宝贵的实习机会。同时,也要感谢组员对我有直接帮助的前辈。当然还要感谢学校和毕业指导王老师的关心与指导。

总而言之,这次实习是我大学四年来最正式的一次。我想通过这次的实习,我将从学生走向社会职业人的转变。一个月的时间过的太快了,但是我们的实习并没有结束。通过这次的总结,我对这次实习的意义有了深刻地认识。自己在今后的学习与工作中,一定会更加努力做的更好。

 

第三篇:嵌入式实训报告

中北大学

嵌入式实训周任务书

 20##-2012  学年第     学期

下达任务书日期: 20##年 5 月 22 日


中北大学

指导教师:   乔道迹       职称:      讲师         

               

2012 年 6 月 21 日

嵌入式实训报告

1.需求分析

数码相框是展示数码照片而非纸质照片的相框。数码摄影必然推动数码相框的发展,因为全世界打印的数码相片不到35%。数码相框通常直接插上相机的存储卡展示照片,当然更多的数码相框会提供内部存储空间以接外接存储卡功能。数码相框就是一个相框,不过它不再用放进相片的方式来展示,而是通过一个液晶的屏幕显示,它可以通过读卡器的接口从SD卡获取相片,并设置循环显示的方式,比普通的相框更灵活多变,也给现在日益使用的数码相片一个新的展示空间。数码相框是观看和分享数码照片的专用设备。其基本原理:外观采用普通相框的造型,把原来相框中间的照片部分换成液晶显示屏,配上电源,存储介质等,可以直接播放数码照片,使得同一个相框内可以循环播放照片,比普通相框的单一功能更有优势。数码相框由三大部件组成:LCD液晶屏、PCB电路板和外框。其中PCB电路板是数码相框的核心,因为它包含必须的软件。数码相框是时尚的电子消费品、也是家庭必备的装饰品。继承了数码的时尚和相框的温情,用途十分广泛。

随着社会的发展和物质水平的提高,人们对于精神世界的追求也得到大幅度的改善。迎合现在市场的所需,消费电子的设计新增了人性化的元素。该设计理念源于提高人们生活的幸福指数。在传统意义上,人们往往用冲印出来的相片记录生活中美好的瞬间。而伴着电子行业的发展,足以用数码形式将其取代,同时还可以将静态图片提升为动态的视频短片,携带方便,存储时间长远,满足于人们的需求,同时也是一种节约型、环保型的构想。

2.总体设计

主要步骤和方法

根据数字相框的主要特点和设计功能那个要求,我们将课设分为以下几个步骤:

2.1数码相框的软件总体设计

数字相框软件系统功能可以划分为四个模块:

1)图片浏览模块,可以通过按键控制选定某个图像或更新图像页(上一页、下一页)。

2)播放模块,对浏览界面选定的图片进行循环播放。

3)音乐播放模块,可设置播放背景音乐。

4)鼠标操作模块,实现使用鼠标操作。

2.2功能模块组织架构图

 

2.3人员组成以及分工

3.详细设计

3.1鼠标模块的设计原理

1.鼠标编程通讯协议

数据格式
 ㈠ MicroSoft 公司标准:
MICROSOFT FORMAT
字节 字元(B i t)
7 6 5 4 3 2 1 0
BYTE1 1 1 L R Y7 Y6 X7 X6
BYTE2 0 0 X5 X4 X3 X2 X1 X0
BYTE3 0 0 Y5 Y4 Y3 Y2 Y1 Y0
注释:
L = 左键状态
R = 右键状态 1 = 按下
0 = 释放
X0-X7 = X 距离
Y0-Y7 = Y 距离 X7或Y7为±符号位
串口特性:波特率 = 1200 Baud,8 位数据,无校验位,2 停止位。
㈡ MOUSE SYSTEM 公司标准:
MOUSE SYSTEM FORMAT
字节 字元(B i t)
7 6 5 4 3 2 1 0
BYTE1 1 0 0 0 0 L M R
BYTE2 X7 X6 X5 X4 X3 X2 X1 X0
BYTE3 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
BYTE4 X7 X6 X5 X4 X3 X2 X1 X0
BYTE5 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
注释:
L = 左键状态
R = 右键状态
M = 中间键状态 1 = 按下
0 = 释放
X0-X7 = X 距离
Y0-Y7 = Y 距离 X7或Y7为±符号位
串口特性:波特率 = 1200 Baud,8 位数据,无校验位,2 停止位。
    ㈢ IBM 公司 PS/2 MOUSE 标准:
PS/2 MOUSE FORMAT
字节 字元(B i t)
7 6 5 4 3 2 1 0
BYTE1 YV XV YS XS 1 0 R L
BYTE2 X7 X6 X5 X4 X3 X2 X1 X0
BYTE3 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
注释:
L = 左键状态
R = 右键状态 1 = 按下
0 = 释放
X0-X7 = X 距离
Y0-Y7 = Y 距离 X7或Y7为±符号位
XS,YS = ±符号位 1--- 反向移动
XV,YV = 溢出位 1---- X Y 数据溢出

2.鼠标的操作方式

 1.初始化鼠标驱动程序:
 例如:中断号INT33h    功能16h   子功能17h
 中断号:用于请求服务
 功能号:用于确定用户期望获取哪种服务
 子功能号:进一步指定所希望的服务
 调用寄存器:设置被调用的服务功能所要求的参数
 返回寄存器:返回服务功能执行结果

2.设置图形鼠标光标的形状

中断33h的功能9h设置图形模式下的鼠标光标的形状,并定义光标里的一个点为热点。光标由16 x 16位的视频掩码和16 x 16位的光标掩码组成。

3. 取得或设置鼠标光标的位置

中断33h的功能4h用于设置鼠标光标位置,功能3h则用于报告光标的位置.AX存放功能号,CX被赋予X坐标,DX被赋予Y坐标。

4. 定义不显示鼠标光标的屏幕区域
中断33h的功能10h定义屏幕的一个区域,当鼠标进入该区域时会自动关掉。进入时,CX存放被保护域的左列号,SI存放右列号;DX存放首行号,DI存放末行号。
5.监视鼠标按钮
中断33h的功能5h和6h报告鼠标按钮的信息。这两项功能都在AX返回一个按钮状态字节,报告按钮2个或3个当前状态。此状态字节由中断21h的功能3h返回。它报告鼠标光标的位置。
3.1.2 关于鼠标的算法

PID控制软件算法

  对该交流变频调速系统建模,首先取电压输入为一个随机值,再测得其转速值。取两个数值构成一个数据对,然后对大量数据对用Matlab仿真求得其幅频特性和相频特性,并且对其幅频特性和相频特性进行相似的拟合。根据拟合的曲线可以近似求得其传递函数为:

按此在新窗口浏览图片

  使用神经网络PID自适应控制对系统进行Matlab的仿真测试,效果令人满意。但因其输入层、隐含层、输出层的多阶矩阵运算使得单片机的运算时间大幅度增加,造成时间上的不确定因素增大;同比使用增量型PID控制,尽管后者需调整3个控制参数,但同样可使精度达到预期的效果,运算时间也大幅度下降,为此选用增量型PID算法作为控制算法。

  增量式数字PID的控制算法为:

按此在新窗口浏览图片

  其中kp为比列系数,ki为积分系数,kd为微分系数;e(k)为当前位移增量与上一次位移增量的变化量; 同理,e(k-1)、e(k-2)各为往前时间间隔的位移变化量。

利用单片机串行中断接收功能,可在PC机上实时在线调节PID的kp、ki、kd参数。

4.实训周的总结

通过此次课程设计,使我更加扎实的掌握了有关Linux技术方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终这次课程设计终于顺利完成了。在设计中遇到了很多问题,最后在老师的指导下和同学的合作下,终于得到解决。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事。课程设计是一门专业课,给我很多专业知识以及专业技能上的提升,同时,设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设计,我掌握了关于linux的很多知识还自学鼠标的工作原理,并会实现较为简单的鼠标模块设计等等,通过查询资料,也了解了数码相框的构造及原理。我认为,在这次设计的过程中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法,而这是日后最实用的。回顾起此课程设计,至今我仍感慨颇多,从理论到实践,学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。 在实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,只有互相之间默契融洽的配合才能换来最终完美的结果。此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。

附件:本人设计的功能模块的源程序以及整体原理图

1.鼠标模块的源程序

#include<stdio.h>

#include<string.h>

#include<fcntl.h>

#include<stdlib.h>

#include<unistd.h>

typedef struct

{

    int dx;                                              //*鼠标左右移

    int dy;                                              //*鼠标上下移

    int dz;                                                    //*滚轮

    char button;                                         //*鼠标左右键

}  mouse_event;

int get_m_info(int fd,mouse_event *p)

{

    int n = 0;

    char buf[8];

    n = read(fd,buf,3);

    if(n>0)                             /*1:lefy key    *2:right key*/

                                   /*3:middle key   *0:no button key*/

    {

       p->dx = buf[1];

       p->dy = -buf[2];

       p->button = (buf[0]&0x07);             /*获取x,y滚轮的增量值*/

    }

    return n;

}

int get_mouse(void)                             

{

    int fd;

    mouse_event  m_event;

    int press_c  = 0;

    fd = open("/dev/input/mice",O_RDWR|O_NONBLOCK);

    if(fd == -1)                               /*1:read mouse Success*/

    {

       perror("open mice");                 /*-1:error for read mouse*/

       exit(0);

    }

    while(1)

    {

       if (get_m_info(fd,&m_event)>0)

       {

           switch(m_event.button)

           {

              case 1 :

                  return 1;

                  break;

              case 2 :

                  return 2;

                  break;

              default :break;

           }

       }

       usleep(500);

    }

    close(fd);

    return 0;

}

2.整体原理图

对鼠标的按键信息分别按位描述如下:

每一位值的含意如下:

D0 左键的按键信息,1:按下;0:No

D1 右键的按键信息,1:按下;0:No

D2 滚轮的按键信息,1:按下;0:No

D4 鼠标的移动方向,X坐标方向,1:自右向左移动;0:相反方向

D5鼠标的移动方向,Y坐标方向,1:自上向下移动;0:相反方向

相关推荐