首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

GPSLIB:輕量級 GPS 開發套件(SDK)完整 API 參考與整合指南

     編輯:關於VC++

簡介

GPSLIB 是一個開源的 32 位元 Windows GPS 開發套件,提供 DLL、控制台程式與完整原始碼,支援 VB、VBA、C/C++、Delphi、Fortran 等所有可呼叫 Windows DLL 的開發環境。核心功能:GPS 接收器安裝/設定/移除、NMEA 解析、座標/速度/時間/衛星數取得、Unicode 全支援。

特色亮點

  • 純 Win32 API 風格介面,學習曲線極低
  • 完整原始碼開放,除錯可進入庫內部
  • 提供控制台程式 (.cpl + .exe) 供終端用戶設定 COM 埠、鮑率、校驗位等
  • 支援 ASCII / Unicode、Debug / Release 四種建置組態

安裝與部署

  1. 解壓縮 gpslib.zip 至任意目錄
  2. 使用 Visual C++ 5.0 以上 開啟 gps32.dsw 編譯產出 DLL、CPL、EXE
  3. 部署時需隨應用程式分發:GPSLIB.DLL(系統目錄或應用目錄)、控制台程式(必須放入系統目錄 system32)
  4. 僅分發 Release 版本;Debug 版本僅供開發除錯

建置組態對照表

組態GPSLIB DLL控制台 CPL控制台 EXE
ASCII DebugGPS103D.DLLGPS103D.CPLGPS103D.EXE
ASCII ReleaseGPS103.DLLGPS103.CPLGPS103.EXE
Unicode DebugGPS103UD.DLLGPS103UD.CPLGPS103UD.EXE
Unicode ReleaseGPS103U.DLLGPS103U.CPLGPS103U.EXE

核心 API 快速參考

控制台與裝置管理

  • BOOL GpsShowControlPanel() — 顯示 GPS 控制台
  • BOOL GpsCreateEntry(HWND hWnd) — 向導式新增接收器
  • DWORD GpsGetNumDevices() — 取得已安裝裝置數
  • DWORD GpsEnumDevices(LPGPSDEVINFO lpInfo, DWORD dwCount) — 列舉裝置設定
  • BOOL GpsDeleteEntry(LPCTSTR lpszEntry) — 刪除裝置
  • BOOL GpsRenameEntry(LPCTSTR lpszOld, LPCTSTR lpszNew) — 重新命名
  • BOOL GpsPropertiesDlg(HWND hWnd, LPCTSTR lpszEntry) — 顯示/編輯屬性

連線與資料讀取

  • HGPS GpsOpen(LPCTSTR lpszEntry) — 開啟連線,傳回控制碼(NULL 表預設裝置)
  • BOOL GpsClose(HGPS hEntry) — 關閉連線
  • BOOL GpsGetPosition(HGPS hEntry, LPGPSPOSITION lpPos) — 取得定位資料(建議 1~5 秒輪詢一次)
  • DWORD GpsGetVersion() — 取得庫版本(如 0x101 = v1.01)

輔助函式

  • BOOL GpsDeviceNameAlreadyExists(LPCTSTR lpszEntry) — 檢查名稱唯一性
  • void GpsShowAboutBox(HWND hWnd) — 顯示關於對話框
  • BOOL GpsGetDevice(LPCTSTR lpszEntry, LPGPSDEVINFO lpInfo) — 取得裝置設定
  • BOOL GpsSetDevice(LPCTSTR lpszEntry, LPCGPSDEVINFO lpInfo) — 更新裝置設定

關鍵資料結構

GPSDEVINFO — 裝置設定

typedef struct tagGPSDEVINFO {
    TCHAR szDeviceName[GPS_MaxDeviceName + 1];
    BOOL  bDefaultReceiver;
    WORD  wCommPort;           // COM 埠號
    DWORD dwCommBaudRate;      // 鮑率
    WORD  wCommDataBits;       // 資料位
    WORD  wCommParity;         // 校驗:GpsParityNone/Odd/Even/Mark/Space
    WORD  wCommStopBits;       // 停止位:GpsStopBits1/1Point5/2
} GPSDEVINFO;

GPSPOSITION — 定位資料(源自 NMEA GPRMC)

typedef struct tagGPSPOSITION {
    BOOL  bNorthing;           // 北緯 TRUE / 南緯 FALSE
    DWORD dwLatitude;          // 緯度
    BOOL  bEasting;            // 東經 TRUE / 西經 FALSE
    DWORD dwLongitude;         // 經度
    DWORD dwBearing;           // 方位角
    DWORD dwSpeed;             // 速度 (cm/hr)
    WORD  wFixYear, wFixMonth, wFixDay;
    WORD  wFixHour, wFixMinute, wFixSecond;
    WORD  nSatellites;         // 可見衛星數
    DWORD dwAntennaAltitude;   // 海拔 (cm)
    WORD  wQualityIndicator;   // 品質:GpsQualityFixNotAvailable/Fix/DifferentialFix
} GPSPOSITION;

未來改進規劃

  • 提供 MFC 封裝類別 (CGpsLib) 簡化 C++ 呼叫
  • 移除控制台程式對 MFC 依賴,縮減體積
  • 優化 DLL 載入速度與記憶體佔用
  • 支援多程式同時存取同一 GPS 裝置(類 TAPI 架構)

原始碼與範例

完整原始碼、Demo 程式與詳細註解已打包。歡迎下載整合至您的導航、車隊管理、測繪等應用中。

本文配套源碼

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved