物联网综合实训专用周实训手册_第1页
物联网综合实训专用周实训手册_第2页
物联网综合实训专用周实训手册_第3页
物联网综合实训专用周实训手册_第4页
物联网综合实训专用周实训手册_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

实训一:WIFI驱动加载及应用教学目的掌握LINUX系统用户、任务、设备管理、系统环境设置及相关命令的使用;掌握LINUX系统交叉编译化境设置;掌握LINUX系统下设备驱动的移植;掌握QTCreator开发环境设置;掌握QT应用项目创建、界面制作、编程调试掌握ARMQT应用程序运行环境设置:教学内容LINUX系统用户、任务、设备管理、系统环境设置及相关命令的使用:LINUX系统交叉编译化境设置;LINUX系统下设备驱动的移植;QTCreator开发环境设置:ARMQT应用程序运行环境设置:WIFI驱动的交叉编译及移植;WIFIQT应用的开发及移植:实训准备材料USB转串II线USB无线网卡(TP-LINKTL-WN322G+)及源码包RT2870STA.dat,H5370sta.ko(无线网卡ARM驱动文件)QT4.7aim-lmux-gcc4.4.3wenquanyisetqt4env实训内容使用QT开发一个应用,能实现对给定USB无线网卡驱动的加载,并与指定的无线AP组网,组网效果采用ping命令进行测试,ping方节点IP地址时能正常返回信息说明组网成功,完成实训一。LINUX卜基本的加载过程insmod驱动的位置(/etc/Wireless/RT.../*.ko)*.dat-->生成设备名raOiwlistraOscan-今当前无线接入点有那些ESSID(,,tc2O3,,>iwconfigiaOessid"tc203”iwconfigraOkeys:iwconfigraOkeyopenifconfigraO192.168.0.XXQT应用开发(PC)QTCreator,开发环境功能调试环境:gcc+qmake(qmake4.8.3),负责语法及功能调试交叉编译环境:arm-lmux-gcc4.4.3,arm-qmake(qmake4.7.3)421交叉编译环境设置解压arm-linux-gcc4.43.tgz文件

root@unsp-virtual-machine:/home/zerg#tarvxzfarm-linux-gcc-4.5.l-v6-vfp-20101103・tgz・C/opt.设置系统全局环境PATH变量root@unsp-virtual-machine:/home/zerg#gedit/etc/profileg*M9/ftc/pr«uu;sde.讦oUle“leforftxmesfteH<3ti<li,ardtonreiheUsCteshin.IsftOI....Iif(-d女MSflled).tE<or1le/«tc/pr©fi!•-«/•&“I-rtl|ith«*»・$1ndemUMCIn”(51.I;tJWtiif[1;tlwnifIfzcurtekk.Mshrc);ibtft./et</bash.u&>rcn”I."u・5I;Zelwms•「R'tPATW-iFATM./oft/rrlerdly•»</.5.lA»n■momMVW,|IAISEycU8m<•■枷■go■momMVW,|IAISEycU8m<•■枷■go».>wnMFIZJCBUQTWIFI运用开发MFIZJCBU界面,界面制作整体为tab控件(容器),左右为frame控件(容器),在frame控件中添加标签、文本、按钮控件,采用这种形式外观整洁,便于排版。▼Sframe_3OOi]horizontalLayout^SconnectToApipDisplaylabel_SIJUUhorizontalLayout_4ipAddrlabel_4IJUljhorizontalbayouC_3keylabel_3IJUUhorizontalLayoutlabelloadlDriveloadDrivepushButtonUMhorizontalLayout_8wifiPingwifiTest11*1•iI-7代码4.4组网测试在实训室架设一个AP(无线接入点),ESSID为“tc203”,IP地址为“192.168.0.1”,无密码,学生对其WIFI进行测试时加入该AP组成网络,IP地址设置为“192.168.0.XX”形式,子网掩码为“255.255.255.0”,在控制台输入ping命令进行测试,"ping192.168.0.1气4.5QT应用运行(ARM)QT4.79/opt/运行环境,程序应用需要很多的库文件/opt/Qt4.7/Hbsetqt4eiw~>/bin环境的设置脚本,每次须首先运行该文件.setqt4env支撑中文-^wenquanyi/opt'Qt4.7/lib/fonts/(U盘拷贝)RT2870STA.dat,rt5370sta.ko^/etc/Wireless/RT2870STA(U盘拷贝)程序运行今qws程序名-qws&4.6代码示例voidMainWindow::on_loadDrivepusliButton_clicked(){QStriiigcmd=ui->loadDrive->textQ;shell=newQProcess();qDebugQ«cmd://shell->setProcessChaimelMode(QPiocess::MergedChaiinels);shell->start(cmd);comiect(shelLSIGNAL(readyRead())Jliis,SLOT(ieadProcessOut()));if(?shell->waitForStarted()){qDebugO«nProcessstartfailed!M;}if(?shell->waitForFHiished()){qDebugO«nProcesscannotfinish!”;}shell->close();实训二:串II操作教学目的掌握LINUX系统用户、任务、设备管理、系统环境设置及相关命令的使用;掌握LINUX系统交叉编译化境设置;掌握LINUX系统下串口的操作所需的头文件及函数:掌握QT应用项目创建、界面制作、编程调试掌握QTCreator开发环境设置;掌握ARMQT应用程序运行环境设置:教学内容LINUX系统用户、任务、设备管理、系统环境设置及相关命令的使用;LINUX系统交叉编译化境设置;LINUX系统下串II的操作所需的头文件及函数;QTCreator开发环境设置:ARMQT应用程序运行环境设置:LINUX系统下串II的初始化、参数设置:LINUX系统下串口的读写操作;实训准备材料USB转串II线串II线(两头都为公II)QT4.7aim-lmux-gcc4.4.3wenquanyisetqt4env实训内容使用QT开发一个应用,实现串II的通信,通信双方采用串II线相连,发送方把信息写入(英文、数字)串II,接受方可通过串II线读取信息并显示,收发双方在实训台上实现上述功能即完成实训二。串II:写信息读串II:获得对方发送信息5.1QT实现串口通信QT实现串II通信,QT没有关于串II操作类,它通过调用C函数实现,所需的头文件如^include<stdio.h>^include<uiiistd.h>//open(),close。,write。,readQ^include<teniiios.li>//$I】属性设置QT对于文件类的读写事件驱动操作通过QsocketNoti如类实现,需包含如下头文件。^include<QSocketNotifier>在嵌入式Lmux中,串「I是一个字设备,每次读写一个字节,访问具体的串行端「I的编程与读/写文件的操作类似,只需打开相应的设备文件即可操作。串11编程特殊在于串11通信时相关参数与属性的设置。嵌入式Lmux的串「I编程时应注意,若在根文件中没有串II设备文件,应使用nikiiod命令创建,这这里假设串II设备是/dev/ttySO,介绍一下串II的编程过程。nikiiod/dev/ttySOc464nikiiod/dev/ttySOc1880、打开串口打开串II设备文件的操作与普通文件的操作类似,都采用标准的I/O操作函数open()oIiitfd=open(”/dev/ttyUSB0",O_RDWR|O_NDELAY|O_NOCTTY);open()函数有两个参数,第一个参数是要打开的文件名(此处为串II设备文件/dev/ttySO);第二个参数设置打开的方式,O_RDWR表示打开的文件可读/写,O.NDELAY表示以非阻塞方式打开,O_NOCTTY表示若打开的文件为终端设备,则不会将终端作为进程控制终端。、设置串口属性串II通信时的属性设置是串II编程的关键问题,许多串II通信时的错误都与串II的设置相关,所以编程时应特别注意这些设置,最常见的设置包括波特率、奇偶校验和停止位以及流控制等。在Lmux中,串II被作为终端IO,它的参数设置需要使用stnictteniiios结构体,这个结构体在teniuo.li文件中定义,旦应在程序中包含这个头文件。typedefunsignedcharcc_t;typedefunsignednitspeed_t;typedefunsignedinttcflag_t;stmcttenniosftcflag_tc_iflag;/*输入模式标志*/tcflag_tc_oflag;/*输出模式标志*/tcflag_tc_cflag;/*控制模式标志*/tcflag_tc_lflag;/*本地模式标志*/tcflag_tcjine;/*行规程类型,一般应用程序不使用*/cc_tc_cc[NCC];/*控制字符*/speed_tc_ispeed;/*输入数据波特率*/speed_tc_ospeed;/*输出数据波特率*/};串II的设置主要是设置这个结构体的各成员值,然后利用该结构体将参数传给硬件驱动程序。在Linux中,串II以串行终端的方式进行处理,因而,可■以使用tcgetattrQ/tcsetatti()函数获取/设置串「I的参数。Iiittcgetatti(mtfd,stiucttermios*tennios_p);Iiittcsetatti(iiitfd,intoptional_actions,stmcttennios*ternuos_p);返回值成功0,失败-1;这两个参数都有一个批向teinuos结构体的指针作为参数,用于返回当前终端的属性或设置该终端的属性。参数fd就是用open()函数打开的终端文件句柄,而串II就是用openQ打开的串II设备文件句柄。tcsetattr()函数的optional_action参数用于指定新设定的参数起作用的时间,其设定值可以为:TCSANOW改变立即生效TCSADRAIN在所有的输出都被传输后改变生效,适用于更改影响输出参数的情况。TCSAFLUSH在所有输出都被传输后改变生效,丢弃所有末读入的输入(清空输入缓存)。设置波特率使用cfsetospeedQ/cfsetispeedO函数设置波特率,它们分别用于在tenmos结构体中设置输出和输入的波特率。设置波特率可以使用波特率常数,其定义为字母“B+速率”,如B19200就是波特率为19200bps,BU5200就是波特率为115200bps。intcfsetispeed(stmcttennios*ternuos_p.speed_tspeed);//speed为波特率常数intcfsetospeed(stmcttennios*tennios_p,speed_tspeed);例:cfsetispeed(ttysO_opt,B115200);cfsetospeed(ttysO_opt,Bl15200);设置控制模式标志控制模式标志c_cflag主要用于设置串II对DCD信号状态检测、硬件流控制、字符位宽、停止位和奇偶校验等,常用标志位如下:CLOCAL忽略DCD信号,若不使用MODEM,或没有串II没有CD脚就设置此标志CREAD启用接收装置,可以接收字符CRTSCTS启用硬件流控制,对于许多三线制的串不应使用,需设置〜CRTCTSCSIZE字符位数掩码,常用CS8CSTOPB使用两个停止位,若用一位应设置〜CSTOPBPARENB启用奇偶校验IGNPAR无校验HUPCL在最后一个进程关闭设备后,降低modem控制线(挂断)例如,下面的代码将串II设置为忽略DCD信号,启用接收装置,关闭硬件流控制,传输数据时使用8位数据位和一位停止位(8N1),不使用奇偶校验。stmcttenuosttvsOJttyso_opt.c_cflag|=CLOCAL|CREAD;//将CLOCAL与CREAD位设置为1ttysO_opt.c_cflag&=-CRTSCTS;〃将硬件流控制位CRTSCTS清0,其他位不变ttysO_opt.c_cflag&=〜CSIZE;//清除数据位掩码ttysO_opt.c_cflag|=CS8;〃设置8位数据位标志CS8ttysO_opt.c_cflag&=〜(PARENB|CSTOPB);〃使用1位停止位,停用奇偶校验设置本地模式标志本地模式标志c.lflag主要用于设置终端与用户的交互方式,常见的设置标志位有ICAN—ON,ECHO和ECHOE等。其中,ICANON标志位用于实现规范输入,即read()读到行结束符后返回,常用于终端的处理:若串II用于发送/接收数据,则应清除此标志,使用非规范模式(rawmode)o非规范模式中,输入数据不组成行,不处规范模式中的特殊字符。在规范模式中,当设置ECHO标志位时,用户向终端输入的字符将被回传给用户;当设置ECHOE标志位时,用户输入退格键时,则回传“退格一空格一退格”序列给用户,使得退格键覆盖的字符从显示中消失,这样更符合用户的习惯(若未设置此标志,输入退格键时,则光标回退一个字符,但原有的字符未从显示中消失)。设置输入模式标志输入模式标志c_iflag主要用于控制串II的输入特性,常用的设置有IXOFF和IXON,分别用于软件流控制。其中,IXOFF用于防止输入缓冲区溢出;IXON则是在输入数据中识别软件流控制标志。由于许多嵌入式系统无法使用硬件流控制,因此,只能使用软件流控制数据传输的速度,但是,它可能降低串II数据传输效率。启用软件流控制的代码如下:ttysO_opt.c_iflag卜IXOFF|IXON;设置输出模式标志输出模式标志c_oflag主要用于对串II在规范模式时输出的特殊字符处理,而对非规范模式无效。设置控制字符在非规范模式中,控制字符数组c_cc[]中的变量c_cc[VMIN]和c_cc[VTIME]用于设置read。返回前读到的最少字节数和读超时时间,其值分为四种情况:c_cc[VMIN]>0,c_cc[VTDvIE]>0读到一个字节后,启动定时器,其超时时间为c_cc[VTIME],RadO返回的条件为至少读到c_cc[VMIN]个字符或定时器超期。c_cc[VMIN]>0,c_cc[VTIME]==0只要读到数据的字节数大于等于c_cc[VMIN],则read()返回;否则,将无限期阻塞等待。c_cc[VMIN]==0,c_cc[VTIME]>0只要读到数据,则read()返回:若定时器超期(定时时|ujc_cc[VTIME])却未读到数据,则read()返回0;c_cc[VMIN]==0,c_cc[VTIME]==0若有数据,则read()读取指定数量的数据后返回:若没有数据,则read。返回0:在teniiios结构体中填写完这些参数后,接下来就可以使用tcsetattrQ函数设置串I1的属性。tcsetattr(企,&old_opt);//将原有的设置保存到old_opt,以便程序结束后恢复tcsetattr(fci,TCSANOW,&ttsyO_opt);、清空发送/接收缓冲区为保证读/写操作不被串II缓冲区中原有的数据干拢,可以在读/写数据前用tcflushO函数清空串「I发送/接收缓冲区。tcflushO函数的参数可为:TCIFLUSH清空输入队列TCOFLUSH清空输出队列TCIOFLUSH同时清空输入和输出队列、从串口读写数据串II的数据读/写与普通文件的读/写一样,都是使用i-eadQ/wnteO函数实现。n=write(fd,buf.len);〃将buff1len个字节的数据从串II输出,返回输出的字节数n=read(fd,buf,len);〃从串II读入len个字节的数据并放入buf.返回读取的字节数、关闭串II关闭串II的操作很简单,将打开的串II设备文件句柄关闭即可。close(fd);5.2串口编程步骤初始化串II设备(打开这个设备,设置串II通过规程,规程包括波特率、数据位、停止位、校验位、流控);写串口;>读串口;(监听方式:轮询、中断)实训内容1)硬件连接,用串II线连接同台PC(两台PC之间亦可)的两个串II实现主机间的通信;2)布局如下图p00]horizontalLayout_8wifiPingwiFiTest001horizontalLayoMt_2ess-idlabel_2pMFramepIJUJhorizontaiL^yout_7sendsendsmsIJUJhorizontaiL^yout_echeckseriallabel_7serialselectserialMsg密r「ame_4▼Ca▼『「刃t3)代码voidMainWmdow::on^checkSeriaLchckedOQSurngseiialNaine-ui->senalSelect->cuirentText().tiinmied();snisfd-::open(senalName.toAscii(j,O_RD\\rR|O_NONBLOCK);qDebug()«HopenSeiialM;if(snisfd>0)(qDebug()«nopenSerial!11111M;tenniosserialAttr;meniset(&senalAttr,0,sizeof<senalAttr));serialAttr.c_iflag-IGNPAR;serialAttr.c_cflag-B115200|CS8|CREAD|CLOCAL;serialAttr.c_cc[VMIN]-l;if(tcsetattr(sinsfd.TCSANOW,&senalAttr)!-0)(qDebugO«Mopenserialfailed?**;)ui->serialMsg->setText(HSerialopenSuccessfully!H);ttyN-newQSocketNotifiei(smsfd.QSocketNotifier::Read,this);connect(ttyN,SIGNAL(activated(int)),this,SLOT(readSerialQ));voidMamWmdow::ieadSerialQ(qDebugQ«,,enterreceiver**;unsignedcharc;::iead(sinsfd,&c.sizeof(c));qDebugQ«c;recSnis.append(c);qDebugQ«recSnis:ui->senalMsg->setText(iecSms);voidMamWmdow::on_send_clickedO(QSumgsms-ui->sendSms->textQ.trimmed();mtnum-::wnte(smsfd,sms.toAscii(),snis.toAsciiQ.length());qDebugQ«num;)实训三:Zigbee应用开发教学目的掌握LINUX系统用户、任务、设备管理、系统环境设置及相关命令的使用;掌握LINUX系统交叉编译化境设置;掌握LINUX系统下串II的操作所需的头文件及函数:掌握QT应用项目创建、界面制作、编程调试掌握QTCreator开发环境设置;掌握ARMQT应用程序运行环境设置:了解Zigbee通信规程;学会基于Zigbee的应用开发;教学内容LINUX系统用户、任务、设备管理、系统环境设置及相关命令的使用:LINUX系统交叉编译化境设置;LINUX系统下串II的操作所需的头文件及函数:QTCreator开发环境设置:ARMQT应用程序运行环境设置:LINUX系统下串II的初始化、参数设置:LINUX系统下串口的读写操作;Zigbee通信规程;实训准备材料USB转串II线串II线(两头都为公II)QT4.7aim-lmux-gcc4.4.3wenquanyisetqt4env实训内容使用QT开发一上装有“温湿度”传感器,终端节点上装有“光敏”传感器;使用QTCreator开发一应用,用户可■通过该应用获知zigbee网络信息、获知当前温湿度信息、光敏信息并显示在界面上。应用数据处理流程:读zigbee网络(写串II,16字节)今获知路由器节点(温湿度)、终端节点网络地址(光敏)并存储(读串II,32字节)今数据处理(按zigbee通信规程把需要部分的信息取出并存储);读温湿度(写串II,16字节)今获取温湿度信息(读串II,32字节)今数据处理、转换并显示(十进制显示);串II返回数据有多种需要进行分类处理:(读网络:ROU、RFD;读温湿度(光敏):RNW、RWS、4.1硬件示意图RGM);RNW、RWS、4.1硬件示意图RGM);4.2zigbee波特率数据位起始位停止位校验位流控制19200811NoneNone路由或终端:■读取网络RNVV命令格式:&(i)+wsn(3)+rnw(3)+''yyyyyyyy''(8)+*(i)返回格式:&(l)+WSN(3)+RNW(3)+(type)S(l)+节点网络地址(2)+总节点数(1)+节点类型(3)+节点物理地址(8)4■父节点网络地址(2)+PAN!D(2)+”yyyyy”(5)+*(i)注:节点类型:ROU路由COR协调器RFD终端.读取温湿度数据RVVS命令格式:&(1)+WSN(3)+RWS(3)+节点网结地址⑵+”yyyyyy”(6)+*(i)返回格式:&(l)+WSN(3)+R\VS(3)+(type)S(l)+节点网结地址(2)+温度数据(2)+湿度数据(2)+"yyyyyyyyyyyyyyyy”(16)+连接质量(i)+*(i)注:温度数据:数据己乘io湿度数据:数据已乘io■读取光敏数据RGM命令格式:&(1)+WSN(3)+RGM(3)+节点网络地址(2)+”yyyyyy”(6)+*(l)返回格式:&(1)+WSN(3)+RGM(3)+(type)S⑴+节点网络地址(2)+光敏数据(i)+”yyyyyyyyyyyyyyyyyyyy”(i9)+连接质量(歹*(1)注:光敏数据:ad采样值4.3界面5rCCCtaa«:5的58。:aq<w'“虞ilA»serialselectserialMsg乏Frame_4▼tab_2▼搠frame_5label1olabeCazNodeAddzRgmzRnwzRwszSerlalCheckzSerialName5rCCCtaa«:5的58。:aq<w'“虞ilA»4.4代码voidMamWindow::on_zSeiialCheck_clicked()/QStringserialName=ui->zSerialName->cunentTextQ.tnninied();zigbeefd=::open(serialName.toAscuQ,0_RD\\7R|0_NONBLOCK);if(zigbeefd>0)/qDebug()«MopenzigbeeSerial*1;terniiosserialAttr;memset(&senalAtti\0,sizeof(senalAtti));serialAttr.c_iflag=IGNPAR;seiialAttf.c_cflag=B19200|CS8|CREAD|CLOCAL;serialAttr.c_ccJASMIN]=1;if(tcsetattr(zigbeefci,TCSANOW5&senalAtti)!=0)qDebug()«Hsetserialfailed!H;)ui->zMsg->setText(nsetseriallsuccessfully”);zigbeeN=newQSocketNotifiei(zigbeefd,QSocketNotifier::Readjhis);coimect(zigbeeN,SIGNAL(activated(mt)).

温馨提示

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

评论

0/150

提交评论