CS游戏外挂的设计与实现_第1页
CS游戏外挂的设计与实现_第2页
CS游戏外挂的设计与实现_第3页
CS游戏外挂的设计与实现_第4页
CS游戏外挂的设计与实现_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要如今的生活已经不单单只需要解决温饱问题,还有精神上的满足,游戏就是人们娱乐活动之一,因此它也能成为如今必不可缺的一部分。游戏是竞技体育发展的初级阶段,许多的竞技体育项目最开始的时候只是人们在业余时间的简单玩耍从而释放压力,经过不断的发展,游戏也形成了一套较为完整的体系,有平时放松娱乐玩的,也有竞技类的游戏,因此游戏达人也越来越多,他们通过游戏比赛来赚钱,通过直播平台教导普通玩家如何更好的体验游戏的乐趣。一些比较大型的游戏很受到人们的欢迎,他们会为自己喜欢的游戏选手呐喊助威,成为他们的粉丝团,所以游戏竞技也逐渐完善化,会有明确的规则,规范场地器材与组织形式,就逐渐转化为正式的体育项目。因为各种游戏的越发蓬勃,随之兴起的是各种游戏辅助外挂。游戏中普通玩家是占据很大一部分,他们没有向专业竞技选手的速度和运用灵活度,比较难每次都获得胜利,然而游戏外挂就弥补了他们的这些缺陷,可以更容易的活的胜利,并且从中获得快感,这也是游戏辅助外挂能够蓬勃发展的原因。游戏外挂有很多种,有将外挂程序嫁接到游戏程序当中,通过改变本地的一些信息,或者增强瞄准度,或者一键可以完成同时多键才能完成的技能,从而得到提高自己玩游戏的胜利率。CS游戏外挂的设计与实现的设计是由STM32F103C8T6为主控制器,通过OpenCV的图像处理,将截取的原视频转化为灰度视频,再通过斑点扫描算法提取斑点坐标,也就是敌方血量条的坐标,再打开串口发送相应的斑点坐标,STM32F103C8T6接收到数据后,控制鼠标进行一系列操作。关键词:STM32F103C8T6鼠标控制图像识别视觉检测

AbstractToday’slifeisnotonlyaboutsolvingtheproblemsoffoodandclothing,butalsospiritualsatisfaction.Gamesareoneofpeople’sentertainmentactivities,soitcanalsobecomeanindispensablepartoftoday.Gamesaretheinitialstageofthedevelopmentofcompetitivesports.Atthebeginningofmanycompetitivesports,peoplesimplyplayedintheirsparetimetoreleasethepressure.Aftercontinuousdevelopment,thegamehasformedarelativelycompletesystem.Therearealsocompetitivegames,sotherearemoreandmoregamemasters.Theyteachordinaryplayershowtobetterexperiencethefunofthegamethroughthelivebroadcastplatform.Someofthelargergamesareverypopularwithpeople.Theywillcheerfortheirfavoritegameplayersandbecometheirfangroup,sothegamecompetitionisgraduallyperfected,andtherewillbeclearrulestoregulatevenueequipmentandorganizationalforms,graduallytransformedintoaformalsportsevent.Asvariousgamesbecomemoreandmoreprosperous,variousgames-assistedplug-insareemerging.Ordinaryplayersaccountforalargepartofthegame.Theydon’thavethespeedandflexibilityofprofessionalathletes.Itisdifficulttowineverytime.However,thegamemakesupfortheseshortcomingsandcaneasilywin.Getpleasurefromit,whichiswhythegame-assistedplug-incanflourish.Therearemanytypesofgameplug-ins,someofwhicharegraftedintothegameprogram,bychangingsomelocalinformation,oronekeycancompletetheskillsthatcanbecompletedbymultiplekeysatthesametime,therebyimprovingthevictoryrateofplayingthegame.ThedesignandimplementationofthisCSgameismadebySTM32F103asthemaincontroller.ThroughOpenCVimageprocessing,theoriginalvideoisconvertedintogray-scalevideo,andthenthespotcoordinatesareextractedbythespotscanningalgorithm,whichistheenemy.Thecoordinatesofthesquarebloodvolumebar,andthenopentheserialporttosendthecorrespondingspotcoordinates.Afterreceivingthedata,STM32F103controlsthemousetoperformaseriesofoperations.Keywords:STM32F103C8T6MousecontrolImageRecognitionVisualInspection 目录第一章绪论 第一章绪论1.1课题背景和意义 说到游戏,每个人脑海里都有不同的画面,因为游戏已经跟我们的生活紧紧的联系在一起,游戏带给我们的不单单是消遣还有幸福的回忆。小时候和朋友们玩的小游戏,猜谜语、跳台阶等游戏,慢慢长大就会接触到电子产品,开始的时候是在街边可以看到很多男孩子玩的游戏机,到后来因为科技和互联网的迅速发展,家用的电脑,手机等等的出现,就开始慢慢接触电子游戏,也算是见证游戏的一段快速发展的历程,因为对游戏的兴趣,因此毕业设计的时候选择跟游戏相关的题目。查阅资料后发现,电子游戏也是各种类型都有,有生存类的,有射击类的,有养成类的,有益智类的,也有单人模式和多人组队模式的,许多游戏都没玩过,因为游戏除了一些比较大型出名的游戏,其他一些小游戏很容易被淘汰,随着电子游戏的发展,电子游戏的平台有四种:1、家用主机,也就是专门用来玩游戏的家用游戏机,是通过电视作为显示屏幕,想要玩什么游戏就要买专用的多媒体光碟或卡带,再连接游戏手柄等一体化进行操作的设备,这种平台可以更换不同的游戏,因此比较灵活,也是它能成为最常见的游戏平台的其中一个原因,其中美好最出名并且是第一个最成功的商业用途的专门为电子游戏爱好者们设计的平台就是雅达利的雅达利2600。雅达利2600该电子游戏平台是用一个主机,分离的控制器和可以更换游戏种类的卡带,因为它的崛起,其他也是按照这种构架发展起来的,比如任天堂的FC。因为是刚开始发展,所以硬件方面也比较简陋,随着科技的不断进步,游戏画质也向高清和蓝光发展,能够让玩家更能体验游戏带来的满足感。市场也会跟随时代的发展,让这些游戏主机不单单只玩游戏,娱乐性也逐渐拓展,销售的对象也不单单是年轻人,群体也扩大了,因为除了游戏外,还具备看视频,看图片,听音乐或者上网等功能,所以也受到很多家庭的喜爱,成为生活或不可缺的部分。2、掌上主机,字面理解就是拿在手上的游戏机,准确是指个人使用的可以随身携带电子元件,因为他非常小巧而且还方便携带,外出的时候也可以玩,满足人们更多的需求,也让越来越多的人进行消费。例如手机,到现在21世纪,为了方便沟通交流,手机也成为必需品,而且也不单单只能玩游戏,还可以连接网络、通讯、娱乐等。因为这种消费模式的转变,电子游戏平台也需要创新,因此游戏也有专门的类似于手机,小巧方便的形态为玩家更好的体验。最开始的时候,掌上主机无法替换其他游戏,也是一个问题,买一个游戏机就只能玩一种游戏,在空间上取得了创新,可是却没有家用主机的灵活性。面对大众的需求,任天堂也生产出了GameBoy,最后被用作商业用途。3、街机就是我们年轻人比较喜欢的,可以在一些游戏机室找到,用这个名称是为了和个人电脑和家用游戏机分开来。4、个人电脑,个人电脑是有很多电脑游戏的,现如今许多游戏在网站上下载,然后利用模拟器或者在PC端的游戏平台进行单机游戏或联机游戏。由于游戏的发展,随之兴起的游戏外挂也越来越多。游戏外挂就是通过电脑技术针对相应的游戏,进行一些修改,从而使游戏的胜利率提高和辅助手速慢的玩家进行设置或者键盘多个键位的同时操作。游戏外挂也分为很多种,例如修改数据包,然后把修改好的数据发送到相应的位置、模拟键盘、修改一些本地内存、模拟鼠标等。这些都是电脑来进行的,通过虚拟键盘或鼠标,可以用API函数,这是软件上设置的虚拟键盘或鼠标,现在很多游戏厂家已经禁止用Mouse_event()这类方法移动鼠标,需要和游戏相结合就要找到对应的游戏窗口,才能进行操作。还有一些游戏操作比较简单,是通过消息传输,这种就可以通过截取消息,这样可以改变一些我们想要提高的数值,例如血量、金币数、能量值等。我们制作出游戏外挂不仅能够解放双手与提高效率,还能使游戏厂家更完善游戏,让玩家有更好的体验。1.2游戏外挂的发展进程 游戏外挂的发展也有十几年的历史,最开始出现外挂的是在2003年,那时候对于外挂并不是为了赚钱,牟取利益,只是一些对电脑技术极具热情的年轻人开发的软件,那时候的想法只是想要研究电脑的一些语言程序,例如比较早的基础语言就是C语言,到后面用到JAVA语言,PYTHON语言等,他们只是想要尝试制作虚拟键盘或者鼠标,在他们的研究下,按键精灵产生了,也是该软件的产生,让一些想赚钱的人看到了商机,从而开始研究各种游戏的外挂程序,让玩家能够提高胜率。开始的时候这并不是一种为了作弊而产生的程序,但是由于游戏的迅速发展,许多玩家会认为这是非常不公平的操作,因此游戏厂家也纷纷开始反抗,因为这样也会导致他们的利益受损,游戏外挂也因此得到了压制,尽管这样,游戏外挂也是有一段时间非常火爆。因为对游戏外挂有一定的认知,游戏商家也会自行制作一些外挂,目的是为了让初始玩家更有体验感,由于现在的联机游戏越来越多,游戏玩家也会更加注重游戏的胜利率,可是很多玩家都是普通玩家,他们匹配组队都是不熟悉的人一起玩,默契度不会很高,就是导致一直输,这种情况如果一直持续下去,会让玩家消极对待该游戏,因此游戏商家就会制作一些程序,例如人机,这样设计比较简单的,难度系数就会降下回来,也可以让普通玩家适当的提高胜率,提高对游戏的积极性,而且还可以用在测试的模式下,玩家可以自行进入人机模式,对自己使用的角色进行熟悉,了解该角色的特点,技能使用方式,如何避免出错,如何提高存活率。 如今的游戏外挂不单单是让游戏玩家提高胜率,从而获得快感,也可以通过这样,让游戏商家提高自家游戏的管理能力,游戏外挂使用的一些技术也是游戏商家自己也会使用到的,不管怎样,游戏外挂还是让许多玩家无法自拔。

第二章整体方案设计2.1系统整体方案 CS游戏外挂的设计与实现这项目在选择上面的目的是能够运用软件和硬件相结合的一个能够让游戏爱好者解放双手,提高速度的一款设计。因此我是用STM32f103C8T6芯片作为硬件设计系统的主要模块,而且这项目是一款主机和设备相结合的辅助游戏程序,包括高速外部时钟源电路、电平转换电路、运用复位方式为系统复位的复位电路、运用用户闪存为启动模式的BOOT启动电路、连接主机PC端的USB接口电路、调试接口电路、电源电路和用二极管LED测试烧录电路等电路组成,完成对信息的处理,接收和传输。在软件设计方面,用ROI设置图像区域,截取游戏视频,函数将彩色视频转化为灰度视频并保存,用边缘检测算法Canny找到视频中灰度变化较大的位置,输出轮廓;同时用斑点扫描算法提取红色的敌方血量条,得到斑点坐标,将信息通过通讯发送到STM32主芯片,STM32接收到斑点坐标后,鼠标移动到对应的坐标进行左键点击后释放。2.2系统整体框架图图2.1整体流程框架图

第三章硬件电路设计分析3.1硬件电路整体设计 在CS游戏外挂的设计的整体构成中,主要的硬件模块包括STM32F103C8主控制芯片、HSE时钟源电路、电平转换电路、运用复位方式为系统复位的复位电路、运用用户闪存为启动模式的BOOT启动电路、连接主机PC端的USB接口电路、调试接口电路、电源电路和LED测试烧录电路。硬件功能图如下:图3.1硬件电路功能图3.2主控芯片介绍选择芯片的时候要考虑到芯片的功能、接口、价钱和采购是否便捷,本次设计采用STM32F103C8为主控制芯片,该芯片是在这系列里面比较基础的,而且成本不高,不选择51单片机是因为该单片机一般没有自编程能力,而且我们需要高速的双向通讯,STM32就比51单片机更好。因为项目比较复杂,因此需要通过一长串不断的调试才能完善该程序,STM32的保护能力会更好一些,没有这么容易烧坏芯片,同时我们需要通过USB供电和传输数据,51单片机也不具备该功能。代码上面需要很多等待的命令,这就需要用到时钟,它具备五种时钟源,满足我们的需求,而且内核有ARMCortex-M332的微控制器,可以做到低功耗,减少成本。STM32外围有很多引脚,可以在串口调试有更多的选择,该芯片还包含了两种存储器,其中就有我们需要用到的SRAM存储器,用来进行代码的烧录和调试,它的电源是在2V至3.6V之间,比较方便实用,且不会有局限性。新型的外围设备最大程度和出色的实时表现的集成器,具有内嵌复位电路、也可以兼容我们需要的5V供应电流为开发本设计具有较强的灵活性。其原理图如下:图3.2STM32F103C8主芯片原理图3.3时钟源电路 本次选用的主芯片有1个AHB和2个APB总线,APB分为APB1(36MHz)和APB2(72MHz),本设计用到的是内外部时钟电路,也叫HSE,高速外部时钟源,因此在画PCB的时候要加入8MHz的晶体振动器,它能够提供最基本的时钟信号,电容是为了稳定它的输出,连接两边的电容还能避免相互干扰,而且要焊接在靠近芯片的地方。时钟电路是为了让程序能够正常准确运行工作的一个必不可缺的部分。HSE的信号精度高,因此我选择外部加8MHz的晶振。因为STM32的特性,因此我们需要对它进行频率加倍,PULLMUL需要乘9倍频后,就得到我们的时钟源PLLCLK。因为不单单是CPU需要时钟源,其他模块也是需要时钟源工作,所以还我们需要对倍频后的时钟源进行分配。我们也需要用到定位器,因为该项目需要一个硬件的中断,确保每一个模块都能正常运行。本项目用到的是RCC寄存器,因此画出电路原理图如下:图3.3电路原理图3.4复位电路 系统每次进行工作前都要恢复到最开始状态,这样才能使程序更准确,这样就需要复位电路的存在,主要是利用电容放电的原理。本项目用到的复位方式是系统复位,如图3.4.1复位电路原理图可以看出,我们这次使用的是在按键上边连接VCC,连接VCC的电阻R3是为了防止C7直接接地,如果没有这个电阻,会让电源直接接地从而形成短路,S1按钮就是可以设置高低电平的装置,按下该按键就能使该地方变为低电平,从而进行复位。系统复位其实就是复位寄存器。图3.4复位电路原理图3.5BOOT启动电路 在STM32F103C8T6芯片中,44号引脚是BOOT0,在该引脚串联一个10k的电阻R4,20号引脚是BOOT1,在该引脚串联一个10k的电阻R1,因为这两个引脚是复位电路的重要部分。这次用到的启动模式是内置SRAM启动,因为项目不是一次过的,需要进行不断地调试,才能更加完善,这种启动模式就能更好的清除代码再写入,比较方便调试。项目中选用keil5作为上位机通讯的设备,因此我们需要把keil5中生成的代码烧录进我们需要的芯片板上,该操作是通过高低电平进行烧录的,当电路板上的BOOT0位和BOOT1都置为1时,改为低电平,需要连接VCC3.3和这两个引脚,当烧录后BOOT0位和BOOT1都要置0,连接GND和这两个引脚,这种方式也方便清除上次烧录的项目。图3.5BOOT启动电路原理图3.6系统供电稳压 本次项目的供电是通过USB实现的,是5V的直流电,由于我们需要3.3V的直流电,因此利用SPX3819M5-L-3-3电源芯片,将电压稳定在+3.3V,选择该芯片的原因是这是一款低压线性稳定器LDO,电路也比较简单。而且它还具有低压差、旁路引脚实现低噪音的输出,而且在100mA输出的时候能够提供接GND电流。该芯片停止使用后,功耗能够差不多将至0,它的输入电压范围2.5V至16V,不能超过500mA的电流,本设计中用C10电容串连接到电源正端,为硬件模块提供反接保护,芯片过热还能断电,可以把5V电源通过该芯片将电压变成3.3V。图3.6系统供电稳压原理图3.7元器件选择与作用根据本设计原理图的各元器件不同的作用,有JP3和JP4排针、16个不同作用的电容、NRST按键、8MHz晶振、二极管等元器件的作用说明。表3.1各元器件作用说明表元器件作用JP3、JP4排针传输电流或信号P2跳线帽控制线路板上电流流动的开关C1、C2、C3、C4电容去耦C5、C6、C8、C9、C10、C11、C12、C14、C15、C16电容滤波R2电阻作为反馈R1、R3、R4、R9电阻上拉/下拉电阻R5、R6、R7、R8电阻限流以保护电路C7电容RC延时按键开关控制电路通断晶振提供时钟MicroUSB连接器用于设备之间的数据传输二极管肖特基二极管用以反向保护电路

第四章软件设计分析4.1整体软件设计 首先对选取的游戏进行试玩,通过试玩来了解游戏的一些具体操作,本游戏是通过鼠标点击敌方血量条,直至敌方血量条消失即可。用ROI设置图像区域,截取游戏视频,函数将彩色视频转化为灰度视频并保存,用边缘检测算法Canny找到视频中灰度变化较大的位置,输出轮廓;同时用斑点扫描算法提取红色的敌方血量条,得到斑点坐标,将信息通过通讯发送到STM32主芯片,STM32接收到斑点坐标后,鼠标移动到对应的坐标进行左键点击后释放。图4.1整体软件设计流程图4.2截取游戏视频模块 首先通过用ROI设置图像区域,需要找到游戏对应的网页,因此需要定义游戏窗口名#defineGAMEWINDOWNAME"MicrosoftEdge",然后运行后寻找到该窗口,利用该循环条件while(hwnd==NULL),,如果找到后,输出MicrosoftEdgefound,找到窗口后,利用SwitchToThisWindow(hwnd,false);直接跳转到该窗口,然后截取一段视频作为测试范例。从数学的角度来看,视频数据其实就是多张图像数据以人眼难以分辨的帧率而刷新得到的,所以创造视频数据的过程其实就是以一定帧率,向同一文件中不断叠加图像帧的过程[1]。首先游戏窗口大小通过prinft(“sWidth:%d;sHeight:%d\n”,sWidth,sHeight);语句读取,然后再设置捕获游戏视频屏幕的高和宽,GDI截图是位图(bitmap)格式,因此必须转换为Mat格式,才能由OpenCV进行图像处理,设置需要截取视频的区域,利用ROI设置区域就不需要处理整副图像,只需要截取整副游戏视频的画面来减少CPU的消耗,因为图像处理是用CPU来处理这些图片的,但是这样会非常消耗CPU的资源。因此利用captured_frame=Frame(Rect(900,350,300,514));就可以把从坐标点(900,350)开始,宽为300,高为514的矩形截取每一帧图片赋值给在captured_frame,然后通过Videowriter把图片写进去创建的AVI文件里面去,这样方便下面算法的实现,由于GDI截图的通道是4通道,因此通过4通道来读取像素。4.3灰度游戏视频模块 Mat数据结构里矩阵的每个元素代表一个像素,我们要把图片的bmp格式改为能够跟OpenCV使用的Mat的数据类型才能进行下面的操作。图片信息进行二值化处理后,对图像的每一行进行处理,可以得到每行图像黑线的位置[2]。灰度图像时,每一个像素代表其中之一(0~255),其中0表示黑色,255表示白色,其他为灰色。我们的目的是要知道敌方的坐标,因此可以通过提取敌方的红色血量条的坐标来确定敌方的坐标。基于轮廓波变换的局部对比度增强的彩色图像灰度化算法主要包括两部分:彩色图像的初步灰度化与灰度图像的局部对比度增强[3]。首先需要对视频进行处理,RGB{255,0,19},把红色血量条变成白色,其他颜色变为黑色,从而得到单通道的灰度图(Gray),创建灰度图:Matgray,确定读取的高度为514,宽度为300,通过3通道,即AVI通道读取所有的像素,然后保存结果,使用灰度比值相邻像素的梯度算法来检测[4]。4.4斑点扫描算法 实验需要从经过灰度化的图像中找出敌方血量条,而斑点扫描算法检测的作用是在检测图像中与周围环境相比亮度或颜色不同的点和/或区域的模块,基于求导的微分方法和基于局部极值的分水岭算法,这两种方法都是可以实现我们想要的结果基于边缘检测的斑点识别算法,首先,采用边缘检测器检测当前帧的边缘区域,其次,针对边缘像素,利用正反扫描方法和局部运动估计的SROD斑点识别算法识别出全部像素点[5],由于这种算法对边缘检测的准确度不是很高,不能精准确定我们所需要的斑点坐标,因此本次设计所采用的OpenCV的类SimpleBlobDetector就是基于第二种办法,基于局部极值的分水岭算法。分水岭算法主要用于图像分段,把灰度化的视频比作一张张灰度图,然后求出梯度图,也就是像一片凹凸不平的地面,水滴下来一定会落在凹进去的地方,这些地方就是最小值点,最高的地方就是边缘点,这些集合就组成了“分水线”,然后在这个基础上进行该算法,这样就能求出这些图像的黑色和白色的边缘线。 基于边缘的扫描算法的原理是使用一系列提前定义标记来引导图像分割的定义方式。本项目使用的是OpenCV的分水岭算法,对我们需要的敌方血量条的颜色红色,灰度化后变成白设定长条形,斑点扫描算法的目的就是找出灰度化的图片中的白色血量条,这个白色作为标记图像像素,然后找到敌方血量条的斑点坐标。OpenCV类的分水岭算法它不会造成过度分割的不足,让实验更精确。我们把黑色的连接在一起的像素分为一组,根据设定的阈值,把距离较近的组合合并为一个大组,把白色的连接在一起的像素也分为一组,然后计算白色组的中心位置的大小。本设计首先要设置参数面积(area),颜色(color),距离(distance),凸面(Convexity),然后调用算法,结果保存在keypoints中,最后显示图像化的结果,还包括数量,大小,位置,从而根据斑点的坐标,把属于同一目标的斑点连接起来,就是目标的血量条。4.5串口通信主机PC和设备是通过reportdescriptor通讯:单片机串口通讯的波特率是由定时器1产生[6]。在主函数程序与中断函数程序的实施步骤中,它的参数设置都是按照上位机中的参数进行设置的,然后用判断语句来去除标识位,以此实现对数据的详细分析,在解析数据后便可通过串口缓存区将其写进寄存器[7]。串口通信是两个设备间通过电平转换TTL的方式进行数据信号传输,本设计用到的串口通信设备是通用同步异步收发器,做到接收或发送数据信号都能同时进行,实现高速数据通信。 串口设置:串口发送或者接收,同步读写串口,首先要建立Overlapped结构为OVERLAPPEDm_osWrite;,然后对Overlapped结构进行初始化,当一步写串口的时候,运用if(!bWriteStart)循环,如果缓冲区为空,那么这里就会返回,最后停止所有正在进行的字符输出操作、停止所有正在进行的字符输入操作、清除输出缓冲区、清除输入缓冲区[8]。当异步读串口的时候,读取缓冲区的内容,如果读取出来的缓冲区的内容为空,那么就把读取出来的内容发送出来,完成后关闭串口。 GPIO寄存器配置:首先要对所有需要用到的引脚进行定义并加以命名,然后对端口进行配置并且初始化。项目中需要设置单片机的测试LED灯是PB12引脚,因此需要打开GPIOB的时钟,然后设置PB12为PIN口,GPIO的输出速度为50MHz,GPIO的模式为输出模式,由于LED一端接VCC3.3,另一端接地,因此端口设置为高电平(置为一),LED就能关闭。其他引脚的设置,首先通过结构体GPIO_InitTypeDef设置,在代码中是用到PA2和PA3这两个引脚,其中PA2是输出引脚,PA3是输入引脚,然后调用库函数,最后一定不能忘记的当然是要对这个结构体进行初始化,这样才能正常运行。 串口中断设置:本项目用到USART通用同步收发器,是全双工异步通信,首先要初始化异步串口,配置USART的数据传输速率为11520。中断有两种处理方式,可以提高程序的灵活性,是因为NVIC和处理器核的接口是连接在一起的。首先配置EXTI初始化,本次设计中NVIC设置有四个组,因为本设计只用到了一个优先级,因此没有准确的组,由硬件决定优先级。表4.1各GPIO引脚说明表GPIO引脚中断标志位中断处理函数PA0~PG0EXTI0EXTI0_IRQHandlerPA1~PG1EXTI1EXTI1_IRQHandlerPA2~PG2EXTI2EXTI2_IRQHandlerPA3~PG3EXTI3EXTI3_IRQHandlerPA4~PG4EXTI4EXTI4_IRQHandlerPA5~PG5EXTI5EXTI9_5_IRQHandlerPA6~PG6EXTI6PA7~PG7EXTI7PA8~PG8EXTI8PA9~PG9EXTI9PA10~PG10EXTI10EXTI15_10_IRQHandlerPA11~PG11EXTI11

PA12~PG12EXTI12

PA13~PG13EXTI13

PA14~PG14EXTI14

PA15~PG15EXTI15

4.6时钟 时钟配置:在STM32主芯片中,有好几种时钟源,时钟目的是为了程序能够正常工作。本设计用到的是HSE时钟。系统时钟SYSCLK经过AHB预分频器之后得到的时钟叫做APB总线时钟,也就是HCLK[9]。写代码的时候需要对时钟参数进行设置,首先要将RCC寄存器重新设置为默认值,很多写代码软件在建立工程的时候就会自带时钟的代码,如果使用内部时钟,就不需要修改,因为我用到的是外部时钟,加上8MHz的晶振,因此还是需要改变的,这样就需要开启它,让它达到稳定状态后,再设置预分频因子和PLL的时钟来源,最后判断系统时钟是否能够正常工作,时钟使能设置,APB1上的USART2和APB2上的GPIOA。4.7实现鼠标控制通过主芯片STM32接收到斑点坐标,先让鼠标点击Y轴的最上方的斑点坐标,直至该敌人死亡,再继续往下走,点击下边的斑点坐标,直至不再发送斑点坐标,鼠标才暂停操作,从而完成射击敌方的目标。实现坐标的取值首先要以主机屏幕的左上角作为原点,水平向右为X轴正方向,竖直向下为Y轴正方向[10]。机械视觉与虚拟鼠标的研究目的主要是改变传统的PC-Mouse的交互模式[11]。首先获取鼠标的位置,然后将该按键值赋为Key,Key的值用于对鼠标事件参数赋值[12]。本设计用到的是USB鼠标,USB的系统架构,应用程序,实现所需要的USB通信[13]。USB鼠标属于标准设备,操作系统自带驱动,只用开发设备端的固件。在USB系统中,所有数据都是发送或者接收到Endpoint(端点),因此USB设备必须有1个controlendpoint,主机PC端以数据包的方式,通过controlendpoint获取设备的相关信息,数据包的格式是固定的,需要在reportdescriptor中定义,这种数据包就叫做Descriptor(描述符)。代码中uint8_tMouse_Buffer[4]={1,0,0,0};指第一个参数设为1表示按下,uint8_tMouse_Buffer2[4]={0,0,0,0};指第一个参数设为0表示释放,当串口接收到一个斑点坐标,鼠标移动到该坐标点的位置,按下鼠标,再释放鼠标。USB设备接入主机时,首先会有个枚举过程,主机请求设备的descriptor,以获得设备的信息,设备用指定格式的descriptor应答主机请求,请求和应答的设计都是通过controlendpoint传输,当枚举成功后,主机和设备才能通讯。图4.2PC端与USB接口工作图

第五章系统制作及调试5.1硬件测试 (1)异常问题:从AD14版本的PCB生成rule文件,导入AD19新工程的PCB规则,导入时提示x2.exe停止工作解决方案:在AD14版本导入rule文件生成PCB,然后在AD19中直接打开(2)异常问题:元器件USB_MICRO_B_U-F-M5DD-Y-1出现绿色报错解决方案:运行DRC,根据提示的错误信息,分别在MinimumSolderMaskSliver、PAD_PAD和PAD_TRACK这三处规则里面将设计的封装命名为USB_MICRO_B,修改为所用封装名字USB_MICRO_B_U-F-M5DD-Y-1。5.2软件测试 读取鼠标点像素:在项目文件加进去一张jpg格式的图片,创建一个image窗口,运行程序,打开窗口显示图片并且用鼠标左键点击该图片,读取该坐标点是坐标、像素失败。然后对代码进行修改,增加点击该点图片上也会显示该点的坐标,然后输出该点坐标和像素。调试后结果如图5.1读取图片坐标和像素。图5.1读取图片坐标和像素 跳转网页窗口:项目想要完成截取游戏视频,需要跳转到游戏窗口,因为本项目的游戏为网页游戏,所以也要跳转到网页,开始定义游戏的名字,没办法跳到MicrosoftEdge,因此修改定义为#defineGAMEWINDOWNAME "MicrosoftEdge",然后可以跳转到该窗口进行保存游戏视频。 截屏:代码开始设定是按下CAPS键就停止截屏,可是调试过程中,按下该按键没反应,后来更换成按下SHIFT键停止截屏,屏幕能够正常截屏,该操作还包含如果到读取MicrosoftEdge窗口就输出found,并且输出该窗口的高为864和宽为1536,调试结果如图5.2窗口读取信息。图5.2窗口读取信息ROI设置截取区域:因为游戏的原因,我选取的坐标是X为900,Y为350,截取图片的长度为300,截取的高为514,开始由于计算ROI区域错误,然后出现报错,因为截取的范围超出该游戏窗口范围,所以对数据进行再次计算,然后创建窗口,看选定的区域是否把我方血量条除去,敌方血量条是否能够全部包含,以此减少误差。宏定义冲突:过程中用到STM的宏定义冲突,导致无法生成项目,后来在该定义加上括号,从而避免报错。图5.3宏定义冲突显示保存游戏视频:截屏的目的是为了保存一段游戏视频,对游戏视频进行调试,比较方便下面算法的测试,因此项目创建一个CC的AVI格式的文件,把图片一帧帧的读取进该文件,生成成功,也看到鼠标闪烁,说明已经在截取,可是打开视频文件却无法打开,开始是因为电脑播放器的问题,没办法解码AVI文件,然后下载一个通用播放器打开,发现里面没有视频,因此截取视频后创建小窗口播放该视频,确定视频是写进去,后来找到问题发现是编码器的问题,修改编码器后就能截取到想要的区域视频。图5.4截取ROI区域视频 上位机测试:在VisualC++上运行串口通讯测试代码,打开小窗口,看是否输出各斑点坐标值,测试过程中发现VC++串口连接失败,无法打开串口。解决方案:①用微软提供的API时,通过CreateFile()函数打开串口,当串口号为COM1~COM9时,串口打开正常,当COM口为COM10及其以上的串口号,可用“\\\\.\\COM10”的形式进行替换。②打开设备管理器-端口设置-高级-选择COM1~COM9的端口。当putty界面出现代码发送的指令,表示成功接收数据。 固件测试:keil5中打开STM32项目,运行MyProject项目文件,看是否能够点击到相应的坐标。 结果:烧录成功,开发板LED灯闪烁。

结论 本设计是针对一些手速比较慢的游戏玩家设计的一款辅助性的外挂,采用STM32F103C8为主控制芯片,结合OpenCV的图像处理、VisualC++对游戏视频进行截取、灰度视频、斑点扫描算法,串口通讯并在keil5中打开STM32项目,运行MyProject项目文件,从而实现鼠标控制。绘制PCB电路板的时候,对PCB的元器件布局的知识不够丰富,导致实验过程中需要一直修改布线并且需要重新铺铜,因此在实验前应该对电子器件多加了解,进行合理的分布和布局规划,才能减少这些错误。 需要改进的方面,在获取敌方血量条的斑点坐标设计的过程中敌人可能会同时出现多个并且在同一水平线2,因此会出现多个斑点坐标,首先点击哪一个坐标是比较难解决的地方,经过不断尝试,鼠标能够更准确的移动到相应的坐标,可是有时候还是会出现一些偏差。ROI设置图像区域的过程中,因为只需要获取敌方的位置从而避免我方的血量条进入图像区域,也尝试了很久,开始的时候因为把我方血量条也截取到图像区域内,导致还要每次区分敌我双方,比较繁琐,经过改进后更好的避免了这个问题,2游戏胜利率提高。在处理信号方面还是缺乏经验,导致该系统运行时还是出现一些偏差。本设计只能针对一个游戏,不能对射击类的游戏进行大面积的使用,因为每个游戏都有所区别,所以不能直接套用,这样在灵活性方面不是很好,不同的游戏要做出相应的改进,难度系数比较高。该项目仍然有需要完善的地方,在鼠标点击和移动的准确率和斑点坐标,在游戏中可以获取奖励值、我方生命值不会受影响也是可以深入探索的。 拓展方面:除了鼠标控制的射击游戏,也希望该技术能应用于键盘操作的游戏,又或者是键盘结合加上鼠标控制的游戏。

参考文献[1]王力.基于ARM和OpenCV的视频监控系统的设计与实现[J].西安电子科技大学.2019.[2]杨荣乾.移动射击辅助器[J].科技与创新.2020(02).[3]王冰雪,刘广文,刘美,陈广秋.轮廓波域内局部对比度增强的彩色图像灰度化算法[J].液晶与显示.2020(02).[4]梁磊,刘怀,梁秦嘉,董春燕.灰度序列图像中结合相互法与梯度特征的阴影去除算法[J].南京师范大学学报(工程技术版).2019(02).[5]谢丹桂等著.基于边缘检测的快速斑点识别算法[J].三峡大学学报(自然科学版).2010(06).[6]龚再兰.基于PC与单片机串口通讯控制的点阵系统设计.电子世界.2020(03).[7]董国钢.计算机单片机通信系统软硬件结构设计[J].辽宁经济职业技术学院.辽宁经济管理干部学院学报.2020(01).[8]荆宜青.QCM检测仪系统软件的优化设计与实现(硕士)[J].郑州大学.2010[9]张剑.OTP存储器应用开发技术研究[J].电子科技大学.2015[10]权德奎.基于STM32实现的红外遥控控制USB鼠标[J].山东工业技术.2015(11).[11]华尉然,康艺旋,童强,张行文.基于OpenCV的虚拟鼠标应用研究[J].福建电脑.2018(12).[12]吴博,王彬,翁政魁,熊新,刘辉.基于OpenCV的鼻尖特征点鼠标实时控制系统实现[J].计算机应用与软件.2018(02).[13]黄海,吕玉嫦,雷卫延.基于STM32的USB接口协议技术的研究与实现[J].气象水文海洋仪器.2019(03).

致谢时间总是在不经意间就过去了,这么快就到了毕业季,也是要告别的时候,我想要感激的人非常多,其中包括我的老师、朋友和同学们,我的大学生活能够变得如此多姿多彩,充满欢声笑语,都是因为有他们的存在,经常下课都约上舍友一起去饭堂吃饭,身体不舒服的时候,他们也会非常体谅我,还会帮我打包我想吃的饭菜,陪着我疯,陪着我成长,是我的好舍友,好同学,因为有他们的信任,我才能肩负自己的责任,为他们付出真心很值得。首先,我要感谢张老师,在本次毕设完成过程中,张老师每次都能细心的提醒我,每次都非常认真负责的解答我的疑惑,我需要完成什么任务,张老师都会多次提醒我,会问我找什么工作,工作环境怎样,跟专业的相关事情,让我感到非常的温暖,毕设在确定题目的时候,来说也会耐心帮我分析,选题需要注意的地方,我选好课题后,老师还和我一起分析,怎么让我的毕设更多样化,不能太过于单一,因此选择软件和硬件相结合的毕设题目,我能感受到老师的良苦用心。张老师让我学会要注重每一个细节,帮我分析问题,然后找到解决问题的方法并在相应的问题上给出建议,让我的毕设能够更完美,我的毕业作业能够顺利完成是张老师不懈的支持和教导,因为我要在完成实习的同时完成本次毕设,所以从中也会出现很多低级性的错误,但是张老师都会很负责任的帮我找出毕业设计项目中这些细微的错误,细心批改,对错误进行批注,让我能更直观看出问题所在,让我的论文才能如此顺利且完美的完成。当然,我还要感谢我的父母,我的家人们,他们每次都能在我最需要的时候出现,是我人生的避风港,他们非常的支持我和理解我,让我不用担心吃不好,睡不好的问题,让我可以向着自己的梦想而努力,并且对我做出的任何决定都很支持和信任,也正是他们的理解和支持,才让我成为一个自信、乐观开朗的人,我也将通过自己的努力,让他们也能过上幸福美满的生活。最后,感谢大学中教过我的所有老师,还要感谢我的同学、舍友、部员们,感谢在大学里遇到的每一个人,让我学习到很多知识,积累人生阅历,同时也培养了我良好的社交能力,让我学会更好的与人沟通交流,让我更有自信并且积极勇敢的面对一切风雨。感谢有你们的陪伴,大学生活只是人生的开始,我将带着你们的期望,勇敢地走下去。

HYPERLINK电脑文件整理懒招从来都是不会经常整理文件的,不过时间一长,众多的文档分布在硬盘的各个角落,用目录进行整理保存,工作量大、查看起来也不方便且还会浪费不少的磁盘空闻;用压缩工具打包,尽管可以节约空间但是却无法直接编辑修改或查看压缩包中的文件。这些招,懒人怎么会用,他们自有妙招!再多再乱的文件也能整理得井井有条,关键是不费力哦!

懒招1,自动提取乱中取胜

小张起初将照片、Office文档、电影、音乐等文件一股脑地存放在某一个磁盘分区,刚开始文件少使用起来倒也方便,但随着时间的推移,文件数量剧增,每次找所需的文件都要瞪大眼睛,不过有了MY文档管理器(下载地址:)就不用担心了。

第一步,下载MY文档管理器,解压到任意目录,直接双击其中的可执行性文件即可使用。依次单击“节点操作→添加节点”,分别添加多个节点,如“办公文档”、“电影”等分类,这样做的目的是方便归类。

第二步,在小张的F盘中的TEST目录下有众多的RM、MP3、JPG、DOC、TXT格式的文件,现在他要把JPG格式的文件提取到“照片”类别中。依次单击“系统配置→文件过滤”选项,打开Dialog对话框,输入“*.doc”,单击“添加”按钮,意思是过滤掉所有类型为“.DOC”的文件。然后按照同样的方法,将“*.txt”、“*.rm”、“*.MP3”一一添加进来。

第三步,双击左侧窗格中的“照片”节点,然后依次单击“记录操作→导入记录树”命令,在打开的对话框中单击浏览按钮,打开“F:\test”目录,单击“确定”按钮之后就可以将格式为JPG的文件提取出来并添加到“照片”节点中了。

懒招2,不同的电脑统一的管理

小张是电爱的Fans,工作之余常常为杂志写稿,他写完的和正在处理的稿件一般都存在一个稿件文件夹里。不过时间一长,家里的电脑(PC1)和单位的电脑(PC2)上都有这个文件夹。时常需要通过移动硬盘(U盘)在两台电脑之间传递,使用和管理都很不方便。不过他现在用优盘就可以统一管理了。

第一步,将上文提到的那个MY文档管理器解压后直接拷贝到优盘上。把优盘插到PC1上,并运行软件,依次单击“记录操作→导入记录树”命令,在随后弹出的对话框中设置好“稿件”文件夹的根目录,将“导入深度”设置为“5”,单击“确定”后,稍等片刻,软件就把PC1上的“稿件”导入到MY文档管理器中。

小提示:通过这种方式导入到程序中的仅仅是文件的路径、文件名等属性信息,并不是文件本身。

第二步,把优盘插到PC2上,按照同样的方法导入PC2上的“稿件”文件。以后要编辑“稿件”里的文件,你自己根本不用记住哪台电脑的哪个路径,只要把优盘插入到电脑,运行MY文档管理器,就可以直接编辑了。

第三步,为方便在异地使用,小张决定为当前正在处理的稿件增加一个副本。在需要异地处理的稿件上右键单击,选择“复制文件到(自动添加副本)”命令,在弹出的对话框中将保存目录设置为优盘上的某个目录即可。这样,就可以在优盘上编辑PC1或PC2的稿件了。

小提示:对于PC1、PC2上的同名文件,MY文档管理器以不同的磁盘号+文件路径来标识文件记录,因此,对于不同电脑上的同名文件,甚至是路径和文件名完全相同的文件,程序也可以准确识别哪个是哪个。

懒招3多种文件批量移动

要将文件管理得井然有序,就免不了要进行复制、删除、移动等等操作,如果一个个进行操作,工作量是非常巨大的。这时我们就需要借助于BelvedereAutomated(下载地址:.com/assets/resources/2008/03/Belvedere%200.3.exe)进行批量操作了。例如我们想把“F:\test”目录中的所有照片移动到F盘中的“北京游照片”目录中,可以按以下方法进行。

第一步,建立“F:\test”目录后在“rule”一栏中,单击“+”按钮,建立一个规则。在“Descriptior”文本框中为当前规则起一个名字如“批量整理移动”。单击第一个下拉列表,在这里可以选择Name(文件名)、Extension(扩展名)、Size(大小)等进行操作,这里选择扩展名“Extension”。单击第二个下拉列表,在这里设置的是操作条件,有is(是)、isnot(不是)、contains(包含)等操作可供选择,这里选择的是“is”。接下来,在最后的文本框中输入图片文件的扩展名,示例中是“JPG”。定义的规则合起来的意思就是“扩展名是JPG”。

第二步,在“Dothefollowing”区域设置操作动作,单击第一个下拉列表进行操作动作的选择,有“Movefile(移动)、Renamefile(重命名)、Deletefile(删除)”等动作可供选择,我们要批量移动,那就选择重命名“Movefile(移动文件)”。接下来,单击后面的按钮选择“F:\北京游照片”目录。

第三步,规则设置完毕,单击“Test”按钮应用规则,程序即可一次性地将所有扩展名为“JPG”的图片文件移动到“F:\北京游照片”目录中了。

懒招4提纲挈领一点即得

在前面几大懒招的帮助下,你电脑里的文件应该已经有点类别了吧。如果从此想告别懒人的生活,那就要养成管理文件的好习惯了。

第一步,在你保存资料的电脑分区中,要接类别建立多个文件夹,可以按用途分为:学习、娱乐、暂存、工作、下载,在娱乐下又可以建立二级目录:电影、歌曲、动画等。也可以按照常见的文件性质进行分类,例如分为:图片、电影、电子书、安装文件等,当然也可以按照你的需要再建立二级目录,以后每有文件需要保存就按这个类别保存到相应的目录。

第二步,虽然现在已经把文件分门别类存放了,但时间长了,目录太深,一层一层查找也很麻烦的,在EXCEL里建一个目录就可以统一管理了。运行EXCEL后,新建一个表格,然后按照我们的分类方式隔行输入:图片、电影、电子书,在图片分类下再建立二级目录名,例如明星、汽车、壁纸等。

第三步,右键单击“图片文字”,选择“超链接”,在弹出的对话框中选择电脑里图片目录文件夹,单击“确定”后EXCEL里的“图片”文字就变成彩色。用同样的方法为一级目录的“电影、电子书”和二级目录的“明星、汽车、壁纸”等添加超链接。然后将这个EXCEL文件命名为文件目录,保存到桌面上,以后打开这个文档,直接单击相应的文字,比如单击“壁纸”,就可以切换到壁纸文件夹了。

小提示:如果要更改某个超链接,直接右键单击该文字,选择“编辑超链接”就可以了。本人的电脑分类原则简述如下。

硬盘的第一层(请在自己的件夹中右键“按组排列”查看)

第一位字母表示A生活娱乐B教学C工作D安装程序

第二位字母表示只是流水号

AA影视

AB音乐

AC阅读

AD图片

AE相册

生活娱乐

BA计算机

BB英语

BC运动

BD游戏攻略

BE衣食住行

BF文艺

教学

CA管理制度

CB流程图

CC程序文件

工作

DA娱乐

DB其它

安装程序

硬盘的第二层(进入“AA影视”的文件夹举例)

第一位字母表示只是流水号

第二位字母表示只是流水号

AA电影

BA电视剧

CAMTV

硬盘的第三级(进入“AA电影”的文件夹举例)

第一位字母表示A动作片B剧情片C动画片

第二位字母表示A未看过B已看过

AA导火线

AB尖峰时刻

动作片

BA独自等待

剧情片

CB机器猫

CB狮子王

动画片

利用“字母排序”和“按组排列查看”可以使文件查看和存放简洁明了,结合自己资料的特点和实际需求,给自己定一个分类原则并严格执行。个人电脑资料的资源会得到高效而充分的利用。电脑文件管理八条小技巧

在电脑的内部,在电脑的桌面上,在“资源管理器”中,充斥着无序与混乱,这种虚拟的混乱极大地影响了电脑的性能和我们办公的效率,当大家面临这个问题时,通常认为硬盘空间又不够了,电脑性能又不跟不上了,需要再换一台新的电脑了。事实上,我们真正需要的是坐下来,好好花时间将电脑里的文件真正管理起来,会为自己日后省下更多的时间。

文件管理的真谛在于方便保存和迅速提取,所有的文件将通过文件夹分类被很好地组织起来,放在你最能方便找到的地方。解决这个问题目前最理想的方法就是分类管理,从硬盘分区开始到每一个文件夹的建立,我们都要按照自己的工作和生活需要,分为大大小小、多个层级的文件夹,建立合理的文件保存架构。此外所有的文件、文件夹,都要规范化地命名,并放入最合适的文件夹中。这样,当我们需要什么文件时,就知道到哪里去寻找。

这种方法,对于相当数量的人来说,并不是一件轻松的事,因为他们习惯了随手存放文件和辛苦、茫无头绪地查找文件。

下面,我们将帮你制订一套分类管理的原则,并敦促您养成好的文件管理习惯。以下是我们总结出的一些基本技巧,这些技巧并不是教条,可能并不适合你,但无论如何你必须要有自己的规则,并坚持下来,形成习惯。

一、发挥我的文档的作用

有很多理由让我们好好地利用“我的文档”,它能方便地在桌面上、开始菜单、资源管理器、保存/打开窗口中找到,有利于我们方便而快捷地打开、保存文件。我们可以利用“我的文档”中已有的目

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论