




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于KinetisK60单片机的自动图书分拣小车系统设计
目录1绪论 基于KinetisK60单片机的自动图书分拣小车系统设计摘要:本文主要设计一个可以实现图书自动分拣功能的小车系统。利用KinetisK60单片机作为主控制器进行数据采集以及统筹系统各模块正常工作,使用红外条码扫描模块、CMOS摄像头模块作为主要传感器实现条码扫描以及路径识别,WIFI模块作为通信模块实现与上位机通信,C#编写上位机服务器作为小车系统与MySQL数据库之间的中介。本系统可以实现自动识别图书条形码,通过查询数据库获取图书位置信息并将图书运至指定位置的功能。关键词:自动分拣;条形码;数据库;WIFI;KinetisK60DesignofAutomaticBookSortingCarbasedonKinetisK60MicrocontrollerZhangZhen(SchoolofInformationandElectricalEngineering,ElectricalEngineeringandAutomation,1302,20132214206) Abstract:Acarsystemisdesignedwhichcanrealizetheautomaticbooksortinginthispaper.TheKinetisK60microcontrollerisusedtocollectdataandmakethemodulesofthissystemtobenormal.Theinfraredbar-codescannerandCMOScameraareusedtoimplementbar-codescanningandpathidentification.WIFImoduleisusedtoconnectwiththePCserver.BuildaPCmonitoringserverbyC#asanintermediarybetweenthecarsystemandMySQLdatabase.Thissystemcanautomaticallyidentifythebookbar-code,andquerydatabasetoobtainthebookinformationandtransportbookstothedesignatedposition. Keyword:automaticsorting;bar-code;database;WIFI;KinetisK60绪论引言当前,随着科学技术的发展,人类得以从繁杂枯燥的工作中解脱出来。而随着社会文化水平的提升,社会对知识的需求度也随之不断的在提高,所以不论是学生还是其他各行业人士对文化的追求程度都在不断提升,基于此现状,各个地区图书馆每天的读者借书量,还书量也都随之在逐渐增多。这就带来了新的问题,特别是对于动辄上百万本藏书的图书馆的工作人员来说,每天图书流通量的增加无疑给他们的图书分类工作带来了巨大的压力,这同时也造成了图书馆图书的流通量和借用率远远低于图书馆的藏书量。发生这种问题的原因主要还是因为图书管理工作主要由人工完成,这种原始的分拣归类方式不仅造成分拣工作效率低下,同时错误率也很高。同时随着工业化程度的不断深入,使用机器取代人工已经是一种不可避免的趋势,各行各业都在寻找一种提升产业升级的新途径。在目前的货物分拣如物流行业就已经用上了流水线式或者自动小车分拣方式来对数量庞大的货物进行分类运输[1],解决了诸多物流行业货物分拣的问题。在此基础上设计的自动图书分拣小车,根据书籍后面的条形码将不同的图书运送到不同的区域,这种方式将会大大提高图书馆在图书分拣过程中图书分拣的效率以及准确性,同时也会减轻图书馆工作人员的工作压力以及图书馆的服务满意度,更好的服务于广大读者。研究内容本图书分拣小车是以KinetisK60微控制器为核心,集成LV4红外条码扫描模块、CMOS摄像头传感器及WIFI通信模块等一系列外围模块,同时使用C#上位机服务器以及数据库操作的智能控制分拣系统。小车系统通过条码扫描模块自动识别图书条形码,使用WIFI模块与上位机通信查询数据库获取图书信息,根据图书信息中的位置信息将图书自动运输至指定位置,之后自动返回原点。针对以上功能本文主要做了以下四个研究:对放在小车上的图书条形码进行扫描并正确,通过WIFI通信模块查询上位机图书信息;使用C#编写上位机实现其与小车系统和数据库之间的读写操作;在上位机中实时显示小车状态,以及实现上位机实时控制小车运行的效果;根据图书信息控制小车将图书自动运至指定的位置(图书信息存于数据库中)。自动图书分拣小车系统方案论证总体方案设计本图书分拣小车系统以KinetisK60单片机为核心控制器,以CMOS摄像头为路径识别传感器,红外扫描模块作为条码扫描传感器,WIFI模块实现通信功能,上位机实现连接小车系统与数据库之间的通信作用,并由电源模块,舵机电机驱动模块等一系列外围电路集合搭建而成[2][3][4]。本系统采用红外扫描模块采集到图书条形码之后,通过串口转WIFI通信模块通过socket套接字同上位机建立的服务器进行通信,上位机接收小车识别到的图书条码查询数据库获知图书信息后将图书信息发送给小车,之后单片机对摄像头传感器采集的路径图像信息进行处理分析,通过计算获取舵机正确打角以及电机转速,对电机及舵机发出PWM控制信号进行舵机打角以及电机转速控制,将图书运输到指定位置。该系统主要工作原理图如图2.1所示。图2.1系统原理图功能介绍 本文所设计自动图书分拣系统可以实现图书条码识别,通过WIFI可以同时进行多个小车同上位机服务器连接以及通信,上位机实现接收小车发送的数据,查询数据库,并下发图书信息数据到小车,之后小车根据图书信息将图书运送到不同位置实现分类。以上所述功能在实验中均能实现所要求的效果。系统方案设计与选择核心芯片选择选择一款性能优良、价格合理且符合硬件要求的芯片对于一个单片机控制系统来说尤为重要。传统意义上的8位,16位等单片机对于本系统所要求的处理速度及所需要的功能等方面,已无法满足本系统的要求。近些年ARM系列单片机的飞速发展给市场带来了多款性能优异且价格低廉的单片机产品,这也给本系统带来了另一个选择。综合本系统所要实现的功能以及性能要求,本系统采用了32位的ARM内核单片机KinetisK60,其具有普通I/O口,PIT定时,中断系统,DMA传输等功能,使用外部晶振其工作时钟频率可达到100MHz,本文所用的时钟频率为96MHz[5]。经过验证该单片机的功能及性能都充分满足本系统功能实现的需要。路径识别模块选择要使小车具有自动运输功能,就需要它能自动寻找路径以及自动行驶,这就需要一个“眼睛”,即路径识别检测传感器。在本系统验证过程中,为了整个系统的设计工作,这里采用的试验模拟路径为双黑边路径,使用一款性能良好的摄像头来处理路径信息对于系统性能以及寻迹效率等都尤为重要。本文所设计系统采用的传感器为CMOS型摄像头OV7725,该款摄像头支持VGA/QVGA两种图像格式,且其传输速率可达到150Hz,动态性能较好[6]。硬件设计上采用了硬件二值化电路方案。且其采集的1字节数据为8个像素点,即0xFF代表“11111111”8个像素,在图像中显示为8个黑色像素,这样的存储方式大大缩小了暂存图像所需的存储大小及单片机处理图像信息的复杂程度。摄像头模块实物图如图2.2所示,小车系统验证过程中使用的路径如图2.3所示。图2.2摄像头图2.3试验模拟路径条码扫描模块选择对于每一本图书来说,它都有一个唯一的条形码与之对应,要想实现图书的分类,这就需要实现对图书上条形码的识别功能,目前世面上流行的条码扫描方式主要有红外扫描,摄像头扫描以及激光扫描等方式。摄像头扫描主要运用在手机等一些手持终端机等高端场所,激光扫描各项性能指标最高,但是其价格也相对更昂贵一些,对于本系统而言,综合扫描性能和价格等方面的综合考虑,本文设计的系统采用了红外扫描的方式。红外条形码扫描模块采用了远景达公司的LV4型号的条码扫描模块,它是一款嵌入式一维条码扫描器模组,可以读取纸张,商品等介质上的条码,识别能力较强,可以识别市场上所有主流的条码格式,同时体积较小,5V供电,其小巧的机身使得它更容易嵌入到本系统当中。同时该模块带有自解码功能,其可以将检测到的条码自行识别结算,并将识别到的条码信息直接通过串口发出,单片机通过串口接收即可得到条码数据,大大降低了二次开发的难度。对于图书上采用的EAN-13类型条码,其识别能力同样出色。红外扫描模块实物图如图2.4所示。图2.4红外条码扫描模块图书条码为EAN-13类型,其13为条码由978+ISBN号组成。ISBN全称为“国际标准书号”,共10位。前3位是978,代表图书;第4~8位代表图书出版地区,如7表示在中国出版的图书;第5~10位为图书的出版社代码,由所在国家分配;第6~12位是图书序号,由出版该书的出版社给出;第13位是校验码,根据条码前12位计算得出。本系统试验所使用的书籍“ComputerSystem.Aprogrammer’sperspective”在中国发行译本的图书条码如图2.5所示。图2.5CSAPP国内译本条码通信模块选择对于一个智能分拣小车来说,小车必定会重复使用多次,若要将所有图书信息存储到小车单片机储存器之中显然是不现实的,同时也会大量浪费小车控制器中存储空间,所以若要真正实现便捷快速,最好的方式就是与上位机实现数据通信,查询数据库等操作,这大大降低了小车自身所承担的压力,这就需要用到通信模块。对于本系统的通信模块来说,在图书馆的实际应用当中,因为图书存量的巨大,这就会有多辆分拣小车同时运行同时工作,这就出现了出现一主多从(即一个服务器,多个分拣小车)的模式。蓝牙通信及WIFI通信两种模式均具有这种功能,但经过传输速率及传输距离等多方面考虑,WIFI通信有很多蓝牙通信不具有的性能特性,所以采用了WIFI通信方式。经过较长一段时间无线的发展,现在市面上有很多嵌入式WIFI模块,经过模块价格及开发难易程度等方面的比较,采用了MXCHIP公司的型号为EMW3162的嵌入式WIFI模块[7]。作为一个串口转WIFI模块,其可轻松实现数据的传输,将数据通过串口发送给模块即可实现数据的传输,这就使得用户不必过多在意数据传输的过程而将注意力放在传输的数据上,大大降低了二次开发的难度。WIFI模块实物图如图2.6所示。图2.6EMW3162WIFI通信模块自动图书分拣小车系统的硬件设计与实现主控板模块KinetisK60单片机若要良好稳定的运行,需要单片机最小系统电路的稳定。主控板采用龙邱公司出品的K60P100引脚的最小核心系统版。该单片机核心板具有JTAG下载接口,外部50MHz有源晶振,电源保护等功能,其可以直接插到绘制的电路板上,同时在实际运行过程中较为稳定。在本文所设计的电路板上还可以将需要用到的单片机I/O口引出进行系统开发,如K60最小系统所引出的所有引脚如图3.1所示,在本文中所使用到的引脚在图上均有标识。图3.1KinetisK60最小系统板接口电源模块整个系统的稳定运行离不开一个稳定的电源系统,本系统所使用到的电源电压包括7.2V、5V以及3.3V等。电池电压7.2V经过470u电容滤波之后直接供给电机驱动模块,同时使用LM2940稳压芯片将电池电压7.2V稳定到5V给摄像头及LV4红外条码扫描器等传感器供电,使用LM1117-3.3稳压芯片将稳定的5V电压降压到3.3V给单片机及WIFI模块供电。系统的电源电路图如图3.2所示。图3.2电源模块电路舵机模块小车在识别完路径之后,若还要将图书运送到指定的位置,离不开一个方向控制模块的参与。本系统采用LM1117-Adj稳压芯片及其外围电路将电池电压7.2V通过调节电位器R4稳定到5.5V给舵机供电,单片机输出PWM信号对舵机打角进行控制,在舵机控制端与单片机输出引脚之间加入光耦隔离,防止舵机转向变化瞬间电流过冲损坏单片机。舵机电源以及单片机信号经过光耦控制舵机电路如图3.3所示。图3.3舵机模块电路电机驱动模块一个稳定的电机驱动电路对于一个小车系统来说必不可少,因为制作本系统使用到的是一个双电机小车,为了实现小车使用双电机的大电流驱动,本系统采用了4片BTN7960组成两个全桥驱动电路来驱动两个电机[8],使用电源7.2V对模块进行供电。同时单片机输出4路PWM波作为电机正反速度控制,实验证明控制效果较为理想,在驱动芯片控制端与单片机输出引脚端之间加入了74LS244反相器芯片用作隔离单片机与驱动芯片之间的直接连接,防止电机的转速变化瞬间电流过冲击毁单片机,如图3.4为双电机驱动电路。图3.4电机驱动模块电路路径识别模块路径识别使用型号为OV7725的硬件二值化CCD摄像头,由于摄像头对于排线及电路要求较高,这里的线路设计为了更好的图像采集并进行数据传输,经过查阅资料,在正常的电路中加入了四个上拉下拉电阻进行电平的限制可以是摄像头模块接口电路更好的工作。经过对加入电阻及未加入电阻的效果进行比较,在硬件I2C接口加入上拉电阻可以使得摄像头寄存器写入数据更加稳定,行和像素中断加入下拉电阻之后摄像头图像也相对稳定并且质量较高。三个摄像头中断信号(场中断VSYNC,行中断HREF,像素中断PCLK)同时接入单片机引脚(PORTA),并配置为下降沿中断触发方式。摄像头寄存器读写采用硬件I2C,将摄像头的SCL及SDA引脚接入单片机I2C接口。数据引脚接入单片机PORTD端口共8个引脚,并通过软件配置成通过硬件DMA传输数据,其中片内DMA模块触发源为PORTD端口,传输数据期间不占用处理器资源。摄像头模块接口以及所使用的上下拉电阻的电路图如图3.5所示。图3.5摄像头模块接口其他模块接口其他模块主要有EMW3162WIFI无线传输模块、OLED显示模块、UART调试模块以及LV4红外一维条码扫描模块等。其中WIFI通信、UART串口通信以及LV4红外条码扫描模块等都通过UART串口协议与单片机进行通信,其中UART串口调试模块使用片内UART0模块,WIFI通信模块使用片内UART3模块,LV4红外扫描模块使用片内UART4模块,这些模块均通过跳线实现连接。此外还有一个OLED接口。上述模块的接口电路图如图3.6所示。图3.6其他模块接口PCB布局上文主要介绍了本系统所用到各个模块的电路图,经过调试,使用这些电路图制作的小车系统各项功能运行良好。绘制了PCB板,PCB板中包含了以上介绍的所有电路。绘制完成的PCB布局图如图3.7所示。图3.7PCB图自动图书分拣小车系统的程序设计与实现程序主流程系统程序流程如下图所示,系统上电之后进行初始化工作,当图书放上小车之后,条码扫描模块自动识别条形码,之后进入待机状态等待放书,系统扫描得到条码信息之后发送给上位机,上位机进行查询数据库操作,查询成功之后返回所查图书在图书馆内的位置代码,之后小车将图书运送到指定位置,最后返回原点继续等待放书,中间多种进程(如无任务,进行中,卸货,返回等状态)之间的转换通过单片机接收中断以及判断中断类型来更改标志位来实现。主程序流程图如图4.1所示,具体代码实现见附录6。图4.1程序主流程图系统上电之后,首先进行系统的初始化过程,在此过程中主要对以下几个模块进行了初始化工作:摄像头传感器初始化,摄像头模块内寄存器初始化等;UART0,UART3,UART4等串口模块初始化,串口配置及中断配置等;舵机及电机PWM模块初始化等;OLED显示屏初始化;一些外部中断接口的初始化配置。条码扫描实现LV4红外条码扫描模块具备自动解码功能,解码完成之后将条码信息通过串口发送到单片机,单片机可直接通过串口接收中断来接收模块发送的信息并存入条码信息数组中,在系统初始化中已经配置串口条码接收中断函数为UART3_RX_ISR()(见附录1),接收完成之后将扫描完成标志位scanReadyFlag置位,程序根据该标志位来判断是否进入下一步。路径识别实现在小车的初期设计阶段,为了专注于实现整个系统的设计工作,实际环境依旧采用了双黑边路径,在路径上添加标志实现空间的位置分类,实验环境为在一条直道上有三个不同标志(实验用书为三本,仅用条形码代表,分别为CSAPP,AdvancedMathematics(1),AdvancedMathematics(2)),分别代表A,B,C三个区,小车检测标志进行停车卸书,之后返回原点。在系统检测到摄像头场中断后,程序会进入图像处理部分,算法将图像原始数据处理成真实数据之后,进行路径的寻线操作。路径识别主要流程如图4.2所示,经过实际路径经过路径识别算法之后的二值化图像如图4.3所示。。图4.2路径识别流程图图4.3经过识别算法之后的二值化图像标志物识别标志物识别使用红外对管,在路径上使用不同数量的横黑线来区别A,B,C三个区域,其中A区使用一条黑线,B区使用两条黑线,C区使用三条黑线,程序检测在一定时间内,红外对管所在端口产生中断的次数,来判断小车到达的位置区域,再与当前任务需要到达的位置进行比较,如果不同则忽略,如果相同则停车卸书,之后返回原点。标志位识别程序流程图如图4.4所示,程序实现方面使用普通I/O口中断与定时器中断配合的方式来实现。图4.4标志物识别流程图 在标志位识别完成之后,再判断标志位位置是否与本次任务位置相同,相同则说明到达位置,将标志位arriverFlag置1,小车停止运行卸书,不相同则继续运行等待下次中断,小车卸书完成之后,返回原点,检测到原点标志位则停止。小车控制实现小车的控制通过定时器中断来实现,程序配置单片机定时器定时17ms产生中断,此时在定时器中断函数中对小车进行控制,检测到系统定时器中断之后,如果小车被允许前进(通过全局变量controlFlag标志位对小车的运行状态进行控制:停止或行进),程序会根据图像算法提取赛道中心黑线并判断中心黑线偏差,根据偏差控制小车舵机转向,并打开电机速度控制开关,进行速度控制。控制函数在计时器中断函数中,该函数见附录5。小车主要控制流程如图4.5所示。图4.5小车控制流程图通信功能实现系统通信模块使用串口转WIFI,单片机通过串口发送数据至WIFI模块,上位机发送数据给WIFI模块,模块再通过串口发送给单片机接收,WIFI模块与上位机之间通过IP地址连接,之后通过socket套接字进行通信,其中WIFI模块作为client,上位机作为server。数据发送直接通过串口发送即可。数据接收通过串口中断来实现,上位机发送给单片机的数据格式为“’$’+书籍名称+’%’+书籍在图书馆内位置代码+’*’”,其中*为数据结束字符,检测到*即代表数据传输结束,结束之后将接收完成标志位receReadyFlag置位,具体代码见附录2。接收完成WIFI发送的数据之后,小车单片机对接收到的数据进行解析,也即进行数据分类,将书籍名称及位置代码分别存入两个字符串之中,使用数据包中的标志‘%’来区别和分离两个字符串。根据这里解析到的两个字符串进行后续工作。上位机服务器(C#)基本介绍为了实现单片机与数据库之间的通信,经过尝试,发现无法直接通过WIFI模块连接到数据库,故用C#编写了一个中介性质的上位机软件[9],上位机打开之后创建一个服务器,接收小车系统通过WIIF发送的数据,并通过查询数据库,实现小车系统与数据库之间的数据对换,同时在上位机实现小车状态的实时显示和简单的控制效果。上位机在接收到下位机发送的数据包之后进行的工作流程如图4.6所示,上位机主界面如图4.7所示。图4.6上位机运行流程图图4.7上位机界面从图4.6可以看出,其可以实现多个小车的连接和查询服务,联机状态显示小车是否连接上服务器,当前任务编号显示小车当前运送的书籍的条形码,当前状态显示小车是处于无任务、进行中、暂停、卸货及返回等状态,控制栏可以控制小车的暂停与继续等行为。当小车当前有任务时其上位机的状态显示如图4.8所示。图4.8上位机小车状态信息上位机查看小车当前任务的图书信息如图4.9所示,相同任务下小车上的OLED显示屏显示的内容如图4.10所示,可以看出其显示的是从上位机接收到的图书信息,这说明小车与上位机,上位机与数据库之间的通信正常。图4.9上位机图书信息窗口图4.10小车OLED显示图书信息Socket套接字简介在网络传输过程中普遍使用到TCP/IP协议族,其包括运输层,网络层,链路层。Socket套接字是应用层与TCP/IP协议族中运输层之间的软件抽象层,同时其也是一组接口,它可在实际应用之中将复杂的TCP/IP协议隐藏在Socket接口后面,只需使用这组接口就可实现网络通信而不需了解其背后复杂的通信协议,简化了TCP/IP协议的使用门槛。使用socket接口函数实现网络通信的主要工作流程如图4.11所示。图4.11socket套接字通信流程从流程图中可以看出,服务器与客户端通过Socket进行通信的流程可以归结为以下几步:(1)首先服务器创建socket,给创建的socket绑定IP地址及端口号,之后持续监听可能来自客户端的请求。(2)客户端创建socket,案件事先设置的IP地址及端口号尝试与服务器进行连接。(3)服务器端接收到来自客户端的连接请求之后,与客户端进行连接。(4)客户端连接成功之后想socket写入信息,服务器读取socket信息即可实现从客户端向服务器端的数据通信,通信完成之后客户端首先关闭socket,之后服务器端关闭。(5)服务器端对于上述流程的代码实现见附录3,客户端由WIFI模块实现。MySQL数据库连接MySQL数据库是一种关系型数据库管理系统,关系数据库将数据存储在不同的表中,而不是将所有数据存储在一个大仓库中,这样就增加了速度并提高了数据库操作的灵活度。本系统使用MySQL数据库存储图书信息,查询MySQL数据库需要用到SQL语言,它是访问数据库的最常用到的标准化语言。在自动图书分拣小车系统中,由于需要将上位机与MySQL数据库建立连接,此时需要通过特殊的接口函数将上位机与数据库连接起来。本系统上位机编写使用的是C#语言,mysql.data.dll是C#操作MySQL数据库的驱动文件,同时也是其连接MySQL数据库的必要插件,为C#连接数据库提供了必要的接口函数,之后就可以在IDE中使用标准的SQL语言操作数据库。若要实现上位机软件从数据库中查询数据,首先需要与数据库建立连接,连接方法是使用一个字符串指令打开一个数据库连接,该字符串指令包括服务器名称(Server),用户名称(UserID),用户密码(Password),连接的数据库名称(Database)等;连接成功之后即可进行数据查询操作,数据查询操作使用标准SQL语言。本系统使用到的图书信息数据表如图4.12所示,其中book_status栏表示图书是否完成分拣的状态,update_time表示数据库更新的时间。连接数据库及查询数据库操作代码见附录4。图4.12图书信息数据表总结与展望在整个自动图书分拣小车的制作过程中,也遇到了方方面面各种不同的问题,比如条码无法正常识别,识别完成之后发送出来的条码数据处于乱码状态,WIFI模块无法与上位机实现正常的通信,上位机无法实现查询数据库操作等问题,针对每个问题都进行了深入的研究并且也将其逐一解决。在完成整个系统的设计工作之后,经过对整个小车系统一段时间的实践验证,该自动图书分拣小车在实验室环境下运行效果良好,能实现自动分拣图书等所要求的全部功能。但在实验室环境小车寻迹依据为双黑边路径,要在现实中实现如此理想的道路环境,明显是不现实的。未来有机会可以把寻迹方式改成识别地上铺设的铁丝实现寻迹,使用永磁体或者可以存储信息的线圈作为位置标志,使用电磁传感器作为识别路径的传感器,这将是一种较为现实的方式。完成制作后的自动图书分拣小车的实物图如图5.1所示。图5.1完成作品参考文献[1]王昆,刘晓山.基于条形码识别的物流包裹自动分拣系统设计[J].洛阳理工学院学报,2016,26(2):66-70.[2]张振,赵玫等.基于路径识别自循迹智能车的设计[J].鲁东大学学报,2017,33(1):36-40.[3]王子辉,叶云岳.基于CMOS传感器的智能循迹小车图像识别技术研究[J].传感技术学报,2009,22(4):484-488.[4]邵贝贝.单片机嵌入式应用的在线开发方法[M].北京:清华大学出版社,2004.[5]NXPSemiconductor,Inc.KinetisK60Sub-FamilyReferenceManual[Z]./assets/documents/data/en/reference-manuals/K60P100M100SF2RM.pdf,2011-11.[6]OmniVisionTechnologies,Inc.OV7725ColorCMOSVGACAMERACHIPTMSensorwithOmniPixel2TMTechnology[Z].http://chip.tomsk.ru/chip/chipfile0-x.nsf/all/AEDCE29E5DEED53146257E6400627871/$File/ov7725.pdf,2007.[7]上海庆科(MXCHIP),Ltd.EMW3162嵌入式模块datasheetV1.9.[Z].http://www.mx/download/getFiles/57b26c531c06c.pdf,2016-7-12.[8]InfineonTechnologies,Inc.BTS7960Datasheet[Z].https://iprototype.nl/docs/15A-motor-controller-datasheet-bts7960.pdf,2004-12-07.[9]Microsoft,Corp.EnhancingWindowsFormsApplications.[Z]./en-us/library/ms229592(v=vs.110).aspx,2010.附录附录1:staticvoidUART3_RX_ISR(uint16_tbyteReceived)//LV红外模块串口接收中断{ staticintj=0; for(inti=0;i<10;i++) { if(byteReceived==originalCode[i]) { transCode[j++]=charCode[i]; //将对应数值存入transCode数组中 if(j==codeLength) { j=0; scanReadyFlag=1; //置扫描完成标志位 break; //扫描完成后退出 } } }}附录2:staticvoidUART4_RX_ISR(uint16_tbyteReceived)//wifi串口接收中断{staticunsignedchari=0;if(byteReceived!='*') //未到字符串终止符{ receData[i]=byteReceived; i++;}else //到终止符 { receData[i]='*'; i=0; receReadyFlag=1; //置接收完成标志位}}附录3:ThreadthreadWatch=null; //负责监听客户端的线程SocketsocketWatch=null; //负责监听客户端的套接字privatevoidcontrolserver_btn_Click(objectsender,EventArgse){//定义一个套接字用于监听客户端发送的信息包含3个参数(IP4寻址协议,流式连接,TCP协议)socketWatch=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);//获取当前电脑IP地址,作为服务器地址IPAddressipaddress=Dns.GetHostEntry(Dns.GetHostName()).AddressList[1];//将IP地址和端口号绑定到网络节点endpoint上IPEndPointendpoint=newIPEndPoint(ipaddress,1);//监听绑定的网络节点socketWatch.Bind(endpoint);//将套接字的监听队列长度限制为20socketWatch.Listen(20);//创建一个监听线程threadWatch=newThread(WatchConnecting);//将窗体线程设置为与后台同步threadWatch.IsBackground=true;//启动线程threadWatch.Start();}SocketsocConnection=null; //创建客户机连接IPEndPointclient=null; //客户机IP与portIPAddressclientIP=null;intclientPort=0;privatevoidWatchConnecting(){//持续监听while(true){ //客户机连接成功 socConnection=socketWatch.Accept(); client=(IPEndPoint)socConnection.RemoteEndPoint; clientIP=client.Address; clientPort=client.Port; //创建一个通信线程ParameterizedThreadStartpts=newParameterizedThreadStart(ServerRecMsg); Threadthr=newThread(pts); thr.IsBackground=true; //启动线程 thr.Start(socConnection);}}附录4:publicclassSqlConnection{staticstringstr="Server=localhost;UserID=root;Password=;Database=library;CharSet=gbk"; staticMySqlConnectionmSqlConnection=newMySqlConnection(str); publicstaticstring[]select(stringbook_id) { //书籍名称 //书籍在图书馆内位置代码 string[]selectResult=newstring[2]; //储存查询到的信息数组 //打开数据库连接 mSqlConnection.Open(); //设置查询命令 stringselectCmd="selectbook_name,book_positionfrombooksWHERE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年常州工程职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 2025年山东商务职业学院高职单招高职单招英语2016-2024历年频考点试题含答案解析
- icl相关知识课件
- 2025年宁夏职业技术学院高职单招(数学)历年真题考点含答案解析
- 2025年北京市顺义区高三一模数学试卷(含答案解析)
- 血友病的护理
- 脑血栓的诊断
- AFP防治知识培训课件
- 护理文化与护士
- 2019交通安全课件
- 《机械创新设计》课程教学大纲(机械设计制造及其自动化专业)
- 飞机客舱保洁安全
- 申报高、中级专业技术职务量化测评表
- 西方文论概览(第二版)-第七章课件
- 疾病控制(中级361)相关专业知识卫生专业技术资格考试试题及答案指导(2025年)
- 高等数学(第五版)课件 3.1 微分中值定理与洛必达法则
- 基于学科核心素养的高中体育与健康学业质量与学习评价解读-汪晓赞
- 看守所刑事解除委托书
- 统编版历史七年级下册 问答式复习提纲
- 大型集团公司信息安全整体规划方案
- 特别国债资金管理办法
评论
0/150
提交评论