• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 微波/射频 > RF技术文章 > 可视化WIFI遥控搬运机器人之客户端设计

可视化WIFI遥控搬运机器人之客户端设计

录入:edatop.com    点击:


可视化WIFI遥控搬运机器人之服务器搭建

http://www.cntronics.com/rf-art/80025761

可视化WIFI遥控搬运机器人之硬件部分设计

http://www.cntronics.com/rf-art/80025732

本设计主要研究基于WIFI网络的可视化无线遥控搬运机器人,利用WIFI网络高速传输实时视频图像采集,通过机器人安装的传感器实现数据采集。采用WIFI网络通讯使得控制端多样化,可用手机,电脑等具备WIFI功能的设备进行控制。此外,还可将机器人接入Internet实现更远距离的控制。本设计在S3C6410平台上移植了Linux操作系统用于接收命令并对硬件设备进行控制,其中移植了MJPGstreamer作为视频服务器,移植了BOA服务器作为WEB服务器。本文将从硬件设计,驱动程序编写,服务器移植,服务程序编写,Android应用程序编写,Web应用程序编写等方面来讲述本设计的功能实现。

总体设计及硬件选型和电路部分:可视化WIFI遥控搬运机器人(1):硬件部分


驱动程序编写,服务器移植,服务程序编写部分:可视化WIFI遥控搬运机器人(2):服务器搭建

4 客户端程序设计


4.1 Android客户端设计


4.1.1 Android客户端软件流程图

Android应用程序流程图闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佺粯鍔﹂崜娆撳礉閵堝洨纾界€广儱鎷戦煬顒傗偓娈垮枛椤兘骞冮姀銈呯閻忓繑鐗楃€氫粙姊虹拠鏌ュ弰婵炰匠鍕彾濠电姴浼i敐澶樻晩闁告挆鍜冪床闂備浇顕栭崹搴ㄥ礃閿濆棗鐦遍梻鍌欒兌椤㈠﹤鈻嶉弴銏犵闁搞儺鍓欓悘鎶芥煛閸愩劎澧曠紒鈧崘鈹夸簻闊洤娴烽ˇ锕€霉濠婂牏鐣洪柡灞诲妼閳规垿宕卞▎蹇撴瘓缂傚倷闄嶉崝宀勫Χ閹间礁钃熼柣鏂垮悑閸庡矂鏌涘┑鍕姢鐞氾箓姊绘担鍛婃儓闁活厼顦辩槐鐐寸瑹閳ь剟濡存担鍓叉建闁逞屽墴楠炲啫鈻庨幘宕囶啇濡炪倖鎸鹃崳銉ノ涜濮婂宕掑▎鎴犵崲濠电偘鍖犻崗鐐☉閳诲酣骞嬮悙瀛橆唶闂備礁婀遍崕銈夈€冮幇顔剧闁哄秲鍔庣弧鈧梻鍌氱墛娓氭宕曢幇鐗堢厸闁告侗鍠氶崣鈧梺鍝勬湰缁嬫垿鍩ユ径鎰闁绘劕妯婂ḿ缁樹繆閻愵亜鈧垿宕曢弻銉﹀殞濡わ絽鍟悡姗€鏌熺€电ǹ浠滅紒鐘靛█濮婅櫣绮欓崠鈩冩暰濡炪們鍔屽Λ婵嬬嵁閸儱惟闁冲搫鍊搁埀顒€顭烽弻锕€螣娓氼垱楔闂佹寧绋掔粙鎴﹀煘閹达附鍊烽柡澶嬪灩娴滃爼姊洪悷鎵紞闁稿鍊曢悾鐑藉醇閺囥劍鏅㈡繛杈剧秮閺呰尙绱撻幘鍓佺=闁稿本鐟чˇ锔姐亜閹存繃鍤囬柟顔矫埞鎴犫偓锝庡亜閳ь剙鐏氶妵鍕箻鐠虹儤鐎虹紓浣筋嚙濡繈寮婚弴銏犻唶婵犻潧鐗忛濠囨⒑閸涘﹤绗傞柛妤佸▕瀵鈽夐姀鈥充簽婵炶揪缍侀弲鑼姳閻e瞼纾藉〒姘搐閺嬶附銇勯弴鍡楁搐閻撯€愁熆鐠哄ソ锟犳偄閼姐倗鏉搁梺瑙勫劤婢у孩顨欓梻鍌欐祰濡椼劑鎮為敃鍌氱婵炲棗绻掗弳锕傛煏婵炵偓娅撻柡浣革躬閹绗熼婊冨弗闂佽 鍋撻柕濞у懐锛濋梺绋挎湰閼归箖鍩€椤掑嫷妫戠紒顔肩墛缁楃喖鍩€椤掑嫨鈧線寮介鐐殿槹濡炪倖鐗楃粙鎴濃枔閹达附鈷戦柛娑橈攻鐏忣偊鏌i幒鐐电暤闁挎繄鍋ゅ鎾閿涘嫬骞嶉梻浣侯攰椤宕濋敃鍌氬惞婵炲棙鍨瑰Λ顖炴煙椤栧棗鍟崐顖炴⒑闁稓鈹掗柛鏂跨焸閿濈偛饪伴崼婵嗚€垮┑掳鍊愰崑鎾搭殽閻愬樊鍎旀慨濠呮缁瑥鈻庨幆褍澹夐梻浣告贡閹虫挸煤椤撱垻宓侀柛鎰╁妷閸亪鏌涢銈呮瀻婵炲牏鍠栧娲濞戣鲸肖闂佺ǹ瀵掗崳锝呯暦閹达箑绠婚悹鍥ㄧ叀閺佹粌鈹戞幊閸婃捇鎳楅崼鏇炵煑闁糕剝绋掗埛鎴︽煕濠靛棗顏璺哄閹便劌螣缁嬪灝顫囬悗瑙勬礃缁诲倿顢橀崗鐓庣窞閻庯綆鍓欓獮宥夋⒒娴e憡鍟為柛鏃€岣挎禍绋库枎閹炬潙鈧潡鏌涘☉姗堟敾闁告瑥绻愰埞鎴︽偐閹绘帩浼€闁汇埄鍨遍惄顖炲蓟閻旈鏆嬮柣妤€鐗嗗▓妤呮倵鐟欏嫭纾搁柛鏂跨Ф閹广垹鈹戠€n亞锛滃┑鐐村灦閻熝囧汲椤撱垺鈷掗柛灞捐壘閳ь剙鍢查湁闁搞儜鍛闂佹眹鍨绘灙缂佹劖顨婇弻娑㈠焺閸愵亖妲堢紒鐐劤濞硷繝寮婚悢鐓庣畾闁绘鐗滃Λ鍕磽娴e搫校闁绘搫绻濆濠氬即閿涘嫮鏉搁梺鍝勬川閸庢劙鍩€椤掆偓閺堫剛鎹㈠☉姘辩當闁告繂瀚~鍥⒑閸濆嫯瀚扮紒澶屽厴绡撳〒姘e亾闁哄本鐩獮妯尖偓闈涙啞閸f澘顪冮妶鍐ㄧ仾鐎光偓閹间礁鏋侀柟鐗堟緲楠炪垺绻涢崱妯虹仼婵℃彃娲︾换婵嗏枔閸喗鐏嶉梺鎸庢磵閺呯姴鐣烽姀銈呯闁兼祴鏅╁ú绋库攽閻樿宸ラ柟铏姉婢规洘绺介崨濠勫幗闂侀€涘嵆濞佳勬櫠椤斿浜滈幖娣灮閻﹥銇勯鍕殶闁逞屽墯缁嬫帟鎽梺绋匡攻閸旀鍩€椤掍緡鍟忛柛鐘愁殜閹繝鏁撻悩顔瑰亾娴h倽鏃堝川椤撶媭妲规俊鐐€栭崹鍏兼叏閵堝洠鍋撳顑惧仮婵﹦绮幏鍛村川婵犲懐顢呴梺鍝勵儛娴滄繄鎹㈠☉銏犵妞ゆ洖鎳忛ˉ鏍磽娓氬洤鏋涙い顓犲厴閻涱喖螣鐏忔牕浜鹃梻鍫熺⊕閹插憡銇勯弮鈧ú鐔煎蓟閿濆鍋愰柛娆忣槸瀹稿爼姊洪崨濠佺繁闁告ê銈搁幃锟犲磼閻愮补鎷洪柡澶屽仦婢瑰棝藝閿曞倹鐓熸俊銈傚亾闁挎洏鍎崇划姘綇閵娧呯槇闂佹悶鍎洪悘娑滎樄闁哄本绋戦埥澶愬础閻愬浜繝鐢靛仜閹冲矂宕愬┑鍡╂綎闁惧繐婀遍惌娆愮箾閸℃ê鍔ら柛鎿冨墴濮婃椽宕ㄦ繝鍐ㄩ瀺缂備浇顕х€氫即鐛幋锕€顫呴柣姗嗗亝閺傗偓闂備焦鎮堕崕顕€寮插┑瀣剨闁割偁鍎查埛鎴犵磼鐎n偄顕滄繝鈧幍顔剧<閻庯綆鍋勯悘銉╂煃鐠囪尙效闁轰焦鍔欏畷顏呮媴閻熸壆妲i梻鍌欑窔濞佳囨偋閸℃瑦宕查柟鐑橆殔缁€鍡椕归悡搴f憼闁绘挸绻橀弻娑㈩敃閵堝懏鐎鹃梺绋匡攻閸旀牠銆冮妷鈺傚€烽柟缁樺笚濞堣尙绱撴担绋库偓鍦暜閻愬搫鐒垫い鎺戯功閸掍即鏌h箛鏂垮摵鐎殿喗鐓¢、妤呭焵椤掑嫬鐓橀柟杈鹃檮閸婄兘鏌℃径瀣仼濞寸姵鎮傞弻锕傚礃椤旂粯鍠氶梺璇″枛缂嶅﹤鐣烽崼鏇炵厸濞达綁鏀遍~鏇熺節濞堝灝鏋涢柨鏇樺妼閳诲秹鏁愭径濠勵唵闂佺粯枪椤曆囨倶閹惰姤鐓i煫鍥风到娴滅偛霉濠婂啰鍩f慨濠勭帛閹峰懘鎸婃径濠冨劒闂備線娼荤紞鍥⒔閸曨剛鈹嶅┑鐘叉搐閻愬﹥銇勯幒鍡椾壕缂備胶濮甸悡锟犲蓟閺囷紕鐤€闁哄洨鍊☉銏$厸闁逞屽墯缁傛帞鈧綆鍋勯埀顒傛暬閺屻劌鈹戦崱娆忓毈缂備降鍔嬬划娆撳蓟濞戞瑧绡€闁告洦鍋傚Σ鎰攽椤旂》鏀绘俊鐐舵铻為柛鎰电厑瑜版帒围闁糕剝鐟﹂崚娑㈡倵鐟欏嫭绀冮柨鏇樺灪娣囧﹪骞栨担鑲濄劍銇勯弮鍥棄闁哄濮电换婵嬫偨闂堟刀銉╂煛娴e憡鍟為柟渚垮姂閹粓鎸婃径瀣偓顒勬⒑閸涘﹦鈽夐柨鏇樺劦瀹曪綀绠涘☉娆戝幗闂佺鎻徊楣兯夋径鎰厸閻庯絺鏅濈粣鏃堟煛瀹€鈧崰鏍ь潖閼姐倐鍋撻棃娑橆棌婵″樊鍠氱槐鎺楁倷椤掆偓缁€鍐┿亜椤愩埄妯€濠碉紕鏁诲畷鐔碱敍濮橆剙鏁ゆ俊鐐€栭崝锕€顭块埀顒傜磼椤旇偐鍩f慨濠呮缁辨帒螣閾忓湱鎳嗛梻浣筋嚙缁绘垵鐣濋崨濠佺箚闁汇垻枪缁€瀣亜閺嶃劍鐨戞い鏂匡躬濮婃椽鎮烽幍顔芥喖缂備浇顕х粔鐢电矉閹烘鍤冮柍鍝勫暟閿涙粓姊虹紒妯哄Е闁告挻鐟╁畷婵嬪Χ閸℃劒绨诲銈嗘尵婵挳宕㈢€电硶鍋撳▓鍨灈妞ゎ厾鍏橀獮鍐閵堝棗浜楅柟鑹版彧缂嶅棗危閸洘鐓熼柣鏂挎憸閻﹦绱掔紒妯烘诞鐎殿噮鍋婇、娆戜焊閺嶎煈娼旈梻渚€娼ф蹇曟閺囥垹鍌ㄥù鐘差儐閳锋垿鎮峰▎蹇擃仼闁告柣鍊栭妵鍕即閵娿儱绠归柣鎾卞€濋弻鐔虹磼閵忕姵鐏嶉梺缁樻尰閻燂箓濡甸崟顖氱睄闁稿本绮嶉幉妯衡攽閻愯尙澧涚紒顔芥崌瀵鍩勯崘鈺侇€撻梺鑽ゅ枑濠㈡﹢锝炲澶嬧拺閻犲洠鈧磭浠┑鈽嗗亜閸熸潙鐣风憴鍕╁亝闁告劏鏅涘▓銈咁渻閵堝棗绗傞柣鎺炵畱閳诲秹鏁冮埀顒勫煘閹达附鍋愰柛顭戝亝濮e嫭绻濆▓鍨珮闁告瑥鍟撮悰顔跨疀濞戞ḿ顦ㄥ銈嗘閸嬫劙藝閵娿儺娓婚柕鍫濇噽缁犱即鏌涢悢鍝勵暭闁靛洦鐟╅獮搴ㄦ嚍閵夈垺瀚藉┑鐐存尰閸╁啴宕戦幘缁樼厓鐟滄粓宕滃杈╃煓闁规崘顕ч悡姗€鏌熼悜姗嗘畷闁绘挻娲熼弻锟犲磼濠靛洨銆婇柤鍙夌墵濮婃椽鎮烽幍顔炬殯闂佹悶鍔岀紞濠囧春閻愬搫绠i柣姗嗗亜娴滈箖鏌ㄥ┑鍡欏嚬缂併劏宕电槐鎺楀箛椤撶姭妲堝銈庝簻閸熷瓨淇婇崼鏇炲耿婵☆垳鈷堝Σ顒勬⒒娴g儤鍤€闁哥喕娉曠划鏃堟偡閹殿喗娈惧銈嗗姀閹筹繝寮崼婵嗙獩濡炪倖妫侀~澶屸偓姘虫閳规垿鎮欓懜闈涙锭缂備浇寮撶划娆撶嵁婢舵劖鏅柛鏇ㄥ墮椤忔悂姊虹捄銊ユ灁濠殿喚鏁婚幃鈥斥枎閹惧鍙勯棅顐㈡祫缁茶姤绂嶅┑瀣€堕煫鍥ㄦ礃閺嗩剟鏌$仦鐣屝ユい褌绶氶弻娑㈠箻绾惧顥濆銈庡亝缁诲牊淇婇幖浣规櫆闁兼亽鍎宠ぐ鎸庣節瀵伴攱婢橀埀顒佹崌閹虫宕奸弴鐐靛幋閻庡箍鍎遍幊澶愬绩娴犲鐓熸俊顖氭惈缁狙囨煙閸忕厧濮夌紒杈ㄥ浮閹晠宕归銏$暚闂傚倸娲らˇ鐢稿蓟閵娿儮鏀介柛鈩冪懃椤f椽姊洪柅鐐茶嫰閸樺摜绱掗鐣屾噭濞e洤锕獮鏍ㄦ媴閸濄儱骞愰梻浣呵归張顒傚垝鐏炵瓔鍤曢柟鎯板Г閳锋帒霉閿濆懏鍟為柟顖氱墦閺屾盯鎮㈤崫鍕ㄦ瀰閻庤娲橀崹鍧楃嵁濡偐纾兼俊顖滃帶楠炲牓姊虹涵鍛棈闁规椿浜炲Σ鎰板即閵忊剝娅栭悗骞垮劚濞层劎澹曟總绋跨骇闁割偅纰嶅▍鍛归悩娲摵妞ゃ劊鍎甸幃娆撳级閹寸姷鎳嗛梺鍓х帛閻楁洟婀侀梺鎸庣箓閹冲海鐥閹顫濋銈囩厯濠殿喖锕︾划顖炲箯閸涙潙宸濋梻鍫熺〒缁夎櫣鈧鍠氶弫濠氥€佸Δ鍛妞ゆ巻鍋撳ù鐙€鍙冨娲濞淬儱鐗撳鎻掆槈濮樿京鐒奸梺绋挎湰婢规洟宕戦幘璇茬濠㈣泛锕f竟鏇㈡⒒娴e憡鍟炴繛璇х畵瀹曟粌鈽夐姀鐘插亶闂佹眹鍨归幉锟犲煕閹达附鐓欐い鏍ф鐎氼噣銆呮导瀛樷拺缂佸顑欓崕蹇涙煙閸愭煡鍙勯柟顔藉劤閻o繝骞嶉鑺ョ暦闂備線鈧偛鑻晶鎾煕閳规儳浜炬俊鐐€栫敮鎺楀窗濮橆兗缂氶柟閭﹀幘缁犻箖鏌涘▎蹇fШ闁活厽甯為埀顒侇問閸n噣宕戦崱娑樼闁绘ê妯婇崯鍛亜閺傚灝鎮戞い鎾崇仢閳规垿鎮欏顔兼婵犳鍠楅幐鎶姐€侀弽顓炵疀闁哄瀵ч悗顒勬⒑閹肩偛鍔撮柛鎾村哺閹繝鎮㈤崗鑲╁幍闂備緡鍙忕粻鎴濐嚕妤e啯鐓曢柣鏃堫棑缁犲鏌$仦鍓ф创闁诡喗鐟╁畷褰掝敃閿濆棛妲楀┑鐘愁問閸犳牠鏁冮敂鎯у灊妞ゆ牜鍋涚粻顖炴煕濞戞ḿ鎽犻柛銈呯Ч閺屾洘绔熼娆掝唹闁稿鎸荤换婵嬪炊閵娿垺瀚奸梻鍌氬€搁悧鍐疾濠靛牏鐭撻柛鎾茶兌绾惧ジ鏌eΟ鎸庣彧鐎规洖鐭傞弻锝呪槈閸楃偞鐏曠紓浣哄У缁嬫垿鍩ユ径濞炬瀻闁归偊鍙庢禒褔姊婚崒娆愮グ婵炲娲熷畷鎶芥晝閸屾氨顔嗛梺璺ㄥ櫐閹凤拷...

图 4-1 Android应用程序流程图

如图4-1所示,Android端的应用程序采用多线程技术,其中一个子线程每60S向服务器发送一个获取电量的命令并根据收到的数据进行更新显示,另一个线程根据MJPEG协议来解析出图像数据并更新显示,主线程主要完成用户操控事件的监听,并根据用户的实际操控发送相应的命令给服务器并从服务器获得机器人的最新数据来实时更新。其命令的发送方式采用HTTP协议中的GET方法。

4.1.2 HTTP GET方法简介

GET方法是HTTP协议中定义的多种与服务器进行交互的方法之一,它一般用于获取/查询资源信息。该方法请求的数据会附在URL之后,并且提交的数据最多只能是1024字节,但是本设计中只需要传送命令字即可,因此采用GET方法来传送命令字与获取机器人数据信息。使用该方法来发送命令,服务器端的CGI程序可以在QUERY-STRING环境变量中非常方便的获取到客户端传送给服务器的数据,并且客户端应用程序可以在HttpResponse中获得服务器端返回的数据。

4.1.3 HTTP GET方法实现

Android应用中HTTP GET方法实现部分代码如下:

public String doGet(String url){

//参数设置

...

//创建 HttpClient 的实例

HttpClient httpClient = new DefaultHttpClient(httpParams);

// GET

HttpGet httpGet = new HttpGet(url);

try {

HttpResponse response = httpClient.execute(httpGet);

if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){

// 使用getEntity方法获得返回结果

return EntityUtils.toString(response.getEntity());

}

...

}

4.1.4 Mjpeg协议介绍

Mjpeg即Motion JPEG。MJPEG将服务器端发送来的一张张JPG图像数据发送给客户端,客户端不断的接收图像数据并显示更新即形成了动态的图像。MJPEG在HTTP中mjpg的在http的mime type是"x-mixed-replace"。获取视频图像数据时,客户端首先发一个GET方法,如果服务器接收响应则会设置context type的boundary子属性来指明。然后服务器端开始发送图片数据,在数据头部会有图片类型以及大小信息,其中Content-Length字段指明图像数据的长度,Content-Type字段指明图像的类型其值为image/jpeg。当一帧图像数据发送完毕后,服务器端将会发送边界字符串来表示一帧图像发送结束。

[page]

4.1.5 Mjpeg解析图像数据流程图

Mjpeg解析图像流程图闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佺粯鍔﹂崜娆撳礉閵堝洨纾界€广儱鎷戦煬顒傗偓娈垮枛椤兘骞冮姀銈呯閻忓繑鐗楃€氫粙姊虹拠鏌ュ弰婵炰匠鍕彾濠电姴浼i敐澶樻晩闁告挆鍜冪床闂備浇顕栭崹搴ㄥ礃閿濆棗鐦遍梻鍌欒兌椤㈠﹤鈻嶉弴銏犵闁搞儺鍓欓悘鎶芥煛閸愩劎澧曠紒鈧崘鈹夸簻闊洤娴烽ˇ锕€霉濠婂牏鐣洪柡灞诲妼閳规垿宕卞▎蹇撴瘓缂傚倷闄嶉崝宀勫Χ閹间礁钃熼柣鏂垮悑閸庡矂鏌涘┑鍕姢鐞氾箓姊绘担鍛婃儓闁活厼顦辩槐鐐寸瑹閳ь剟濡存担鍓叉建闁逞屽墴楠炲啫鈻庨幘宕囶啇濡炪倖鎸鹃崳銉ノ涜濮婂宕掑▎鎴犵崲濠电偘鍖犻崗鐐☉閳诲酣骞嬮悙瀛橆唶闂備礁婀遍崕銈夈€冮幇顔剧闁哄秲鍔庣弧鈧梻鍌氱墛娓氭宕曢幇鐗堢厸闁告侗鍠氶崣鈧梺鍝勬湰缁嬫垿鍩ユ径鎰闁绘劕妯婂ḿ缁樹繆閻愵亜鈧垿宕曢弻銉﹀殞濡わ絽鍟悡姗€鏌熺€电ǹ浠滅紒鐘靛█濮婅櫣绮欓崠鈩冩暰濡炪們鍔屽Λ婵嬬嵁閸儱惟闁冲搫鍊搁埀顒€顭烽弻锕€螣娓氼垱楔闂佹寧绋掔粙鎴﹀煘閹达附鍊烽柡澶嬪灩娴滃爼姊洪悷鎵紞闁稿鍊曢悾鐑藉醇閺囥劍鏅㈡繛杈剧秮閺呰尙绱撻幘鍓佺=闁稿本鐟чˇ锔姐亜閹存繃鍤囬柟顔矫埞鎴犫偓锝庡亜閳ь剙鐏氶妵鍕箻鐠虹儤鐎虹紓浣筋嚙濡繈寮婚弴銏犻唶婵犻潧鐗忛濠囨⒑閸涘﹤绗傞柛妤佸▕瀵鈽夐姀鈥充簽婵炶揪缍侀弲鑼姳閻e瞼纾藉〒姘搐閺嬶附銇勯弴鍡楁搐閻撯€愁熆鐠哄ソ锟犳偄閼姐倗鏉搁梺瑙勫劤婢у孩顨欓梻鍌欐祰濡椼劑鎮為敃鍌氱婵炲棗绻掗弳锕傛煏婵炵偓娅撻柡浣革躬閹绗熼婊冨弗闂佽 鍋撻柕濞у懐锛濋梺绋挎湰閼归箖鍩€椤掑嫷妫戠紒顔肩墛缁楃喖鍩€椤掑嫨鈧線寮介鐐殿槹濡炪倖鐗楃粙鎴濃枔閹达附鈷戦柛娑橈攻鐏忣偊鏌i幒鐐电暤闁挎繄鍋ゅ鎾閿涘嫬骞嶉梻浣侯攰椤宕濋敃鍌氬惞婵炲棙鍨瑰Λ顖炴煙椤栧棗鍟崐顖炴⒑闁稓鈹掗柛鏂跨焸閿濈偛饪伴崼婵嗚€垮┑掳鍊愰崑鎾搭殽閻愬樊鍎旀慨濠呮缁瑥鈻庨幆褍澹夐梻浣告贡閹虫挸煤椤撱垻宓侀柛鎰╁妷閸亪鏌涢銈呮瀻婵炲牏鍠栧娲濞戣鲸肖闂佺ǹ瀵掗崳锝呯暦閹达箑绠婚悹鍥ㄧ叀閺佹粌鈹戞幊閸婃捇鎳楅崼鏇炵煑闁糕剝绋掗埛鎴︽煕濠靛棗顏璺哄閹便劌螣缁嬪灝顫囬悗瑙勬礃缁诲倿顢橀崗鐓庣窞閻庯綆鍓欓獮宥夋⒒娴e憡鍟為柛鏃€岣挎禍绋库枎閹炬潙鈧潡鏌涘☉姗堟敾闁告瑥绻愰埞鎴︽偐閹绘帩浼€闁汇埄鍨遍惄顖炲蓟閻旈鏆嬮柣妤€鐗嗗▓妤呮倵鐟欏嫭纾搁柛鏂跨Ф閹广垹鈹戠€n亞锛滃┑鐐村灦閻熝囧汲椤撱垺鈷掗柛灞捐壘閳ь剙鍢查湁闁搞儜鍛闂佹眹鍨绘灙缂佹劖顨婇弻娑㈠焺閸愵亖妲堢紒鐐劤濞硷繝寮婚悢鐓庣畾闁绘鐗滃Λ鍕磽娴e搫校闁绘搫绻濆濠氬即閿涘嫮鏉搁梺鍝勬川閸庢劙鍩€椤掆偓閺堫剛鎹㈠☉姘辩當闁告繂瀚~鍥⒑閸濆嫯瀚扮紒澶屽厴绡撳〒姘e亾闁哄本鐩獮妯尖偓闈涙啞閸f澘顪冮妶鍐ㄧ仾鐎光偓閹间礁鏋侀柟鐗堟緲楠炪垺绻涢崱妯虹仼婵℃彃娲︾换婵嗏枔閸喗鐏嶉梺鎸庢磵閺呯姴鐣烽姀銈呯闁兼祴鏅╁ú绋库攽閻樿宸ラ柟铏姉婢规洘绺介崨濠勫幗闂侀€涘嵆濞佳勬櫠椤斿浜滈幖娣灮閻﹥銇勯鍕殶闁逞屽墯缁嬫帟鎽梺绋匡攻閸旀鍩€椤掍緡鍟忛柛鐘愁殜閹繝鏁撻悩顔瑰亾娴h倽鏃堝川椤撶媭妲规俊鐐€栭崹鍏兼叏閵堝洠鍋撳顑惧仮婵﹦绮幏鍛村川婵犲懐顢呴梺鍝勵儛娴滄繄鎹㈠☉銏犵妞ゆ洖鎳忛ˉ鏍磽娓氬洤鏋涙い顓犲厴閻涱喖螣鐏忔牕浜鹃梻鍫熺⊕閹插憡銇勯弮鈧ú鐔煎蓟閿濆鍋愰柛娆忣槸瀹稿爼姊洪崨濠佺繁闁告ê銈搁幃锟犲磼閻愮补鎷洪柡澶屽仦婢瑰棝藝閿曞倹鐓熸俊銈傚亾闁挎洏鍎崇划姘綇閵娧呯槇闂佹悶鍎洪悘娑滎樄闁哄本绋戦埥澶愬础閻愬浜繝鐢靛仜閹冲矂宕愬┑鍡╂綎闁惧繐婀遍惌娆愮箾閸℃ê鍔ら柛鎿冨墴濮婃椽宕ㄦ繝鍐ㄩ瀺缂備浇顕х€氫即鐛幋锕€顫呴柣姗嗗亝閺傗偓闂備焦鎮堕崕顕€寮插┑瀣剨闁割偁鍎查埛鎴犵磼鐎n偄顕滄繝鈧幍顔剧<閻庯綆鍋勯悘銉╂煃鐠囪尙效闁轰焦鍔欏畷顏呮媴閻熸壆妲i梻鍌欑窔濞佳囨偋閸℃瑦宕查柟鐑橆殔缁€鍡椕归悡搴f憼闁绘挸绻橀弻娑㈩敃閵堝懏鐎鹃梺绋匡攻閸旀牠銆冮妷鈺傚€烽柟缁樺笚濞堣尙绱撴担绋库偓鍦暜閻愬搫鐒垫い鎺戯功閸掍即鏌h箛鏂垮摵鐎殿喗鐓¢、妤呭焵椤掑嫬鐓橀柟杈鹃檮閸婄兘鏌℃径瀣仼濞寸姵鎮傞弻锕傚礃椤旂粯鍠氶梺璇″枛缂嶅﹤鐣烽崼鏇炵厸濞达綁鏀遍~鏇熺節濞堝灝鏋涢柨鏇樺妼閳诲秹鏁愭径濠勵唵闂佺粯枪椤曆囨倶閹惰姤鐓i煫鍥风到娴滅偛霉濠婂啰鍩f慨濠勭帛閹峰懘鎸婃径濠冨劒闂備線娼荤紞鍥⒔閸曨剛鈹嶅┑鐘叉搐閻愬﹥銇勯幒鍡椾壕缂備胶濮甸悡锟犲蓟閺囷紕鐤€闁哄洨鍊☉銏$厸闁逞屽墯缁傛帞鈧綆鍋勯埀顒傛暬閺屻劌鈹戦崱娆忓毈缂備降鍔嬬划娆撳蓟濞戞瑧绡€闁告洦鍋傚Σ鎰攽椤旂》鏀绘俊鐐舵铻為柛鎰电厑瑜版帒围闁糕剝鐟﹂崚娑㈡倵鐟欏嫭绀冮柨鏇樺灪娣囧﹪骞栨担鑲濄劍銇勯弮鍥棄闁哄濮电换婵嬫偨闂堟刀銉╂煛娴e憡鍟為柟渚垮姂閹粓鎸婃径瀣偓顒勬⒑閸涘﹦鈽夐柨鏇樺劦瀹曪綀绠涘☉娆戝幗闂佺鎻徊楣兯夋径鎰厸閻庯絺鏅濈粣鏃堟煛瀹€鈧崰鏍ь潖閼姐倐鍋撻棃娑橆棌婵″樊鍠氱槐鎺楁倷椤掆偓缁€鍐┿亜椤愩埄妯€濠碉紕鏁诲畷鐔碱敍濮橆剙鏁ゆ俊鐐€栭崝锕€顭块埀顒傜磼椤旇偐鍩f慨濠呮缁辨帒螣閾忓湱鎳嗛梻浣筋嚙缁绘垵鐣濋崨濠佺箚闁汇垻枪缁€瀣亜閺嶃劍鐨戞い鏂匡躬濮婃椽鎮烽幍顔芥喖缂備浇顕х粔鐢电矉閹烘鍤冮柍鍝勫暟閿涙粓姊虹紒妯哄Е闁告挻鐟╁畷婵嬪Χ閸℃劒绨诲銈嗘尵婵挳宕㈢€电硶鍋撳▓鍨灈妞ゎ厾鍏橀獮鍐閵堝棗浜楅柟鑹版彧缂嶅棗危閸洘鐓熼柣鏂挎憸閻﹦绱掔紒妯烘诞鐎殿噮鍋婇、娆戜焊閺嶎煈娼旈梻渚€娼ф蹇曟閺囥垹鍌ㄥù鐘差儐閳锋垿鎮峰▎蹇擃仼闁告柣鍊栭妵鍕即閵娿儱绠归柣鎾卞€濋弻鐔虹磼閵忕姵鐏嶉梺缁樻尰閻燂箓濡甸崟顖氱睄闁稿本绮嶉幉妯衡攽閻愯尙澧涚紒顔芥崌瀵鍩勯崘鈺侇€撻梺鑽ゅ枑濠㈡﹢锝炲澶嬧拺閻犲洠鈧磭浠┑鈽嗗亜閸熸潙鐣风憴鍕╁亝闁告劏鏅涘▓銈咁渻閵堝棗绗傞柣鎺炵畱閳诲秹鏁冮埀顒勫煘閹达附鍋愰柛顭戝亝濮e嫭绻濆▓鍨珮闁告瑥鍟撮悰顔跨疀濞戞ḿ顦ㄥ銈嗘閸嬫劙藝閵娿儺娓婚柕鍫濇噽缁犱即鏌涢悢鍝勵暭闁靛洦鐟╅獮搴ㄦ嚍閵夈垺瀚藉┑鐐存尰閸╁啴宕戦幘缁樼厓鐟滄粓宕滃杈╃煓闁规崘顕ч悡姗€鏌熼悜姗嗘畷闁绘挻娲熼弻锟犲磼濠靛洨銆婇柤鍙夌墵濮婃椽鎮烽幍顔炬殯闂佹悶鍔岀紞濠囧春閻愬搫绠i柣姗嗗亜娴滈箖鏌ㄥ┑鍡欏嚬缂併劏宕电槐鎺楀箛椤撶姭妲堝銈庝簻閸熷瓨淇婇崼鏇炲耿婵☆垳鈷堝Σ顒勬⒒娴g儤鍤€闁哥喕娉曠划鏃堟偡閹殿喗娈惧銈嗗姀閹筹繝寮崼婵嗙獩濡炪倖妫侀~澶屸偓姘虫閳规垿鎮欓懜闈涙锭缂備浇寮撶划娆撶嵁婢舵劖鏅柛鏇ㄥ墮椤忔悂姊虹捄銊ユ灁濠殿喚鏁婚幃鈥斥枎閹惧鍙勯棅顐㈡祫缁茶姤绂嶅┑瀣€堕煫鍥ㄦ礃閺嗩剟鏌$仦鐣屝ユい褌绶氶弻娑㈠箻绾惧顥濆銈庡亝缁诲牊淇婇幖浣规櫆闁兼亽鍎宠ぐ鎸庣節瀵伴攱婢橀埀顒佹崌閹虫宕奸弴鐐靛幋閻庡箍鍎遍幊澶愬绩娴犲鐓熸俊顖氭惈缁狙囨煙閸忕厧濮夌紒杈ㄥ浮閹晠宕归銏$暚闂傚倸娲らˇ鐢稿蓟閵娿儮鏀介柛鈩冪懃椤f椽姊洪柅鐐茶嫰閸樺摜绱掗鐣屾噭濞e洤锕獮鏍ㄦ媴閸濄儱骞愰梻浣呵归張顒傚垝鐏炵瓔鍤曢柟鎯板Г閳锋帒霉閿濆懏鍟為柟顖氱墦閺屾盯鎮㈤崫鍕ㄦ瀰閻庤娲橀崹鍧楃嵁濡偐纾兼俊顖滃帶楠炲牓姊虹涵鍛棈闁规椿浜炲Σ鎰板即閵忊剝娅栭悗骞垮劚濞层劎澹曟總绋跨骇闁割偅纰嶅▍鍛归悩娲摵妞ゃ劊鍎甸幃娆撳级閹寸姷鎳嗛梺鍓х帛閻楁洟婀侀梺鎸庣箓閹冲海鐥閹顫濋銈囩厯濠殿喖锕︾划顖炲箯閸涙潙宸濋梻鍫熺〒缁夎櫣鈧鍠氶弫濠氥€佸Δ鍛妞ゆ巻鍋撳ù鐙€鍙冨娲濞淬儱鐗撳鎻掆槈濮樿京鐒奸梺绋挎湰婢规洟宕戦幘璇茬濠㈣泛锕f竟鏇㈡⒒娴e憡鍟炴繛璇х畵瀹曟粌鈽夐姀鐘插亶闂佹眹鍨归幉锟犲煕閹达附鐓欐い鏍ф鐎氼噣銆呮导瀛樷拺缂佸顑欓崕蹇涙煙閸愭煡鍙勯柟顔藉劤閻o繝骞嶉鑺ョ暦闂備線鈧偛鑻晶鎾煕閳规儳浜炬俊鐐€栫敮鎺楀窗濮橆兗缂氶柟閭﹀幘缁犻箖鏌涘▎蹇fШ闁活厽甯為埀顒侇問閸n噣宕戦崱娑樼闁绘ê妯婇崯鍛亜閺傚灝鎮戞い鎾崇仢閳规垿鎮欏顔兼婵犳鍠楅幐鎶姐€侀弽顓炵疀闁哄瀵ч悗顒勬⒑閹肩偛鍔撮柛鎾村哺閹繝鎮㈤崗鑲╁幍闂備緡鍙忕粻鎴濐嚕妤e啯鐓曢柣鏃堫棑缁犲鏌$仦鍓ф创闁诡喗鐟╁畷褰掝敃閿濆棛妲楀┑鐘愁問閸犳牠鏁冮敂鎯у灊妞ゆ牜鍋涚粻顖炴煕濞戞ḿ鎽犻柛銈呯Ч閺屾洘绔熼娆掝唹闁稿鎸荤换婵嬪炊閵娿垺瀚奸梻鍌氬€搁悧鍐疾濠靛牏鐭撻柛鎾茶兌绾惧ジ鏌eΟ鎸庣彧鐎规洖鐭傞弻锝呪槈閸楃偞鐏曠紓浣哄У缁嬫垿鍩ユ径濞炬瀻闁归偊鍙庢禒褔姊婚崒娆愮グ婵炲娲熷畷鎶芥晝閸屾氨顔嗛梺璺ㄥ櫐閹凤拷...

图 4-2 Mjpeg解析图像流程图

4.1.6 Mjpeg解析图像数据代码

在Android客户端需要根据Mjpeg协议来编写代码实现图像数据的解析,其中部分代码如下:

Socket server = new Socket(url.getHost(), url.getPort());

OutputStream os = server.getOutputStream();

InputStream is = server.getInputStream();

StringBuffer request = new StringBuffer();

request.append("GET " + url.getFile() + " HTTP/1.0rn");

request.append("Host: " + url.getHost() + "rn");

request.append("rn");

os.write(request.toString().getBytes(), 0, request.length());//请求返回File

StreamSplit localStreamSplit = new StreamSplit(new DataInputStream(new BufferedInputStream(is)));

Hashtable localHashtable = localStreamSplit.readHeaders();//获得文件的信息头

String str3 = (String)localHashtable.get("content-type");//获得content-type以后的数据

int n = str3.indexOf("boundary=");//定位边界字符串

Object localObject2 = "--";

if (n != -1){

localObject2 = str3.substring(n + 9);//指定到boundary子属性

str3 = str3.substring(0, n);

if (!((String)localObject2).startsWith("--"))

localObject2 = "--" + (String)localObject2;}

if (str3.startsWith("multipart/x-mixed-replace")){//判断MIME类型

localStreamSplit.skipToBoundary((String)localObject2);//定位到图像数据部分

}do{

if (localObject2 != null){

localHashtable = localStreamSplit.readHeaders();

if (localStreamSplit.isAtStreamEnd())

break;

str3 = (String)localHashtable.get("content-type");

if (str3 == null)

throw new Exception("No part content type");

}

if (str3.startsWith("multipart/x-mixed-replace")){

n = str3.indexOf("boundary=");

localObject2 = str3.substring(n + 9);//获得

localStreamSplit.skipToBoundary((String)localObject2);

}else{

byte[] localObject3 = localStreamSplit.readToBoundary((String)localObject2);

if (localObject3.length == 0)

break;

Message message = Message.obtain();

message.arg1 = 0;

message.obj = BitmapFactory.decodeByteArray(localObject3, 0, localObject3.length);

messageHandler.sendMessage(message);//显示消息

}

fps++;

try{

Thread.sleep(10L);

}catch (InterruptedException localInterruptedException){

}

[page]

4.2 Web客户端设计


4.2.1 Web客户端程序流程图

如图4-3所示,WEB客户端采用AJAX技术,其功能模块大体上分为3个部分:第一部分主要是监测用户的操作并采用HTTP GET方法来发送控制命令,最后将服务器返回的信息更新显示。第二部分主要为120S定时发送获取电源电量值得命令,并将获得的数据更新显示。第三部分获取图像数据并显示。

 WEB客户端流程图闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佺粯鍔﹂崜娆撳礉閵堝洨纾界€广儱鎷戦煬顒傗偓娈垮枛椤兘骞冮姀銈呯閻忓繑鐗楃€氫粙姊虹拠鏌ュ弰婵炰匠鍕彾濠电姴浼i敐澶樻晩闁告挆鍜冪床闂備浇顕栭崹搴ㄥ礃閿濆棗鐦遍梻鍌欒兌椤㈠﹤鈻嶉弴銏犵闁搞儺鍓欓悘鎶芥煛閸愩劎澧曠紒鈧崘鈹夸簻闊洤娴烽ˇ锕€霉濠婂牏鐣洪柡灞诲妼閳规垿宕卞▎蹇撴瘓缂傚倷闄嶉崝宀勫Χ閹间礁钃熼柣鏂垮悑閸庡矂鏌涘┑鍕姢鐞氾箓姊绘担鍛婃儓闁活厼顦辩槐鐐寸瑹閳ь剟濡存担鍓叉建闁逞屽墴楠炲啫鈻庨幘宕囶啇濡炪倖鎸鹃崳銉ノ涜濮婂宕掑▎鎴犵崲濠电偘鍖犻崗鐐☉閳诲酣骞嬮悙瀛橆唶闂備礁婀遍崕銈夈€冮幇顔剧闁哄秲鍔庣弧鈧梻鍌氱墛娓氭宕曢幇鐗堢厸闁告侗鍠氶崣鈧梺鍝勬湰缁嬫垿鍩ユ径鎰闁绘劕妯婂ḿ缁樹繆閻愵亜鈧垿宕曢弻銉﹀殞濡わ絽鍟悡姗€鏌熺€电ǹ浠滅紒鐘靛█濮婅櫣绮欓崠鈩冩暰濡炪們鍔屽Λ婵嬬嵁閸儱惟闁冲搫鍊搁埀顒€顭烽弻锕€螣娓氼垱楔闂佹寧绋掔粙鎴﹀煘閹达附鍊烽柡澶嬪灩娴滃爼姊洪悷鎵紞闁稿鍊曢悾鐑藉醇閺囥劍鏅㈡繛杈剧秮閺呰尙绱撻幘鍓佺=闁稿本鐟чˇ锔姐亜閹存繃鍤囬柟顔矫埞鎴犫偓锝庡亜閳ь剙鐏氶妵鍕箻鐠虹儤鐎虹紓浣筋嚙濡繈寮婚弴銏犻唶婵犻潧鐗忛濠囨⒑閸涘﹤绗傞柛妤佸▕瀵鈽夐姀鈥充簽婵炶揪缍侀弲鑼姳閻e瞼纾藉〒姘搐閺嬶附銇勯弴鍡楁搐閻撯€愁熆鐠哄ソ锟犳偄閼姐倗鏉搁梺瑙勫劤婢у孩顨欓梻鍌欐祰濡椼劑鎮為敃鍌氱婵炲棗绻掗弳锕傛煏婵炵偓娅撻柡浣革躬閹绗熼婊冨弗闂佽 鍋撻柕濞у懐锛濋梺绋挎湰閼归箖鍩€椤掑嫷妫戠紒顔肩墛缁楃喖鍩€椤掑嫨鈧線寮介鐐殿槹濡炪倖鐗楃粙鎴濃枔閹达附鈷戦柛娑橈攻鐏忣偊鏌i幒鐐电暤闁挎繄鍋ゅ鎾閿涘嫬骞嶉梻浣侯攰椤宕濋敃鍌氬惞婵炲棙鍨瑰Λ顖炴煙椤栧棗鍟崐顖炴⒑闁稓鈹掗柛鏂跨焸閿濈偛饪伴崼婵嗚€垮┑掳鍊愰崑鎾搭殽閻愬樊鍎旀慨濠呮缁瑥鈻庨幆褍澹夐梻浣告贡閹虫挸煤椤撱垻宓侀柛鎰╁妷閸亪鏌涢銈呮瀻婵炲牏鍠栧娲濞戣鲸肖闂佺ǹ瀵掗崳锝呯暦閹达箑绠婚悹鍥ㄧ叀閺佹粌鈹戞幊閸婃捇鎳楅崼鏇炵煑闁糕剝绋掗埛鎴︽煕濠靛棗顏璺哄閹便劌螣缁嬪灝顫囬悗瑙勬礃缁诲倿顢橀崗鐓庣窞閻庯綆鍓欓獮宥夋⒒娴e憡鍟為柛鏃€岣挎禍绋库枎閹炬潙鈧潡鏌涘☉姗堟敾闁告瑥绻愰埞鎴︽偐閹绘帩浼€闁汇埄鍨遍惄顖炲蓟閻旈鏆嬮柣妤€鐗嗗▓妤呮倵鐟欏嫭纾搁柛鏂跨Ф閹广垹鈹戠€n亞锛滃┑鐐村灦閻熝囧汲椤撱垺鈷掗柛灞捐壘閳ь剙鍢查湁闁搞儜鍛闂佹眹鍨绘灙缂佹劖顨婇弻娑㈠焺閸愵亖妲堢紒鐐劤濞硷繝寮婚悢鐓庣畾闁绘鐗滃Λ鍕磽娴e搫校闁绘搫绻濆濠氬即閿涘嫮鏉搁梺鍝勬川閸庢劙鍩€椤掆偓閺堫剛鎹㈠☉姘辩當闁告繂瀚~鍥⒑閸濆嫯瀚扮紒澶屽厴绡撳〒姘e亾闁哄本鐩獮妯尖偓闈涙啞閸f澘顪冮妶鍐ㄧ仾鐎光偓閹间礁鏋侀柟鐗堟緲楠炪垺绻涢崱妯虹仼婵℃彃娲︾换婵嗏枔閸喗鐏嶉梺鎸庢磵閺呯姴鐣烽姀銈呯闁兼祴鏅╁ú绋库攽閻樿宸ラ柟铏姉婢规洘绺介崨濠勫幗闂侀€涘嵆濞佳勬櫠椤斿浜滈幖娣灮閻﹥銇勯鍕殶闁逞屽墯缁嬫帟鎽梺绋匡攻閸旀鍩€椤掍緡鍟忛柛鐘愁殜閹繝鏁撻悩顔瑰亾娴h倽鏃堝川椤撶媭妲规俊鐐€栭崹鍏兼叏閵堝洠鍋撳顑惧仮婵﹦绮幏鍛村川婵犲懐顢呴梺鍝勵儛娴滄繄鎹㈠☉銏犵妞ゆ洖鎳忛ˉ鏍磽娓氬洤鏋涙い顓犲厴閻涱喖螣鐏忔牕浜鹃梻鍫熺⊕閹插憡銇勯弮鈧ú鐔煎蓟閿濆鍋愰柛娆忣槸瀹稿爼姊洪崨濠佺繁闁告ê銈搁幃锟犲磼閻愮补鎷洪柡澶屽仦婢瑰棝藝閿曞倹鐓熸俊銈傚亾闁挎洏鍎崇划姘綇閵娧呯槇闂佹悶鍎洪悘娑滎樄闁哄本绋戦埥澶愬础閻愬浜繝鐢靛仜閹冲矂宕愬┑鍡╂綎闁惧繐婀遍惌娆愮箾閸℃ê鍔ら柛鎿冨墴濮婃椽宕ㄦ繝鍐ㄩ瀺缂備浇顕х€氫即鐛幋锕€顫呴柣姗嗗亝閺傗偓闂備焦鎮堕崕顕€寮插┑瀣剨闁割偁鍎查埛鎴犵磼鐎n偄顕滄繝鈧幍顔剧<閻庯綆鍋勯悘銉╂煃鐠囪尙效闁轰焦鍔欏畷顏呮媴閻熸壆妲i梻鍌欑窔濞佳囨偋閸℃瑦宕查柟鐑橆殔缁€鍡椕归悡搴f憼闁绘挸绻橀弻娑㈩敃閵堝懏鐎鹃梺绋匡攻閸旀牠銆冮妷鈺傚€烽柟缁樺笚濞堣尙绱撴担绋库偓鍦暜閻愬搫鐒垫い鎺戯功閸掍即鏌h箛鏂垮摵鐎殿喗鐓¢、妤呭焵椤掑嫬鐓橀柟杈鹃檮閸婄兘鏌℃径瀣仼濞寸姵鎮傞弻锕傚礃椤旂粯鍠氶梺璇″枛缂嶅﹤鐣烽崼鏇炵厸濞达綁鏀遍~鏇熺節濞堝灝鏋涢柨鏇樺妼閳诲秹鏁愭径濠勵唵闂佺粯枪椤曆囨倶閹惰姤鐓i煫鍥风到娴滅偛霉濠婂啰鍩f慨濠勭帛閹峰懘鎸婃径濠冨劒闂備線娼荤紞鍥⒔閸曨剛鈹嶅┑鐘叉搐閻愬﹥銇勯幒鍡椾壕缂備胶濮甸悡锟犲蓟閺囷紕鐤€闁哄洨鍊☉銏$厸闁逞屽墯缁傛帞鈧綆鍋勯埀顒傛暬閺屻劌鈹戦崱娆忓毈缂備降鍔嬬划娆撳蓟濞戞瑧绡€闁告洦鍋傚Σ鎰攽椤旂》鏀绘俊鐐舵铻為柛鎰电厑瑜版帒围闁糕剝鐟﹂崚娑㈡倵鐟欏嫭绀冮柨鏇樺灪娣囧﹪骞栨担鑲濄劍銇勯弮鍥棄闁哄濮电换婵嬫偨闂堟刀銉╂煛娴e憡鍟為柟渚垮姂閹粓鎸婃径瀣偓顒勬⒑閸涘﹦鈽夐柨鏇樺劦瀹曪綀绠涘☉娆戝幗闂佺鎻徊楣兯夋径鎰厸閻庯絺鏅濈粣鏃堟煛瀹€鈧崰鏍ь潖閼姐倐鍋撻棃娑橆棌婵″樊鍠氱槐鎺楁倷椤掆偓缁€鍐┿亜椤愩埄妯€濠碉紕鏁诲畷鐔碱敍濮橆剙鏁ゆ俊鐐€栭崝锕€顭块埀顒傜磼椤旇偐鍩f慨濠呮缁辨帒螣閾忓湱鎳嗛梻浣筋嚙缁绘垵鐣濋崨濠佺箚闁汇垻枪缁€瀣亜閺嶃劍鐨戞い鏂匡躬濮婃椽鎮烽幍顔芥喖缂備浇顕х粔鐢电矉閹烘鍤冮柍鍝勫暟閿涙粓姊虹紒妯哄Е闁告挻鐟╁畷婵嬪Χ閸℃劒绨诲銈嗘尵婵挳宕㈢€电硶鍋撳▓鍨灈妞ゎ厾鍏橀獮鍐閵堝棗浜楅柟鑹版彧缂嶅棗危閸洘鐓熼柣鏂挎憸閻﹦绱掔紒妯烘诞鐎殿噮鍋婇、娆戜焊閺嶎煈娼旈梻渚€娼ф蹇曟閺囥垹鍌ㄥù鐘差儐閳锋垿鎮峰▎蹇擃仼闁告柣鍊栭妵鍕即閵娿儱绠归柣鎾卞€濋弻鐔虹磼閵忕姵鐏嶉梺缁樻尰閻燂箓濡甸崟顖氱睄闁稿本绮嶉幉妯衡攽閻愯尙澧涚紒顔芥崌瀵鍩勯崘鈺侇€撻梺鑽ゅ枑濠㈡﹢锝炲澶嬧拺閻犲洠鈧磭浠┑鈽嗗亜閸熸潙鐣风憴鍕╁亝闁告劏鏅涘▓銈咁渻閵堝棗绗傞柣鎺炵畱閳诲秹鏁冮埀顒勫煘閹达附鍋愰柛顭戝亝濮e嫭绻濆▓鍨珮闁告瑥鍟撮悰顔跨疀濞戞ḿ顦ㄥ銈嗘閸嬫劙藝閵娿儺娓婚柕鍫濇噽缁犱即鏌涢悢鍝勵暭闁靛洦鐟╅獮搴ㄦ嚍閵夈垺瀚藉┑鐐存尰閸╁啴宕戦幘缁樼厓鐟滄粓宕滃杈╃煓闁规崘顕ч悡姗€鏌熼悜姗嗘畷闁绘挻娲熼弻锟犲磼濠靛洨銆婇柤鍙夌墵濮婃椽鎮烽幍顔炬殯闂佹悶鍔岀紞濠囧春閻愬搫绠i柣姗嗗亜娴滈箖鏌ㄥ┑鍡欏嚬缂併劏宕电槐鎺楀箛椤撶姭妲堝銈庝簻閸熷瓨淇婇崼鏇炲耿婵☆垳鈷堝Σ顒勬⒒娴g儤鍤€闁哥喕娉曠划鏃堟偡閹殿喗娈惧銈嗗姀閹筹繝寮崼婵嗙獩濡炪倖妫侀~澶屸偓姘虫閳规垿鎮欓懜闈涙锭缂備浇寮撶划娆撶嵁婢舵劖鏅柛鏇ㄥ墮椤忔悂姊虹捄銊ユ灁濠殿喚鏁婚幃鈥斥枎閹惧鍙勯棅顐㈡祫缁茶姤绂嶅┑瀣€堕煫鍥ㄦ礃閺嗩剟鏌$仦鐣屝ユい褌绶氶弻娑㈠箻绾惧顥濆銈庡亝缁诲牊淇婇幖浣规櫆闁兼亽鍎宠ぐ鎸庣節瀵伴攱婢橀埀顒佹崌閹虫宕奸弴鐐靛幋閻庡箍鍎遍幊澶愬绩娴犲鐓熸俊顖氭惈缁狙囨煙閸忕厧濮夌紒杈ㄥ浮閹晠宕归銏$暚闂傚倸娲らˇ鐢稿蓟閵娿儮鏀介柛鈩冪懃椤f椽姊洪柅鐐茶嫰閸樺摜绱掗鐣屾噭濞e洤锕獮鏍ㄦ媴閸濄儱骞愰梻浣呵归張顒傚垝鐏炵瓔鍤曢柟鎯板Г閳锋帒霉閿濆懏鍟為柟顖氱墦閺屾盯鎮㈤崫鍕ㄦ瀰閻庤娲橀崹鍧楃嵁濡偐纾兼俊顖滃帶楠炲牓姊虹涵鍛棈闁规椿浜炲Σ鎰板即閵忊剝娅栭悗骞垮劚濞层劎澹曟總绋跨骇闁割偅纰嶅▍鍛归悩娲摵妞ゃ劊鍎甸幃娆撳级閹寸姷鎳嗛梺鍓х帛閻楁洟婀侀梺鎸庣箓閹冲海鐥閹顫濋銈囩厯濠殿喖锕︾划顖炲箯閸涙潙宸濋梻鍫熺〒缁夎櫣鈧鍠氶弫濠氥€佸Δ鍛妞ゆ巻鍋撳ù鐙€鍙冨娲濞淬儱鐗撳鎻掆槈濮樿京鐒奸梺绋挎湰婢规洟宕戦幘璇茬濠㈣泛锕f竟鏇㈡⒒娴e憡鍟炴繛璇х畵瀹曟粌鈽夐姀鐘插亶闂佹眹鍨归幉锟犲煕閹达附鐓欐い鏍ф鐎氼噣銆呮导瀛樷拺缂佸顑欓崕蹇涙煙閸愭煡鍙勯柟顔藉劤閻o繝骞嶉鑺ョ暦闂備線鈧偛鑻晶鎾煕閳规儳浜炬俊鐐€栫敮鎺楀窗濮橆兗缂氶柟閭﹀幘缁犻箖鏌涘▎蹇fШ闁活厽甯為埀顒侇問閸n噣宕戦崱娑樼闁绘ê妯婇崯鍛亜閺傚灝鎮戞い鎾崇仢閳规垿鎮欏顔兼婵犳鍠楅幐鎶姐€侀弽顓炵疀闁哄瀵ч悗顒勬⒑閹肩偛鍔撮柛鎾村哺閹繝鎮㈤崗鑲╁幍闂備緡鍙忕粻鎴濐嚕妤e啯鐓曢柣鏃堫棑缁犲鏌$仦鍓ф创闁诡喗鐟╁畷褰掝敃閿濆棛妲楀┑鐘愁問閸犳牠鏁冮敂鎯у灊妞ゆ牜鍋涚粻顖炴煕濞戞ḿ鎽犻柛銈呯Ч閺屾洘绔熼娆掝唹闁稿鎸荤换婵嬪炊閵娿垺瀚奸梻鍌氬€搁悧鍐疾濠靛牏鐭撻柛鎾茶兌绾惧ジ鏌eΟ鎸庣彧鐎规洖鐭傞弻锝呪槈閸楃偞鐏曠紓浣哄У缁嬫垿鍩ユ径濞炬瀻闁归偊鍙庢禒褔姊婚崒娆愮グ婵炲娲熷畷鎶芥晝閸屾氨顔嗛梺璺ㄥ櫐閹凤拷...

图 4-3 WEB客户端流程图

4.2.2 AJAX技术简介

AJAX(Asynchronous Javascript + XML)即异步JavaScript和XML技术的简称,它可以实现网页异步更新。采用该方法来设计WEB应用,可以只对网页的部分内容进行更新,而不需要重新对整个页面进行加载。其工作原理如下图所示:

AJAX工作原理闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佺粯鍔﹂崜娆撳礉閵堝洨纾界€广儱鎷戦煬顒傗偓娈垮枛椤兘骞冮姀銈呯閻忓繑鐗楃€氫粙姊虹拠鏌ュ弰婵炰匠鍕彾濠电姴浼i敐澶樻晩闁告挆鍜冪床闂備浇顕栭崹搴ㄥ礃閿濆棗鐦遍梻鍌欒兌椤㈠﹤鈻嶉弴銏犵闁搞儺鍓欓悘鎶芥煛閸愩劎澧曠紒鈧崘鈹夸簻闊洤娴烽ˇ锕€霉濠婂牏鐣洪柡灞诲妼閳规垿宕卞▎蹇撴瘓缂傚倷闄嶉崝宀勫Χ閹间礁钃熼柣鏂垮悑閸庡矂鏌涘┑鍕姢鐞氾箓姊绘担鍛婃儓闁活厼顦辩槐鐐寸瑹閳ь剟濡存担鍓叉建闁逞屽墴楠炲啫鈻庨幘宕囶啇濡炪倖鎸鹃崳銉ノ涜濮婂宕掑▎鎴犵崲濠电偘鍖犻崗鐐☉閳诲酣骞嬮悙瀛橆唶闂備礁婀遍崕銈夈€冮幇顔剧闁哄秲鍔庣弧鈧梻鍌氱墛娓氭宕曢幇鐗堢厸闁告侗鍠氶崣鈧梺鍝勬湰缁嬫垿鍩ユ径鎰闁绘劕妯婂ḿ缁樹繆閻愵亜鈧垿宕曢弻銉﹀殞濡わ絽鍟悡姗€鏌熺€电ǹ浠滅紒鐘靛█濮婅櫣绮欓崠鈩冩暰濡炪們鍔屽Λ婵嬬嵁閸儱惟闁冲搫鍊搁埀顒€顭烽弻锕€螣娓氼垱楔闂佹寧绋掔粙鎴﹀煘閹达附鍊烽柡澶嬪灩娴滃爼姊洪悷鎵紞闁稿鍊曢悾鐑藉醇閺囥劍鏅㈡繛杈剧秮閺呰尙绱撻幘鍓佺=闁稿本鐟чˇ锔姐亜閹存繃鍤囬柟顔矫埞鎴犫偓锝庡亜閳ь剙鐏氶妵鍕箻鐠虹儤鐎虹紓浣筋嚙濡繈寮婚弴銏犻唶婵犻潧鐗忛濠囨⒑閸涘﹤绗傞柛妤佸▕瀵鈽夐姀鈥充簽婵炶揪缍侀弲鑼姳閻e瞼纾藉〒姘搐閺嬶附銇勯弴鍡楁搐閻撯€愁熆鐠哄ソ锟犳偄閼姐倗鏉搁梺瑙勫劤婢у孩顨欓梻鍌欐祰濡椼劑鎮為敃鍌氱婵炲棗绻掗弳锕傛煏婵炵偓娅撻柡浣革躬閹绗熼婊冨弗闂佽 鍋撻柕濞у懐锛濋梺绋挎湰閼归箖鍩€椤掑嫷妫戠紒顔肩墛缁楃喖鍩€椤掑嫨鈧線寮介鐐殿槹濡炪倖鐗楃粙鎴濃枔閹达附鈷戦柛娑橈攻鐏忣偊鏌i幒鐐电暤闁挎繄鍋ゅ鎾閿涘嫬骞嶉梻浣侯攰椤宕濋敃鍌氬惞婵炲棙鍨瑰Λ顖炴煙椤栧棗鍟崐顖炴⒑闁稓鈹掗柛鏂跨焸閿濈偛饪伴崼婵嗚€垮┑掳鍊愰崑鎾搭殽閻愬樊鍎旀慨濠呮缁瑥鈻庨幆褍澹夐梻浣告贡閹虫挸煤椤撱垻宓侀柛鎰╁妷閸亪鏌涢銈呮瀻婵炲牏鍠栧娲濞戣鲸肖闂佺ǹ瀵掗崳锝呯暦閹达箑绠婚悹鍥ㄧ叀閺佹粌鈹戞幊閸婃捇鎳楅崼鏇炵煑闁糕剝绋掗埛鎴︽煕濠靛棗顏璺哄閹便劌螣缁嬪灝顫囬悗瑙勬礃缁诲倿顢橀崗鐓庣窞閻庯綆鍓欓獮宥夋⒒娴e憡鍟為柛鏃€岣挎禍绋库枎閹炬潙鈧潡鏌涘☉姗堟敾闁告瑥绻愰埞鎴︽偐閹绘帩浼€闁汇埄鍨遍惄顖炲蓟閻旈鏆嬮柣妤€鐗嗗▓妤呮倵鐟欏嫭纾搁柛鏂跨Ф閹广垹鈹戠€n亞锛滃┑鐐村灦閻熝囧汲椤撱垺鈷掗柛灞捐壘閳ь剙鍢查湁闁搞儜鍛闂佹眹鍨绘灙缂佹劖顨婇弻娑㈠焺閸愵亖妲堢紒鐐劤濞硷繝寮婚悢鐓庣畾闁绘鐗滃Λ鍕磽娴e搫校闁绘搫绻濆濠氬即閿涘嫮鏉搁梺鍝勬川閸庢劙鍩€椤掆偓閺堫剛鎹㈠☉姘辩當闁告繂瀚~鍥⒑閸濆嫯瀚扮紒澶屽厴绡撳〒姘e亾闁哄本鐩獮妯尖偓闈涙啞閸f澘顪冮妶鍐ㄧ仾鐎光偓閹间礁鏋侀柟鐗堟緲楠炪垺绻涢崱妯虹仼婵℃彃娲︾换婵嗏枔閸喗鐏嶉梺鎸庢磵閺呯姴鐣烽姀銈呯闁兼祴鏅╁ú绋库攽閻樿宸ラ柟铏姉婢规洘绺介崨濠勫幗闂侀€涘嵆濞佳勬櫠椤斿浜滈幖娣灮閻﹥銇勯鍕殶闁逞屽墯缁嬫帟鎽梺绋匡攻閸旀鍩€椤掍緡鍟忛柛鐘愁殜閹繝鏁撻悩顔瑰亾娴h倽鏃堝川椤撶媭妲规俊鐐€栭崹鍏兼叏閵堝洠鍋撳顑惧仮婵﹦绮幏鍛村川婵犲懐顢呴梺鍝勵儛娴滄繄鎹㈠☉銏犵妞ゆ洖鎳忛ˉ鏍磽娓氬洤鏋涙い顓犲厴閻涱喖螣鐏忔牕浜鹃梻鍫熺⊕閹插憡銇勯弮鈧ú鐔煎蓟閿濆鍋愰柛娆忣槸瀹稿爼姊洪崨濠佺繁闁告ê銈搁幃锟犲磼閻愮补鎷洪柡澶屽仦婢瑰棝藝閿曞倹鐓熸俊銈傚亾闁挎洏鍎崇划姘綇閵娧呯槇闂佹悶鍎洪悘娑滎樄闁哄本绋戦埥澶愬础閻愬浜繝鐢靛仜閹冲矂宕愬┑鍡╂綎闁惧繐婀遍惌娆愮箾閸℃ê鍔ら柛鎿冨墴濮婃椽宕ㄦ繝鍐ㄩ瀺缂備浇顕х€氫即鐛幋锕€顫呴柣姗嗗亝閺傗偓闂備焦鎮堕崕顕€寮插┑瀣剨闁割偁鍎查埛鎴犵磼鐎n偄顕滄繝鈧幍顔剧<閻庯綆鍋勯悘銉╂煃鐠囪尙效闁轰焦鍔欏畷顏呮媴閻熸壆妲i梻鍌欑窔濞佳囨偋閸℃瑦宕查柟鐑橆殔缁€鍡椕归悡搴f憼闁绘挸绻橀弻娑㈩敃閵堝懏鐎鹃梺绋匡攻閸旀牠銆冮妷鈺傚€烽柟缁樺笚濞堣尙绱撴担绋库偓鍦暜閻愬搫鐒垫い鎺戯功閸掍即鏌h箛鏂垮摵鐎殿喗鐓¢、妤呭焵椤掑嫬鐓橀柟杈鹃檮閸婄兘鏌℃径瀣仼濞寸姵鎮傞弻锕傚礃椤旂粯鍠氶梺璇″枛缂嶅﹤鐣烽崼鏇炵厸濞达綁鏀遍~鏇熺節濞堝灝鏋涢柨鏇樺妼閳诲秹鏁愭径濠勵唵闂佺粯枪椤曆囨倶閹惰姤鐓i煫鍥风到娴滅偛霉濠婂啰鍩f慨濠勭帛閹峰懘鎸婃径濠冨劒闂備線娼荤紞鍥⒔閸曨剛鈹嶅┑鐘叉搐閻愬﹥銇勯幒鍡椾壕缂備胶濮甸悡锟犲蓟閺囷紕鐤€闁哄洨鍊☉銏$厸闁逞屽墯缁傛帞鈧綆鍋勯埀顒傛暬閺屻劌鈹戦崱娆忓毈缂備降鍔嬬划娆撳蓟濞戞瑧绡€闁告洦鍋傚Σ鎰攽椤旂》鏀绘俊鐐舵铻為柛鎰电厑瑜版帒围闁糕剝鐟﹂崚娑㈡倵鐟欏嫭绀冮柨鏇樺灪娣囧﹪骞栨担鑲濄劍銇勯弮鍥棄闁哄濮电换婵嬫偨闂堟刀銉╂煛娴e憡鍟為柟渚垮姂閹粓鎸婃径瀣偓顒勬⒑閸涘﹦鈽夐柨鏇樺劦瀹曪綀绠涘☉娆戝幗闂佺鎻徊楣兯夋径鎰厸閻庯絺鏅濈粣鏃堟煛瀹€鈧崰鏍ь潖閼姐倐鍋撻棃娑橆棌婵″樊鍠氱槐鎺楁倷椤掆偓缁€鍐┿亜椤愩埄妯€濠碉紕鏁诲畷鐔碱敍濮橆剙鏁ゆ俊鐐€栭崝锕€顭块埀顒傜磼椤旇偐鍩f慨濠呮缁辨帒螣閾忓湱鎳嗛梻浣筋嚙缁绘垵鐣濋崨濠佺箚闁汇垻枪缁€瀣亜閺嶃劍鐨戞い鏂匡躬濮婃椽鎮烽幍顔芥喖缂備浇顕х粔鐢电矉閹烘鍤冮柍鍝勫暟閿涙粓姊虹紒妯哄Е闁告挻鐟╁畷婵嬪Χ閸℃劒绨诲銈嗘尵婵挳宕㈢€电硶鍋撳▓鍨灈妞ゎ厾鍏橀獮鍐閵堝棗浜楅柟鑹版彧缂嶅棗危閸洘鐓熼柣鏂挎憸閻﹦绱掔紒妯烘诞鐎殿噮鍋婇、娆戜焊閺嶎煈娼旈梻渚€娼ф蹇曟閺囥垹鍌ㄥù鐘差儐閳锋垿鎮峰▎蹇擃仼闁告柣鍊栭妵鍕即閵娿儱绠归柣鎾卞€濋弻鐔虹磼閵忕姵鐏嶉梺缁樻尰閻燂箓濡甸崟顖氱睄闁稿本绮嶉幉妯衡攽閻愯尙澧涚紒顔芥崌瀵鍩勯崘鈺侇€撻梺鑽ゅ枑濠㈡﹢锝炲澶嬧拺閻犲洠鈧磭浠┑鈽嗗亜閸熸潙鐣风憴鍕╁亝闁告劏鏅涘▓銈咁渻閵堝棗绗傞柣鎺炵畱閳诲秹鏁冮埀顒勫煘閹达附鍋愰柛顭戝亝濮e嫭绻濆▓鍨珮闁告瑥鍟撮悰顔跨疀濞戞ḿ顦ㄥ銈嗘閸嬫劙藝閵娿儺娓婚柕鍫濇噽缁犱即鏌涢悢鍝勵暭闁靛洦鐟╅獮搴ㄦ嚍閵夈垺瀚藉┑鐐存尰閸╁啴宕戦幘缁樼厓鐟滄粓宕滃杈╃煓闁规崘顕ч悡姗€鏌熼悜姗嗘畷闁绘挻娲熼弻锟犲磼濠靛洨銆婇柤鍙夌墵濮婃椽鎮烽幍顔炬殯闂佹悶鍔岀紞濠囧春閻愬搫绠i柣姗嗗亜娴滈箖鏌ㄥ┑鍡欏嚬缂併劏宕电槐鎺楀箛椤撶姭妲堝銈庝簻閸熷瓨淇婇崼鏇炲耿婵☆垳鈷堝Σ顒勬⒒娴g儤鍤€闁哥喕娉曠划鏃堟偡閹殿喗娈惧銈嗗姀閹筹繝寮崼婵嗙獩濡炪倖妫侀~澶屸偓姘虫閳规垿鎮欓懜闈涙锭缂備浇寮撶划娆撶嵁婢舵劖鏅柛鏇ㄥ墮椤忔悂姊虹捄銊ユ灁濠殿喚鏁婚幃鈥斥枎閹惧鍙勯棅顐㈡祫缁茶姤绂嶅┑瀣€堕煫鍥ㄦ礃閺嗩剟鏌$仦鐣屝ユい褌绶氶弻娑㈠箻绾惧顥濆銈庡亝缁诲牊淇婇幖浣规櫆闁兼亽鍎宠ぐ鎸庣節瀵伴攱婢橀埀顒佹崌閹虫宕奸弴鐐靛幋閻庡箍鍎遍幊澶愬绩娴犲鐓熸俊顖氭惈缁狙囨煙閸忕厧濮夌紒杈ㄥ浮閹晠宕归銏$暚闂傚倸娲らˇ鐢稿蓟閵娿儮鏀介柛鈩冪懃椤f椽姊洪柅鐐茶嫰閸樺摜绱掗鐣屾噭濞e洤锕獮鏍ㄦ媴閸濄儱骞愰梻浣呵归張顒傚垝鐏炵瓔鍤曢柟鎯板Г閳锋帒霉閿濆懏鍟為柟顖氱墦閺屾盯鎮㈤崫鍕ㄦ瀰閻庤娲橀崹鍧楃嵁濡偐纾兼俊顖滃帶楠炲牓姊虹涵鍛棈闁规椿浜炲Σ鎰板即閵忊剝娅栭悗骞垮劚濞层劎澹曟總绋跨骇闁割偅纰嶅▍鍛归悩娲摵妞ゃ劊鍎甸幃娆撳级閹寸姷鎳嗛梺鍓х帛閻楁洟婀侀梺鎸庣箓閹冲海鐥閹顫濋銈囩厯濠殿喖锕︾划顖炲箯閸涙潙宸濋梻鍫熺〒缁夎櫣鈧鍠氶弫濠氥€佸Δ鍛妞ゆ巻鍋撳ù鐙€鍙冨娲濞淬儱鐗撳鎻掆槈濮樿京鐒奸梺绋挎湰婢规洟宕戦幘璇茬濠㈣泛锕f竟鏇㈡⒒娴e憡鍟炴繛璇х畵瀹曟粌鈽夐姀鐘插亶闂佹眹鍨归幉锟犲煕閹达附鐓欐い鏍ф鐎氼噣銆呮导瀛樷拺缂佸顑欓崕蹇涙煙閸愭煡鍙勯柟顔藉劤閻o繝骞嶉鑺ョ暦闂備線鈧偛鑻晶鎾煕閳规儳浜炬俊鐐€栫敮鎺楀窗濮橆兗缂氶柟閭﹀幘缁犻箖鏌涘▎蹇fШ闁活厽甯為埀顒侇問閸n噣宕戦崱娑樼闁绘ê妯婇崯鍛亜閺傚灝鎮戞い鎾崇仢閳规垿鎮欏顔兼婵犳鍠楅幐鎶姐€侀弽顓炵疀闁哄瀵ч悗顒勬⒑閹肩偛鍔撮柛鎾村哺閹繝鎮㈤崗鑲╁幍闂備緡鍙忕粻鎴濐嚕妤e啯鐓曢柣鏃堫棑缁犲鏌$仦鍓ф创闁诡喗鐟╁畷褰掝敃閿濆棛妲楀┑鐘愁問閸犳牠鏁冮敂鎯у灊妞ゆ牜鍋涚粻顖炴煕濞戞ḿ鎽犻柛銈呯Ч閺屾洘绔熼娆掝唹闁稿鎸荤换婵嬪炊閵娿垺瀚奸梻鍌氬€搁悧鍐疾濠靛牏鐭撻柛鎾茶兌绾惧ジ鏌eΟ鎸庣彧鐎规洖鐭傞弻锝呪槈閸楃偞鐏曠紓浣哄У缁嬫垿鍩ユ径濞炬瀻闁归偊鍙庢禒褔姊婚崒娆愮グ婵炲娲熷畷鎶芥晝閸屾氨顔嗛梺璺ㄥ櫐閹凤拷...

图 4-4 AJAX工作原理

4.2.3 图像数据显示实现

采用WEB浏览器来显示的时候只需要添加如下代码:

<img src="http://192.168.2.1:8080/?action=stream" style="width:640px; height:480px;"/>

4.2.4 利用AJAX技术实现命令发送与数据更新

XMLHttpRequest 是 AJAX 的最基础的部分,本设计中的部分代码如下:

function SendCmd(cmd)

{

var xmlhttp;

if (window.XMLHttpRequest)

{// code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

}

else

{// code for IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

xmlhttp.open("GET","./car.cgi?"+cmd,true);

xmlhttp.send();

xmlhttp.onreadystatechange=function()

{

if (xmlhttp.readyState==4 && xmlhttp.status==200)

{

var rec=xmlhttp.responseText;

if( rec.indexOf("PRE") == 0)

{

document.getElementById("Pressure").innerHTML="压力:"+rec.substr(4);

}

if( rec.indexOf("POW") == 0)

{

var get_power=parseFloat(rec.substr(4));

get_power=9.9*get_power/1024;

if(power == 0)

power=get_power;

if(get_power<=power && power-get_power<0.2)

{

power=get_power;

if(power>8.3)

document.getElementById("Power").innerHTML="电量:100%";

else if(power>8.2)

...

}

}

}

}

}

5 结束语

本文从硬件选型,硬件电路设计,系统移植,驱动程序移植编写,服务器搭建,服务器程序编写,以及Android客户端和Web客户端应用程序编写方面进行了较为详细的介绍。通过自己的努力,完成了最低层的硬件设计到最上层软件开发,实现了本设计的基本功能。最终用户能够通过Android客户端和Web客户端对机器人进行夹持,运输,摆放动作的控制,并且能够实时地返回机器人采集到的图像数据和传感器数据。

由于本设计基于成本的考虑,并没有采用大功率高精度的硬件设备,所以只能作为一种功能演示以及技术可行性演示。在后续的工作中还可以提升硬件设备,调整应用程序来获得更好的使用价值以及更好的用户体验。

如何成为一名优秀的射频工程师,敬请关注: 射频工程师养成培训

上一篇:Qorvo将展示RF解决方案产品组合 可用于多种移动数据设备
下一篇:可视化WIFI遥控搬运机器人之服务器搭建

闂傚倸鍊搁崐鎼佸磹瀹勬噴褰掑炊椤掑鏅悷婊冪箻楠炴垿濮€閵堝懐鐤€濡炪倖妫佸Λ鍕償婵犲洦鈷戠憸鐗堝笒娴滀即鏌涢悩鍐叉诞鐎规洘鍨块獮姗€骞囨担鐟板厞婵$偑鍊栭崝鎴﹀垂閸︻厾鐭堟い鏇楀亾婵﹥妞藉Λ鍐ㄢ槈濞嗘ɑ顥i梻浣呵归敃銈夆€﹂悜鐣屽祦闁硅揪绠戠粈瀣亜閹烘垵鈧骞婂┑鍡╂富闁靛牆妫涙晶顒傜棯閺夎法孝闁宠绉电换婵嬪炊閵娿垺瀚藉┑鐐存尰閸╁啴宕戦幘瀵哥濞达絽鍟垮ú锕傚疾椤掑嫮鍙撻柛銉e妿閳藉鏌i幒鎴犱粵闁靛洤瀚伴獮鎺楀箣濠垫劒鎮i梻浣芥閸熶即宕伴弽顓炶摕闁哄洢鍨归柋鍥ㄧ節閸偄濮堥弫鍫ユ⒒娴e懙褰掝敄閸愵喖绀夌€广儱顦闂佸憡娲﹂崹浼村礃閳ь剟姊洪棃娑掑悍濠碘€虫搐閳绘捇濡堕崱娆戠槇闂佸啿鐨濋崑鎾绘煕閺囥劌澧版い锔垮嵆濮婃椽宕崟顓犲姽缂傚倸绉崇欢姘舵偘椤斿槈鐔煎礂閻撳孩鐎梻浣告啞濞诧箓宕㈣ぐ鎺戠劦妞ゆ巻鍋撻柨鏇ㄤ簻椤繐煤椤忓懎浠梺鍝勵槹鐎笛傜昂濠碉紕鍋戦崐鏍垂閻㈡潌鍥偨缁嬭銉ッ归敐鍛棌婵炵鍔戦弻宥堫檨闁告挾鍠栭悰顕€宕橀纰辨綂闂侀潧鐗嗛幊搴g玻濞戞瑧绡€闁汇垽娼у瓭闁诲孩鍑归崢濂稿煝閹炬椿鏁婇柛鎾楀拑绱抽梻浣呵归張顒勬嚌妤e啫鐒垫い鎺戝濡垹绱掗鑲╁缂佹鍠栭崺鈧い鎺戝閳ь兛绶氬浠嬵敇閻愭鍚呴梻浣瑰濞插秹宕戦幘鍓佺<闁绘瑢鍋撻柛銊ョ埣瀵濡搁埡鍌氫簽闂佺ǹ鏈粙鎴︻敂閿燂拷 | More...
射频和天线工程师培训课程详情>>

  网站地图