none
讀取GPS訊號 RRS feed

  • 問題

  • vista x64
    vs 2008
    c#

    各位前輩:

    第一次接觸關於GPS的部份
    已經有觀看過葉佰蒼老師的教學影片
    利用Settings.exe將Program Port說為COM5
    Hardware Port為None
    Hardware Port Baud Rate為19200
    並有勾選Manage Automatically
    模擬器為CHT Windows Mobile 6 Classic
    其週邊裝置下的序列埠都未設定

    另也由此取得bauann前輩所給測試程式

    using System;
    using System.Linq;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.IO.Ports;
    using System.IO;

    namespace SmartDeviceProject1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            SerialPort sp;
            string strTmp = "";
            byte[] B = new byte[200];
            int intReturn = 0;

            private void button1_Click(object sender, EventArgs e)
            {
                sp = new SerialPort();
                sp.BaudRate = 19200;
                sp.DataBits = 8;
                sp.Handshake = Handshake.None;
                sp.StopBits = StopBits.One;
                sp.Parity = Parity.None;
                sp.ReadTimeout = 10000;

                foreach (string s in SerialPort.GetPortNames())
                {
                    sp.PortName = s;

                    try
                    {
                        sp.Open();

                        if (sp.IsOpen == true)
                        {
                            System.Threading.Thread.Sleep(200);
                            intReturn = sp.Read(B, 0, B.Length);

                            if (intReturn > 0)
                            {
                                strTmp = Encoding.ASCII.GetString(B, 0, intReturn);
                                if (strTmp.IndexOf("$GP") >= 0)
                                {
                                    textBox2.Text = sp.PortName;
                                    textBox1.Text = strTmp;
                                }
                            }
                        }
                        sp.Close();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                        if (sp.IsOpen) sp.Close();
                    }
                }
            }
        }
    }

    如果不設定ReadTimeout
    程式會當掉

    如果有設ReadTimeout,則會逾時
    並出現IOException例外處理


    不知是否模擬器是否有設定錯誤
    我應從何處下手了解

    2009年3月30日 上午 09:22

解答

  • Hi,
    我的機子也是這樣,重開之後就會變成"無",但其實是有的,只要設定一次就可以了;重點是硬體那邊的號碼一定要設對,這樣才會通。以你目前的情形來看,我比較傾向是硬體那邊設定有問題,你再確認看看,先用papago試到可以正常收到訊號;真的都不行那就要考慮是不是要把機子回覆到出廠設定了,回覆出廠設定之後就不要去設外部GPS了,先測papago跟程式。
    態度決定一切 ! - blog : http://bauann-makeit.blogspot.com/
    • 已標示為解答 meganHsu 2009年4月1日 上午 08:37
    2009年3月31日 上午 09:52
    版主

所有回覆

  • Hi meganHsu,

    JanYeh & Bauann 提供的教學和程式碼,應該都不會有太大的問題,
    主要的問題是在模擬器..請使用實體機器且具有GPS模組。

    每天都有進步的人值得敬重
    2009年3月30日 上午 09:31
  • 前輩:

    我有試著直接將程式封裝成CAB檔
    丟到我的機子上
    HTC Touch™ 3G
    Mobile 6.1 Professional
    CE OS 5.2.19974
    內建GPS
    不知是否還需要設定外部GPS

    建立專案時
    平台為Windows Mobile 6 Professional SDK
    .NET Compact Framewrk版本為2.0
    裝置應用程式
    封裝時只加入了主要輸出檔

    執行程式後
    會出現"由於找不到包含錯誤訊息的選擇性資源組件,因此無法顯示錯誤訊息"

    不好意思
    第一次接觸GPS程式
    另想請教前輩
    關於這方面的基本資訊可由那邊得知
    我有在MSDN找到GPS Application的介紹
    但看的一頭霧水
    2009年3月30日 上午 10:16
  • Hi,
    ReadTimeOut是應該要加的,不然會不知道要等到什麼時候;另外我看你有加入Linq的命名空間?所以是用compact framework3.5?我建議你把機子跟PC用ActiveSync連上之後直接部屬過去,跑偵錯,單步執行觀察一下問題是在哪邊。

    我偵測GPS的程式碼在我的機子(TyTN 2, WM6/WM6.1)上面跑是正常可以偵測到GPS的資料,但板上一些網友似乎都反應沒有作用,我在想會不會是compact framework的關係,可以把開發電腦上的compact framework丟到機子上面重新安裝、測試看看是不是會有不同的結果。
    態度決定一切 ! - blog : http://bauann-makeit.blogspot.com/
    2009年3月30日 上午 10:29
    版主
  • 前輩:

    我是用VS2008
    開發環境是有安裝compact framework3.5

    但在建立專案時
    平台為Windows Mobile 6 Professional SDK
    .NET Compact Framewrk版本為2.0


    再之前我有在機子上使用popogo,完全沒問題
    但現在我連papago都定位不到
    不知是否是因為這樣
    2009年3月31日 上午 02:47
  • Hi,
    你有沒有在機子上面有設過"外部GPS"的設定?有的話重新設定一次看看;先確認papago可以正常抓到,之後再來測試你的程式。
    態度決定一切 ! - blog : http://bauann-makeit.blogspot.com/
    2009年3月31日 上午 03:34
    版主
  • 前輩:

    機子上的外部GPS設定
    GPS程式連接埠為com4
    GPS硬體連接埠為無
    傳輸速率為4800
    勾選自動管理GPS

    並且重新軟開機
    但PAPAGO還是抓不到
    已經抓了十分鐘之久
    還是一片空白
    就連最基本的日期/時間也沒有

    是否需要恢復原廠設定
    2009年3月31日 上午 03:51
  • Hi,
    硬體連接埠那邊要設定,你記不記得你原先沒用"外部GPS"之前是設定多少?硬體那邊要設定成那個號碼;其實外部GPS感覺有點像虛擬com,他是把硬體的GPS COM接過來,去抓取GPS訊號,而當你其他程式(例如papago或是其他AP)則是對"外部GPS"這個虛擬COM去要資料,而不是直接對GPS模組,借由這個方式來share gps的資料給各個程式。
    態度決定一切 ! - blog : http://bauann-makeit.blogspot.com/
    2009年3月31日 上午 04:52
    版主
  • 前輩:

    我的機子是內建GPS接收器
    之前就未設定硬體連接埠

    剛設定後(未軟開機)
    再開啟PAPAGO還是抓不到訊號
    又回頭看了外部GPS的設定
    結果硬體連接埠的值又變成了無
    2009年3月31日 上午 07:16
  • Hi,
    我的機子也是這樣,重開之後就會變成"無",但其實是有的,只要設定一次就可以了;重點是硬體那邊的號碼一定要設對,這樣才會通。以你目前的情形來看,我比較傾向是硬體那邊設定有問題,你再確認看看,先用papago試到可以正常收到訊號;真的都不行那就要考慮是不是要把機子回覆到出廠設定了,回覆出廠設定之後就不要去設外部GPS了,先測papago跟程式。
    態度決定一切 ! - blog : http://bauann-makeit.blogspot.com/
    • 已標示為解答 meganHsu 2009年4月1日 上午 08:37
    2009年3月31日 上午 09:52
    版主
  • 前輩:

    謝謝前輩的指導
    我先再努力的試試看
    真的不行就要回復出廠值了
    2009年4月1日 上午 06:15
  • 前輩:

    我將機子直接回復出廠值
    外部GPS沒有去設定
    (原預設值GPS程式連接埠為com4、GPS硬體連接埠為無、傳輸速率為4800、勾選自動管理GPS)

    PAPAGO就可以用了
    測試程式也抓得到值了

    果然是硬體方面的問題

    大大的感謝前輩的熱心指導 ^^

    2009年4月1日 上午 08:31