介绍一个简单的 GPS 应用软件开发包
2006-07-21 11:09:05 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佺粯鍔﹂崜娆撳礉閵堝洨纾界€广儱鎷戦煬顒傗偓娈垮枛椤兘骞冮姀銈呯閻忓繑鐗楃€氫粙姊虹拠鏌ュ弰婵炰匠鍕彾濠电姴浼i敐澶樻晩闁告挆鍜冪床闂備胶绮崝锕傚礈濞嗘挸绀夐柕鍫濇川绾剧晫鈧箍鍎遍幏鎴︾叕椤掑倵鍋撳▓鍨灈妞ゎ厾鍏橀獮鍐閵堝懐顦ч柣蹇撶箲閻楁鈧矮绮欏铏规嫚閺屻儱寮板┑鐐板尃閸曨厾褰炬繝鐢靛Т娴硷綁鏁愭径妯绘櫓闂佸憡鎸嗛崪鍐簥闂傚倷鑳剁划顖炲礉閿曞倸绀堟繛鍡樻尭缁€澶愭煏閸繃宸濈痪鍓ф櫕閳ь剙绠嶉崕閬嶅箯閹达妇鍙曟い鎺戝€甸崑鎾斥枔閸喗鐏堝銈庡幘閸忔﹢鐛崘顔碱潊闁靛牆鎳愰ˇ褔鏌h箛鎾剁闁绘顨堥埀顒佺煯缁瑥顫忛搹瑙勫珰闁哄被鍎卞鏉库攽閻愭澘灏冮柛鏇ㄥ幘瑜扮偓绻濋悽闈浶㈠ù纭风秮閺佹劖寰勫Ο缁樻珦闂備礁鎲¢幐鍡涘椽閸愵亜绨ラ梻鍌氬€峰ù鍥敋閺嶎厼鍨傞幖娣妼缁€鍐煥濠靛棙顥滈柣锕備憾濮婂宕掑▎鎺戝帯濡炪們鍨归敃銈夊煝瀹ュ鍗抽柕蹇曞Х椤斿姊洪幖鐐插姶闁告挻鐟╅幃姗€骞庨懞銉у幐闂佸憡鍔戦崝搴㈡櫠閺囩姷纾奸柍褜鍓熷畷姗€鍩炴径鍝ョ泿闂傚⿴鍋勫ú銈吤归悜鍓垮洭鏁冮埀顒勬箒濠电姴锕ら悧蹇涙偩濞差亝鐓涢悘鐐额嚙婵″ジ鏌嶇憴鍕伌鐎规洖宕埢搴ょ疀閹惧妲楃紓鍌氬€搁崐鐑芥⒔瀹ュ绀夐幖杈剧到閸ㄦ繃銇勯弽顐粶濡楀懘姊洪崨濠冨闁搞劍澹嗙划濠氬箮閼恒儱鈧敻鏌ㄥ┑鍡欏嚬缂併劏妫勯湁闁绘ǹ宕甸悾鐑樻叏婵犲啯銇濇俊顐㈠暙閳藉鈻庨幇顓炩偓鐑芥⒑鐠囨彃顒㈤柣顓у櫍瀹曪繝骞庨懞銉ヤ粧濡炪倖娲嶉崑鎾垛偓瑙勬礀閻栧ジ銆佸Δ浣哥窞閻庯綆鍋呴悵顐⑩攽閻樻剚鍟忛柛锝庡灣瀵板﹪宕滆閸嬫挾绮☉妯绘悙缂佺姵鐓¢弻娑㈠Ψ椤旂厧顫╅梺钘夊暟閸犳牠寮婚敐澶婃闁圭ǹ瀛╅崰鎰版⒑閼姐倕鏋庣紓宥咃躬瀵鈽夐埗鈹惧亾閿曞倸绠f繝闈涙川娴滎亝淇婇悙顏勨偓銈夊礈濞嗘挻鍋嬮柛鈩冪▓閳ь剚妫冨畷姗€顢欓崲澹洤绠圭紒顔煎帨閸嬫捇鎳犻鈧崵顒傜磽閸屾艾鈧娆㈤敓鐘茬獥婵°倕鎳庣粻浼存煙闂傚鍔嶉柛瀣ф櫊閺岋綁骞嬮敐鍡╂缂佺虎鍘搁崑鎾绘⒒娴h櫣甯涢柛鏃€娲滅划鏃堟濞磋櫕鐩畷姗€顢欓崗鍏夹氶梻渚€鈧偛鑻晶顖炴煏閸パ冾伃妤犵偞甯¢獮瀣攽閹邦亞纾婚梺璇叉唉椤骞愭搴g焼濞撴埃鍋撻柛鈺冨仱楠炲鏁傞挊澶夋睏闂備礁婀辩划顖滄暜閳哄倸顕遍柍褜鍓涚槐鎾存媴閻熸澘濮㈤悷婊勫閸嬬喖宕氶幒鎴旀瀻闁规儳鐤囬幗鏇炩攽閻愭潙鐏﹂柣顓у枛閳讳粙顢旈崼鐔哄幍闁荤喐鐟ョ€氼剚鎱ㄩ崶銊d簻闁靛濡囩粻鐐存叏婵犲啯銇濋柡灞芥嚇閹瑩鎳犵捄渚純濠电姭鎷冮崒姘ギ闂佸搫鐬奸崰鏍箹瑜版帩鏁冮柨婵嗘噽閿涙捇姊绘担鐟邦嚋缂佽瀚板畷鎴濃槈閵忕姷鍘撮梺鐟邦嚟婵參宕戦幘缁樻櫜閹煎瓨锚娴滅偓銇勯幘瀵糕姇婵炲懎锕弻锛勪沪閻e睗锝嗙箾绾板彉閭鐐茬箳娴狅箓鎸婃径濠呭帿闂傚倸鍊烽悞锕傛儑瑜版帒纾归柡鍥ュ灩缁犵娀鏌熼柇锕€鏋熸い顐f礋閺岀喖骞嗚閹界姴鈹戦娑欏唉闁哄本鐩獮姗€寮堕幋鐘点偡闂備礁鎲¢幐绋跨暦椤掑嫧鈧棃宕橀鍢壯囨煕閳╁喚娈樺ù鐘虫倐濮婃椽鎳¢妶鍛瘣闂佸搫鎳忛惄顖炲箖妤e啯鍊婚柦妯猴級閵娧勫枑濠㈣埖鍔曠壕濠氭煙閸撗呭笡闁哄懏鐓¢獮鏍垝閻熸澘鈷夐梺璇茬箰缁夌懓顫忛搹鍦<婵☆垵顕ч棄宥呪攽閻愭彃绾ч柨鏇樺灪娣囧﹪鎮界粙璺槹濡炪倖鐗楀銊╂偪閳ь剟姊婚崒姘偓鎼佹偋婵犲嫮鐭欓柟閭﹀枦婵娊鏌ゅù瀣珖缁炬崘妫勯湁闁挎繂鐗婇ˉ澶愭煟閹炬潙濮堥柟渚垮妼铻g紒瀣仢椤鈹戦垾鍐茬骇闁告梹鐟╅悰顔嘉熼崗鐓庣彴闂佽偐鈷堥崜锕€危娴煎瓨鈷掑ù锝嚽归弳閬嶆煙绾板崬浜扮€规洘鍔栫换婵喰掔粙鎸庡枠鐎殿喛鍩栭幆鏃堝箻鐎涙ɑ婢戝┑锛勫亼閸婃牕顫忔繝姘ラ悗锝庝憾閸熷懘鏌曟径娑滅濞存粍绮嶉妵鍕箻鐠鸿桨绮跺┑鈩冨絻椤兘寮婚敐澶嬫櫜闁搞儜鍐ㄧ婵°倗濮烽崑鐐垫暜閿熺姷宓侀悗锝庡枛缁秹鏌嶈閸撶喖骞冨Δ浣虹瘈婵﹩鍘搁幏娲煟閻斿摜鎳冮悗姘煎弮瀹曟洖螖閸涱喚鍘卞┑鈽嗗灥閵嗏偓闁稿鎹囬幃銏ゅ箵閹烘垹闃€婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繘鏌i幋锝嗩棄闁哄绶氶弻娑樷槈濮楀牊鏁鹃梺鍛婄懃缁绘垿濡甸崟顖氱闁告鍋熸禒鑲╃磼閻愵剙鍔ゆい顓犲厴瀵鎮㈤悡搴n槶閻熸粌绻掗弫顔尖槈閵忥紕鍘撻梻浣哥仢椤戝懘鎮橀敃鍌涚厪闁搞儜鍐句純濡ょ姷鍋炵敮鈥崇暦閸楃儐娓婚柟顖嗗本顥$紓鍌氬€搁崐鎼佸磹妞嬪海鐭嗗〒姘e亾閽樻繈姊洪鈧粔鎾几娴g硶鏀介柣妯挎珪閻ㄦ垹鈧鎸风欢姘跺蓟濞戙垹鐒洪柛鎰典簴婵洭姊虹粙鍖″姛闁稿繑锕㈠璇测槈濡攱鏂€闂佺硶鍓濋〃蹇斿閳ь剚淇婇悙顏勨偓鏍ь潖瑜版帒绀夐柡鍥ュ灩閻撴﹢鏌熸潏楣冩闁稿﹤顭烽弻娑㈠Ψ閵忊剝鐝栭柡宥忕節濮婄粯鎷呴崨濠傛殘闂佸湱枪椤兘骞冮悜鑺ユ櫆闁伙絽澶囬弨铏節閻㈤潧孝婵炶绠撳畷鐢稿礃椤旂晫鍘撻梺鍛婄箓鐎氼剟寮抽悢鍏肩叆婵炴垶鐟ч惌鎺撴叏婵犲洨绱伴柕鍥ㄥ姍楠炴帡骞嬪⿰鍐╃€抽梻鍌欑閹诧繝鎮烽妷锔绘闁归棿绀侀悡婵嬫煙閻愵剚鐏遍柛顐邯閺屾盯顢曢妶鍛亖闂佸憡蓱閹倿寮婚敐鍫㈢杸闁哄洨鍋橀幋椋庣磼缂併垹骞栭柣鏍帶閻g兘骞嬮敃鈧粻濠氭偣閸ヮ亜鐨洪柣銈傚亾婵犵數鍋犻幓顏嗗緤娴犲绠熼柨鐔哄Т绾捐銇勯弽顐沪闁抽攱鍨归惀顏堫敇閻愭潙娅f繛瀛樼矊缂嶅﹪骞冪捄琛℃闁哄诞鍐ㄐ曢梻浣虹《閺備線宕戦幘鎰佹富闁靛牆妫楃粭鎺楁煕閻曚礁浜伴柟顖氬暙鐓ゆい蹇撴噽閸樺憡绻涙潏鍓у埌婵犫偓鏉堛劍娅犳い蹇撶墛閻撳啴鎮峰▎蹇擃仼闁诲繑鎸抽弻鐔碱敊閻e本鍣伴悗娈垮枛閻栧ジ鐛€n喗鍋愰弶鍫厛閺佸洭姊婚崒姘偓椋庣矆娴i潻鑰块弶鍫涘妿娴犳岸姊绘担渚敯濠殿喓鍊楅崚鎺撴償閵娿儳顦梺鍦劋椤ㄥ懐鐚惧澶嬬厱妞ゆ劑鍊曢弸搴∶归悩鐑橆仩缂佽鲸鎸婚幏鍛村礈閹绘帒澹嶆俊鐐€栧ú妯荤箾婵犲洤鏋侀柛鎰靛枛绾惧吋绻涢幋鐐跺妤犵偛鐗撳缁樻媴閸涘﹥鍎撳┑鐐茬湴閸ㄨ棄鐣峰┑鍡欐殕闁告洦鍓欓埀顒€鐖奸弻锝呂熼懖鈺佺闂佺粯鎸诲ú鐔煎蓟閻斿吋鍤嬫い鎺嗗亾濠碉紕鍘ч湁婵犲﹤瀚崝銈夋煃鐟欏嫬鐏撮柡浣哥Ч瀹曠喖顢曢埄鍐╃窔闂傚倷鑳舵灙闁挎洏鍎甸幃褔鎮╅懠顒佹濠电娀娼ч鍡涘疾濠靛鐓冪憸婊堝礈閻旂厧鐏抽柨鏇炲€搁柨銈嗕繆閵堝倸浜鹃梺缁樺笒閻忔岸濡甸崟顖氱鐎广儱鐗嗛崢锛勭磽娴e搫孝濠⒀傜矙閸┾偓妞ゆ巻鍋撻柛妯荤矒瀹曟垿骞橀弬銉︽杸闂佺粯枪娴滎剛绮i弮鍫熺厱閻庯綆鍋掑▓鏃堟煃鐟欏嫬鐏存い銏$懅濞戠敻鎮滈悾灞藉冀濠电姷鏁搁崑娑㈠箯閹寸姴绶ら柛顭戝暎閿濆绠涢柡澶庢硶椤斿﹪姊洪悷鏉挎毐缁剧虎鍙冨畷浼村箻鐠囪尙顔嗛梺缁樶缚缁垶宕甸幋锔界厾缂佸娉曟禒娑欐叏閿濆棗濮嶆慨濠傤煼瀹曟帒顫濋钘変壕闁绘垼濮ら崵鍕煠閸濄儲鏆╁ù鐘崇缁绘繈鎮介棃娑楃捕濡炪倖娲﹂崣鍐ㄧ暦濡も偓铻e〒姘煎灠濞堛劌顪冮妶鍡楀闁稿﹥鐗滈埀顒佺濮樸劑鍩€椤掑倹鍤€濠㈢懓锕畷浼村冀瑜夐弸鏃堟煏婵犲繐顩紒鈾€鍋撻梻浣圭湽閸ㄨ棄岣胯閻楀海绱撴担鍝勪壕婵犮垺岣跨划鏃堟偡闁箑娈ㄩ梺鍝勮閸庤京绮婚悽鍛婄厵闁绘垶岣跨粻姗€鏌涢悙鍨毈闁哄矉缍侀幃鈺呮倻濮楀棔鍝楅梺璇茬箰缁诲牓宕濆畝鍕垫晩闊洦绋戝敮閻熸粌顦靛畷鎴﹀箻閼搁潧鏋傞梺鍛婃处閸撴瑧鍠婂鍛斀闁宠棄妫楁禍婵堢磼鐠囨彃鈧潡鏁愰悙鍓佺杸婵炴垶鐟﹂崕顏堟⒑闂堚晛鐦滈柛姗€绠栭弫宥呪堪閸愶絾鏂€闂佸疇妫勫Λ妤呮倶閻樼粯鐓欑痪鏉垮船娴滀即鏌ㄥ┑鍫濅粶妞ゆ挸銈稿畷鍫曞煛閸愯法闂繝鐢靛仩閹活亞绱炴笟鈧棢闁规崘顕х粈澶屸偓骞垮劚椤︿即鎮″▎鎴犵<閻庯綆浜炴禒銏ゆ煛閸℃稐鎲鹃柡宀嬬秮閺佹劙宕惰楠炲螖閻橀潧浠滄い鎴濐樀瀵偊宕橀鑲╁姦濡炪倖甯掗崐缁樼▔瀹ュ應鏀介柣妯虹-椤f煡鏌涚€e墎绉柡灞剧洴婵$兘骞嬪┑鍡樻婵°倗濮村ú顓㈠箖濡ゅ啯鍠嗛柛鏇ㄥ墮绾板秶绱撴担鍓叉Ч闁瑰憡濞婇崹楣冨籍閸繄顦ㄥ銈嗘煥濡插牐顦归柡灞剧洴閸╁嫰宕楅悪鈧禍顏勎涢崟顐悑闁搞儮鏅濋敍婵囩箾鏉堝墽鍒板鐟帮躬瀹曟洟骞囬悧鍫㈠幈闂侀潧枪閸庨亶銆傚畷鍥╃<妞ゆ梻鈷堥崕蹇斻亜閹惧啿鎮戠€垫澘瀚埀顒婄秵娴滄牠宕戦幘缁樼叆閻庯絻鍔嬬花濠氭⒑閻熺増鎯堢紒澶婄埣钘濋柨鏃堟暜閸嬫挸鈻撻崹顔界亪闂佽绻戠换鍫ュ春閻愬搫绠i柨鏇楀亾闁绘搫绻濋弻娑㈠焺閸愮偓鐣兼繛瀵稿閸ㄨ泛顫忓ú顏勫窛濠电姴娴烽崝鍫曟⒑閸涘﹥澶勯柛娆忛鐓ら柛娑橈梗缁诲棝鏌曢崼婵堢闁告帊鍗抽弻娑㈡偆娴e摜浠搁悗瑙勬礃閸旀瑥鐣疯ぐ鎺濇晝闁挎繂鎳庢导搴㈢節绾版ɑ顫婇柛銊﹀▕瀹曘垼顦崇紒鍌氱У閵堬綁宕橀埡浣插亾閸偅鍙忔俊顖滃帶娴滈箖鎮楀鐐

本文示例源代码或素材下载
简介 :
- 欢迎使用 GPSLIB,这是一个简单的软件开发包(SDK),你可以利用这个 GPSLIB 在自己的32位 Windows 应用程序中加入全球定位系统的支持。
- 本文附带的源代码压缩文件中包含有 GPSLIB 库的源代码和 Demo 程序。很多文件中都有详细的注释说明。为了保证可下载文件的体积尽量的小,压缩文件中不含任何二进制文件。请使用Visual C++ 5 以上的版本编译并生成 DLLs、控制面板程序和可执行文件。
特性:
- 可以在任何支持Windows DLLs调用的开发环境中使用,包括VB、VBA、C、C++、Fortran、Delphi。
- 完全支持 UNICODE 编码字符集。
- 提供一个控制面板程序用以在客户端添加、配置和删除GPS接收器。
- 简单易用的API函数调用与 Win32 SDK API 调用方法类似,所以 Windows 程序开发人员对此不会感到陌生。
- 提供全部的源代码,以便帮助开发人员在调试时可进入 GPSLIB 库代码。
安装与配置:
- GPSLIB 只能用于 Win32 平台。它没有安装程序。只要将 gpslib.zip 文件解压缩到硬盘上的某个目录即可。
- 当你分发自己的应用程序时,必须将相关的 GPSLIB.DLL 文件以及控制面板程序一起分发。
注意事项:
- 请随时跟踪作者个人网站,以便获得最新版本。
使用方法:
- 用 GPSLIB 开发客户端程序时,请链接相应的 GPSLIB DLL 文件(静态链接或动态链接均可),然后调用其中输出的函数。
- 使用 GPSLIB 之前,必须修改包含文件路径和库文件路经,使其指向 GPSLIB 所在的目录。
- 如果想重新生成 GPSLIB 组件,请直接打开 gps32.dsw 工程文件。然后重新编译生成。
- GPSLIB 组件中不包含二进制模块,需要时请用相应的*.dsw文件重新生成。
- 不同的生成配置必须链接不同版本的 GPSLIB DLL。具体细节请参考表一。
- 控制面板由两个文件组成。一个是.CPL文件,另一个是.EXE文件。生成配置请参考表二。
- 形成 GPS 控制面板的两个程序应该被安装到客户端机器的系统目录( 如Windows NT 或 Windows 2000的 system32 )。但 GPSLIB DLL 既可以被安装到客户端机器的系统目录,也可以被安装到客户端机器的应用程序目录。
- 请注意分发程序时,任何人只被允许分发 GPSLIB 的正式(RELEASE)版本。
- 调试(Debug)版本只用于调试。开发客户端程序的语言或工具最好能支持 DLLs 中的调试信息,以便在 MS IDE 开发环境中调试使用 GPSLIB 库的客户端程序时能直接跟踪到 GPSLIB 库的源代码。
表一:
生成配置 | 需要链接的GPSLIB DLL |
Ascii Debug | GPS103D.DLL |
Ascii Release | GPS103.DLL |
Unicode Debug | GPS103UD.DLL |
Unicode Release | GPS103U.DLL |
表二:
生成配置 | 控制面板动态库 | 控制面板执行文件 |
Ascii Debug | GPS103D.CPL | GPS103D.EXE |
Ascii Release | GPS103.CPL | GPS103.EXE |
Unicode Debug | GPS103UD.CPL | GPS103UD.EXE |
Unicode Release | GPS103U.CPL | GPS103U.EXE |
API 参考:
GPSLIB DLLs 接口函数输出清单如下:
GpsShowControlPanel
GpsCreateEntry
GpsGetNumDevices
GpsEnumDevices
GpsDeleteEntry
GpsRenameEntry
GpsPropertiesDlg
GpsOpen
GpsClose
GpsGetPosition
GpsGetVersion
GpsDeviceNameAlreadyExists
GpsShowAboutBox
GpsGetDevice
GpsSetDevice
GpsShowControlPanel
BOOL GpsShowControlPanel();
返回值
如果控制面板程序显示成功,函数返回 TRUE,否则返回 FALSE。
参数
无
注释
调用此函数打开 GPS 接收器控制面板程序。通过该程序可以在系统中安装、配置和删除 GPS 接收器。
GpsCreateEntry
BOOL GpsCreateEntry(HWND hWnd);
返回值
如果安装新的 GPS 接收器成功,函数返回 TRUE,否则返回 FALSE。
参数
hWnd 用于此函数显示的用户界面元素父窗口句柄。
注释
调用此函数将显示一个基于向导的标准对话框,使用户可以在其计算机上安装 GPS 接收器。
参见
GpsDeleteEntry, GpsGetDevice
GpsGetNumDevices
DWORD GpsGetNumDevices();
返回值
当前安装的 GPS 接收器数目。
参数
无
注释
调用此函数可以返回当前安装的 GPS 接收器数目。
参见
GpsEnumDevices, GpsGetDevice
GpsEnumDevices
DWORD GpsEnumDevices(LPGPSDEVINFO lpGpsDevInfo, DWORD dwRequestedDevices);
返回值
成功枚举的 GPS 设备数目。
参数
IpGpsDevInfo 指向 GPSDEVINFO 结构的指针,该结构由函数体中的代码填写。
dwRequestedDevices 枚举的设备数。
注释
用此函数获取任何已安装 GPS 设备的配置参数。为了枚举当前所有 GPS 设备,必须将 dwRequestedDevices 设置为 GpsGetNumDevices 的返回值。
参见
GpsGetNumDevices, GPSDEVINFO, GpsGetDevice
GpsDeleteEntry
BOOL GpsDeleteEntry(LPCTSTR lpszEntry);
返回值
如果成功删除 GPS 设备,则为 TRUE,否则为 FALSE。
参数
lpszEntry 要删除的 GPS 设备名。
注释
删除一个已安装的 GPS 设备。
参见
GpsCreateEntry
GpsRenameEntry
BOOL GpsRenameEntry(LPCTSTR lpszOldEntry, LPCTSTR lpszNewEntry);
返回值
如果针对 GPS 设备的改名成功,则为 TRUE,否则为 FALSE。
参数
lpszOldEntry 当前的 GPS 设备名。
lpszNewEntry GPS 设备新名称。
注释
改名已安装的 GPS 接收器。
参见
GpsCreateEntry, GpsDeleteEntry
GpsPropertiesDlg
BOOL GpsPropertiesDlg(HWND hWnd, LPCTSTR lpszEntry);
返回值
如果属性对话框成功显示并且用户通过“OK”按钮关闭对话框。则返回 TRUE。
参数
hWnd 用于显示属性对话框的父窗口。
lpszEntry 显示该名称的 GPS 设备属性。
注释
显示与已安装的 GPS 接收器关联的属性对话框。如果用“OK”按钮关闭该对话框,则会保存对相关属性数据的更新。
参见
GpsCreateEntry, GpsDeleteEntry
GpsOpen
HGPS GpsOpen(LPCTSTR lpszEntry);
返回值
返回抽象的 HANDLE 类型(HGPS),该 HANDLE 表示一个到 GPS 接收器的连接。如果是一个无效的 HANDLE ,则由标准的 Win32 INVALID_HANDLE_VALUE 值表示。
参数
lpszEntry 打开连接的 GPS 设备名称。如果 lpszEntry 为 NULL。那么默认的 GPS 接收器将被打开。
注释
这是客户端程序用来获取 GPS 装置的主要函数。客户端程序还应该通过调用 GpsShowControlPanel 来提供打开控制面板的机制。
参见
GpsClose, GpsEnumDevices, GpsShowControlPanel
GpsClose
BOOL GpsClose(HGPS hEntry);
返回值
如果打开 GPS 接收器连接被成功关闭。则返回 TRUE。
参数
hEntry 要关闭的 GPS 接收器句柄。
注释
此函数通常只在客户端 GPS 程序退出之前被调用。
参见
GpsOpen
GpsGetPosition
BOOL GpsGetPosition(HGPS hEntry, LPGPSPOSITION lpPosition);
返回值
如果打开连接的 GPS 装置被成功搜索到则返回 TRUE。
参数
hEntry 要搜索的 GPS 装置的 GPS 连接句柄。
Remarks
在成功调用 GpsOpen 函数之后,客户端程序应周期性地调用该函数,根据客户端程序的需要,建议调用间隔在 1-5 秒,如果返回成功,那么客户端程序可将 lpPosition 用于任何目的,如:在某个地图程序中,用此信息标出用户位置,也可以在屏幕地图上进行目标跟踪。
参见
GpsOpen, GpsClose, GPSPOSITION
GpsGetVersion
DWORD GpsGetVersion();
返回值
当前 GPSLIB 库的版本号,版本号值类型为 DWORD。
参数
无
注释
返回 GPSLIB dll 版本号。当前的值为 0x101,其对应的 GPSLIB 版本号为 v1.01。
GpsDeviceNameAlreadyExists
BOOL GpsDeviceNameAlreadyExists(LPCTSTR lpszEntry);
返回值
如果命名的 GPS 设备已经被安装,则返回 TRUE,否则返回 FALSE。
参数
lpszEntry GPS 设备名。该函数检查该设备是否安装。
注释
在函数内部,使用 GpsEnumDevices 确定命名的 GPS 设备是否已经安装。该函数被控制面板使用,以保证指定设备的唯一性。
参见
GpsEnumDevices
GpsShowAboutBox
void GpsShowAboutBox(HWND hWnd);
返回值
无
参数
hWnd 用于显示关于对话框的父窗口句柄。
注释
该函数显示一个“关于”对话框,其中包含 GPSLIB 的版本号以及版权信息。它被用于控制面板自己的“关于”对话框。
参见
GpsGetVersion
GpsGetDevice
BOOL GpsGetDevice(LPCTSTR lpszEntry, LPGPSDEVINFO lpDevice);
返回值
如果成功找到该设备则返回 TRUE,否则返回 FALSE。
参数
lpszEntry 要对之进行设置的 GPS 设备名。
IpGpsDevInfo GPSDEVINFO 结构指针,该函数填写该结构,然后以参数形式返回该结构。
注释
获取给定名称的 GPS 设备的设置信息。如果 lpszEntry 被置为 NULL,那么获取的就是默认的 GPS 接收器设置。
参见
GpsSetDevice, GpsEnumDevices, GPSDEVINFO
GpsSetDevice
BOOL GpsSetDevice(LPCTSTR lpszEntry, LPCGPSDEVINFO lpGpsDevInfo);
返回值
如果成功更新设备的设置,则返回 TRUE,否则返回 FALSE。
参数
lpszEntry 要更新设置的 GPS 设备名。
IpGpsDevInfo GPSDEVINFO 常量结构指针,其中包含要更新的参数信息。
注释
更新指定名称的 GPS 设备设置。在调用该函数前,通常应该调用 GpsGetDevice 函数以保证 lpGpsDevInfo 包含有效成员。
参见
GpsGetDevice, GpsEnumDevices, GPSDEVINFO
GPSLIB 使用的数据结构:
GPSDEVINFO Structure
typedef struct tagGPSDEVINFO
{
TCHAR szDeviceName[ GPS_MaxDeviceName + 1 ];
BOOL bDefaultReceiver;
WORD wCommPort;
DWORD dwCommBaudRate;
WORD wCommDataBits;
WORD wCommParity;
WORD wCommStopBits;
} GPSDEVINFO;
GPSDEVINFO 结构用于表示 GPS 接收器设备属性。
成员表:szDeviceName | GPS 设备名 |
bDefaultReceiver | 如果该设备为默认接收器,该值为 TRUE,否则为 FALSE |
wCommPort | GPS 接收器所连接的串行通讯口端口号 |
dwCommBaudRate | 用于连接该设备的波特率 |
wCommDataBits | 用与连接该设备通讯端口的数据位 |
wCommParity | 用于连接该设备的枚举类型校验位。此成员取值为下列值之一: GpsParityNone GpsParityOdd GpsParityEven GpsParityMark GpsParitySpace |
wCommStopBits | 用与连接该设备的枚举类型停止位。此成员取值为下列值之一: GpsStopBits1 GpsStopBits1Point5 GpsStopBits2 |
参见
GpsEnumDevices
GPSPOSITION Structure
typedef struct tagGPSPOSITION
{
BOOL bNorthing;
DWORD dwLatitude;
BOOL bEasting;
DWORD dwLongitude;
DWORD dwBearing;
DWORD dwSpeed;
WORD wFixYear;
WORD wFixMonth;
WORD wFixDay;
WORD wFixHour;
WORD wFixMinute;
WORD wFixSecond;
WORD nSatellites;
DWORD dwAntennaAltitude;
WORD wQualityIndicator;
} GPSPOSITION;
成员表:
bNorthing | 如果报告的位置在赤道以北,该值为 TRUE,否则为 FALSE。 |
dwLatitude | 纬度。该值与bNorthing一起从 NMEA 命令“GPRMC”中获取。 |
bEasting | 如果所报告的位置在格林威治本初子午线以东,该值为 TRUE,否则为 FALSE。 |
dwLongitude | 经度。该值与bEasting一起从 NMEA 命令“GPRMC”中获取。 |
dwBearing | 方位。该值从 NMEA 命令“GPRMC”获取。与接收器移动的罗盘方向对应。 |
dwSpeed | 以厘米/小时计算的速度。该值从 NMEA 命令“GPRMC”获取。与接收器移动的速度对应。 |
wFixYear | GPS 定位时间的年份。该值从 NMEA 命令“GPRMC”获取。 |
wFixMonth | GPS 定位时间的月份。该值从 NMEA 命令“GPRMC”获取。 |
wFixDay | GPS 定位时间的日期。该值从 NMEA 命令“GPRMC”获取。 |
wFixHour | GPS 定位时间的小时。该值从 NMEA 命令“GPRMC”获取。 |
wFixMinute | GPS 定位时间的分钟。该值从 NMEA 命令“GPRMC”获取。 |
wFixSecond | GPS 定位时间的秒数。该值从 NMEA 命令“GPRMC”获取。 |
nSatellites | 视图中的卫星数该值从 NMEA 命令“GPRMC”获取。 |
dwAntennaAltitude | 以厘米计算的接收器在平均海平面以上的海拔高度,该值从 NMEA 命令“GPRMC”获取。 |
wQualityIndicator | 枚举类型 GPS 质量指示器。该值从 NMEA 命令“GPRMC”获取。该成员取下列值之一: GpsQualityFixNotAvailable GpsQualityFix GpsQualityDifferentialFix |
改进计划:
- 创建 MFC 打包类,提供 GPSLIB C++ 接口。
- 解决 GPSLIB 控制面板程序对 MFC 库的依赖问题,此问题解决后,代码体积将减少很多。
- 缩小 GPSLIB DLLs 的体积,缩短客户端程序加载 GPSLIB DLLs 的时间。
- 为客户端程序提供支持:使其可同时使用相同的 GPS 设备。其难点和技术挑战在于需要开发一个类似 TAPI 实现的那种框架。
- 如果你有任何关于 GPSLIB 的问题,请及时交流,以便进一步改进 GPSLIB 将来的版本。
更多精彩
赞助商链接