總網頁瀏覽量

2012年4月7日 星期六

GPS NMEA 訊息結構


GPS NMEA :NMEA是GPS 的標準protocol,通常是ASCII的字串
每一段句子以”$”為起始位置,以16進位控制碼”13”,”10”為結尾,即”<CR>” ,”<LF>”
”<CR>”: Carriage Return 游標移到最左邊或歸位
”<LF>”: New Line Feed 換行
GGA, RMC, GSA, GSV,GLL, VTG

$GPRMC,053322.682,A,2502.6538,N,12121.4838,E,0.00,315.00,080905,,,A*6F  (RMC)最小導航資訊
053322.682
UTC Time : 格式是hhmmss.sss所以是5:33:22.682
A
定位狀態,有效為A,無效為V
2502.6538
緯度,格式: 度度分分.分分分分
N
北緯(北半球為N,南半球為S)
12121.4838
經度,格式: 度度度分分.分分分分
E
東經(東半球為E,西半球為W)
0.00
速度,單位海裏(knots)
315.00
方向
080905
日期,格式是ddmmyy(日日月月年年)

磁極變量,單位為度(degrees)

磁極變量方向,東或西
*6F
Checksum檢查位元


Android GPS framework


GpsLocation結構: 表示定位相關資訊
typedef struct {
    // set to sizeof(GpsLocation)
    size_t             size;
    //旗標位元
    uint16_t           flags;
    //緯度
    double          latitude;
    //經度
    double          longitude;
    //高度
    double          altitude;
    //速度
    float              speed;
    //方位
    float              bearing;
    //精準度
    float              accuracy;
    //時間戳記
    GpsUtcTime            timestamp;
} GpsLocation;


GpsStatusValue定義: 表示GPS晶片狀態
typedef uint16_t GpsStatusValue; //儲存GPS狀態 下面狀態的 0~4
#define GPS_STATUS_NONE             0
#define GPS_STATUS_SESSION_BEGIN    1//啟動導航
#define GPS_STATUS_SESSION_END      2//停止導航
#define GPS_STATUS_ENGINE_ON        3//未啟動導航
#define GPS_STATUS_ENGINE_OFF       4//電源關閉


GpsSvInfo結構: 描述衛星狀態
typedef struct {
    size_t  size;
    int       prn; //偽亂碼 即衛星編號
    float    snr;//衛星訊號
    float    elevation;//高度
    float   azimuth;//方位角
} GpsSvInfo;


GpsInterface結構: 連通上下層 為主要GPS的架構
typedef struct {
    size_t          size;
    int   (*init)( GpsCallbacks* callbacks );//初始化 並設定回調函數
    int   (*start)( void );//啟動導航
    int   (*stop)( void ); //關閉導航
    void  (*cleanup)( void );
    int   (*inject_time)(GpsUtcTime time, int64_t timeReference, int uncertainty);//插入目前時間
    int  (*inject_location)(double latitude, double longitude, float accuracy);//插入位置資訊
    void  (*delete_aiding_data)(GpsAidingData flags);//刪除輔助資訊
    int   (*set_position_mode)(GpsPositionMode mode, GpsPositionRecurrence recurrence, uint32_t   
           min_interval, uint32_t preferred_accuracy, uint32_t preferred_time);//設定位置模式
    const void* (*get_extension)(const char* name);//取得擴充介面
} GpsInterface;





2012年4月6日 星期五

linux 安裝問題 解決


~$ sudo apt-get install vim
正在讀取套件清單... 完成
正在重建相依關係
正在讀取狀態資料... 完成
有些套件無法安裝。這可能意謂著您的要求難以解決,或是若您使用的是
unstable
發行版,可能有些必要的套件尚未建立,或是被移出 Incoming 了。
以下的資訊或許有助於解決當前的情況:

解決:
sudo apt-get purge vim
sudo apt-get update
sudo apt-get -f install
sudo dpkg --configure -a
sudo apt-get autoremove
sudo apt-get clean
sudo apt-get check

2012年3月30日 星期五

argc argv

argc argc用法

int main(int argc, char **argv)

假設執行為:  test.exe  a b c

則輸出為:   argv[0] = test.exe, argv[1] = a, argv[2] = b, argv[3] = c

argc = 4

2012年3月27日 星期二

savedInstanceState Bundle 存值取值


savedInstanceState.putParcelable("名稱 A", 物件_A);
savedInstanceState.putInt("名稱 B", 物件_B);
物件_C.writeToBundle(savedInstanceState, "名稱 C");
物件_D.writeToBundle(savedInstanceState, "名稱 D");


super.onRestoreInstanceState(savedInstanceState);
物件_A = savedInstanceState.getParcelable("M名稱 A");
物件_B = savedInstanceState.getInt("名稱 B");
物件_C.readFromBundle(savedInstanceState, "名稱 C");
物件_D.readFromBundle(savedInstanceState, "名稱 D");