Favicon Svethardware.cz  Svět hardware   Fórum Favicon Svetaudia.cz  Svět audia Favicon TVFreak.cz  TV Freak   Fórum Favicon Digimanie.cz  Digimanie   Fórum   Galerie Společnost oXy Online s.r.o.
Zobrazené výsledky: 1 až 12 z 12

Téma: GPS+programove dotazovani na nej

  1. #1
    Nováček
    Registrace
    Jan 2007
    Příspěvků
    23

    zdarec,
    nezkousel jste nekdo programove dotazovat v PDA (PPC) s WM5 GPS modul aby vratil dane aktualni souradnice?
    S tim ze by jste si je pripadne ulozili a potom prenesly treba na www.mapy.cz, nebo jiny mapovy SW?

    nejlepe v C#, nebo VisualBasic
    Odpovídat lze po přihlášení

  2. #2
    Starousedlík SMob
    Registrace
    Jan 2004
    Příspěvků
    2,017

    Vw WM5+ je to velmi jednoduchy ukol.
    Staci pouzit intermediate driver pomoci API funkci GpsOpen, GpsGetPosition, GpsClose, GpsGetDeviceState.
    API funkce do C# dostanete pomoci P/Invoke - metaatribut DllImport.
    Odpovídat lze po přihlášení



  3. #3
    Nováček
    Registrace
    Oct 2007
    Příspěvků
    2

    Citace Původně odesláno od RStein
    Vw WM5+ je to velmi jednoduchy ukol.
    Staci pouzit intermediate driver pomoci API funkci GpsOpen, GpsGetPosition, GpsClose, GpsGetDeviceState.
    API funkce do C# dostanete pomoci P/Invoke - metaatribut DllImport.
    Da se někde najít bližší informace o implementaci těchto funkcí pro práci s GPS? Se C# začínám a na netu se mi nic podrobnějšího najít zatím nepodařilo.

    Díky za odpověď
    Odpovídat lze po přihlášení

  4. #4
    Nováček
    Registrace
    Jan 2007
    Příspěvků
    23

    Citace Původně odesláno od Haja111
    Citace Původně odesláno od RStein
    Vw WM5+ je to velmi jednoduchy ukol.
    Staci pouzit intermediate driver pomoci API funkci GpsOpen, GpsGetPosition, GpsClose, GpsGetDeviceState.
    API funkce do C# dostanete pomoci P/Invoke - metaatribut DllImport.
    Da se někde najít bližší informace o implementaci těchto funkcí pro práci s GPS? Se C# začínám a na netu se mi nic podrobnějšího najít zatím nepodařilo.

    Díky za odpověď
    Taktez se pridavam, byla by mozna nejaka mala ukazka ?
    Odpovídat lze po přihlášení

  5. #5
    Nováček
    Registrace
    Oct 2007
    Příspěvků
    2

    Citace Původně odesláno od temp
    Citace Původně odesláno od Haja111
    Citace Původně odesláno od RStein
    Vw WM5+ je to velmi jednoduchy ukol.
    Staci pouzit intermediate driver pomoci API funkci GpsOpen, GpsGetPosition, GpsClose, GpsGetDeviceState.
    API funkce do C# dostanete pomoci P/Invoke - metaatribut DllImport.
    Da se někde najít bližší informace o implementaci těchto funkcí pro práci s GPS? Se C# začínám a na netu se mi nic podrobnějšího najít zatím nepodařilo.

    Díky za odpověď
    Taktez se pridavam, byla by mozna nejaka mala ukazka ?
    Objevil jsem zatím tenhle poměrně kvalitní článek co se týče obsahu zdrojových kódu, ale zatím mu moc nerozumím... kdyby se našel nějaký dobrák a popsal tady jak pracovat s GPS hardwarem, byl bych mu moc vděčný :-*

    http://www.codeproject.com/KB/vb/Wri...ications1.aspx
    Odpovídat lze po přihlášení

  6. #6
    Starousedlík SMob
    Registrace
    Jan 2004
    Příspěvků
    2,017

    Pro C# potrebujete tyto deklarace.

    Kód:
            public const int LMEM_ZEROINIT = 0x40;
            [System.Runtime.InteropServices.DllImport("coredll.dll", EntryPoint = "#33", SetLastError = true)]
            public static extern IntPtr LocalAlloc(int flags, int byteCount);
    
            [System.Runtime.InteropServices.DllImport("coredll.dll", EntryPoint = "#36", SetLastError = true)]
            public static extern IntPtr LocalFree(IntPtr hMem);
    
    [DllImport("gpsapi.dll")]
            static extern IntPtr GPSOpenDevice(IntPtr hNewLocationData, IntPtr hDeviceStateChange, string szDeviceName, int dwFlags);
    
            [DllImport("gpsapi.dll")]
            static extern int  GPSCloseDevice(IntPtr hGPSDevice);
    
            [DllImport("gpsapi.dll")]
            static extern int  GPSGetPosition(IntPtr hGPSDevice, IntPtr pGPSPosition, int dwMaximumAge, int dwFlags);
    
            [DllImport("gpsapi.dll")]
            static extern int  GPSGetDeviceState(IntPtr pGPSDevice);
            #endregion
    
            #region PInvokes to coredll.dll
            [DllImport("coredll.dll")]
            static extern IntPtr CreateEvent(IntPtr lpEventAttributes, int bManualReset, int bInitialState, StringBuilder lpName);
    
            [DllImport("coredll.dll")]
            static extern int CloseHandle(IntPtr hObject);
    
            const int waitFailed = -1;
            [DllImport("coredll.dll")]
            static extern int WaitForMultipleObjects(int nCount, IntPtr lpHandles, int fWaitAll, int dwMilliseconds);
    
            const int eventSet = 3;
            [DllImport("coredll.dll")]
            static extern int EventModify(IntPtr hHandle, int dwFunc);
            
    
    l
    Soucasti WM 5 a 6 SDK v Samples je kompletni priklad na GPS, to se da zjistit rychleji, nez psani zoufaleckych prispevku sem nebo na moji soukromou adresu.. Rovnou rikam, ze na ne nedostanete odpoved a ze stale plati to, co jsem kdysi napsal.


    Chci ale zdůraznit, že v žádném případě už ode mě neobdržíte odpovědi na maily s technickými dotazy zaslané na moje soukromé emailové adresy. Hlavně poté, co jsem zredukoval počet svých příspěvků v odborných konferencích, začaly na moje adresy chodit maily, jejichž pisatelé ode mě chtěli rady z různých oblastí - od psaní severových ovládacích prvků přes webové služby k flashování MDA. Snažil jsem se na dotazy odpovědět a vždy jsem na konec mailu doplnil upozornění, že žádnou další radu takto přímo neposkytnu a žádal jsem každého, aby psal dále jen do konferencí, kde si jeho příspěvku může všimnout více lidí, kteří znají odpověď. Počet mailů ale stále rostl, a proto jsem se je rozhodl ignororovat, protože neznám žádný jiný účinný způsob, jak tazatele odradit. Snad moje rozhodnutí pochopíte, nejsem žádná soukromá poradna, ani nemíním suplovat support jiných firem.

    Pobavilo mě, že pár nespokojených individuí mi napsalo, jak si dovoluji neodpovídat na jejich dotazy, když jsem za to placen Microsoftem. Zamyslel jsem se nad sebou, zastyděl za svou roztržitost, kvůli níž jsem zapomněl, že jsem na čestném místě výplatní listiny Microsoftu, a jal jsem se kontrolovat své konto, abych zjistil, kolik jsem si za posledni dobu nahrabal bez práce. Začal jsem také radostně uvažovat nad tím, do jakých nových akcií ten z modrého nebe spadlý balík nacpu. Avšak ani po podrobné prohlídce všech pohybů na účtu jsem nenašel žádnou příchozí platbu od Microsoftu, takže mi ruměnec z tváře zmizel a stud vystřídala nasranost, že si mi někdy dovoluje diktovat na základě svých stupidních a nepodložených domněnek, co pro něj musím udělat. Někteří lidé jsou opravdu zvláštní tvorové a podle mé skromné a ještě neverifikované hypotézy je Bůh stvořil proto, aby zkoušel naši laskavost k bližnímu, kultivovanost v chování a sebeovládání, a tedy nám pomohl dotahovat k dokonalosti vlastnosti, jež nám zabraňují řešit konflikty nadávkami či inzultací dotyčného a činí tak náš svět alespoň občas "nejlepším ze všech možných světů".

    Samozřejmě mě soukromě kontaktovat můžete, ale v prvním příspěvku očekávám váš dotaz, kolik si účtuju za hodinu/vyřešený problém. Což myslím naprosto vážně.
    Odpovídat lze po přihlášení

  7. #7
    Starousedlík SMob
    Registrace
    Jan 2004
    Příspěvků
    2,017

    Haja111: Ad clanek na CodeProjectu: To je vyborny clanek od autora komercni knihovny pro Compact .Net Framework, ktera vetsinu problemu vyresi za vas.
    Nicméně v článku (i v jeho druém dílu) se neřeší komunikace přes GPS, ale parsování a vyhodnocování přijatých NMEA řetězců při již navázané komunikaci s GPS.
    K intermediate driveru jeste upozornim, ze ho uzivatel musi mit zapnuty v nastavenich a musite umet resit chyby ruznych vyrobcu (napr. Artemis ocekava jine velikosti struktur apod.). Vlastni komunikace pres serial je jistejsi, ale pro programatora narocnejsi postup.
    Takze googliste a podobna programatorska verbez, ktera umi jen kopirovat cizi kody, si vetsinou natluce usta
    Odpovídat lze po přihlášení



  8. #8
    Nováček
    Registrace
    Jan 2008
    Příspěvků
    4

    Zdravim.
    dříve než jsem si přečetl tudle diskuzi jsem našel spoustu materiálů na kterých bych své mizerné základy mohl rozšířit a pochopit jak to má fungovat.
    Kód co nabízí Microsoft ve svých samples jsem prošel a dosti mi pomohl v pochopení, ale problém je ten, že nejsem schopen ho na svém HTC P3300 s WM6 spustit, abych viděl nějaké výsledky, což mě odrazuje od samotného programování, protože jsem po pár dnech nějak nepřišel na příčinu problému. Snažil jsem se to procházet krok po kroku..port mi to otevře,ale dál už je to tak,že jako by nic nepřijímal a tady jsem se dočetl,že artemis počítá s jinými bloky či co.
    Kdyby někdo věděl kde je zakopaný pes či byl ochoten poslat nějaký funkční samplík tak bych se určitě nezlobil. Je mi v podstatě jedno co to vypíše..pro mě je hlavní, abych dostal nějaké data z GPS a pak už bych si s tím pohrál.
    Díky moc.
    Stuchlik.p@seznam.cz
    používám VS 2005 C#
    Odpovídat lze po přihlášení

  9. #9
    Nováček
    Registrace
    Jan 2008
    Příspěvků
    4

    takže ještě jedna připomínka k předchozímu textu.. podařilo se mi otevřít COM v mém případě COM4 a signalizační dioda mi signalizuje,že zařízení se snaží komunikovat přes GPS..
    pokusil jsem se tedy o čtení pomocí
    Kód:
    using system.io.ports
    public static SerialPort COM = new SerialPort(portName, baudRate, parity, dataBits, stopBits);
    COM.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
    private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
            { Invoke(updateDataHandler);}
    private void Form1_Load(object sender, EventArgs e)
            { updateDataHandler = new EventHandler(UpdateData); }
     void UpdateData(object sender, System.EventArgs args)
            { if (COM.IsOpen == true)
                { label5.Text = "Getting Data";
                   label5.Text = label5.Text + " " + COM.ReadExisting();
                   }
            }
    a tady se mi taky nic nedostává (nevypisuju,že tam na formu jsou tlačítka, které mi ten port otevřou)

    vyzkoušen výpis COM.BytesToRead.ToString() a vrácí to pořád 0
    toto jsem našel jako možné řešení komunikace,al mě to nijak nepomohlo
    COM.DtrEnable = true;

    výpis se zdaří pomoci
    COM.ReadLine;
    ale nastane tady problém s bufferem..
    Odpovídat lze po přihlášení

  10. #10
    Starousedlík SMob
    Registrace
    Jan 2004
    Příspěvků
    2,017

    PeterS: Ano, tohle je chyba na P3300 - negeneruje EV_RXCHAR signal.
    Zkuste v intervalech cist primo pres API ReadFile z COM portu:

    hFile je handle COM portu
    Kód:
    DllImport("coredll.dll", EntryPoint="ReadFile")] 
    
    
    public static extern bool ReadFile( 
    
    
    int hFile, 
    
    
    byte[] lpBuffer, 
    
    
    int nNumberOfBytesToRead, 
    
    
    ref int lpNumberOfBytesRead, 
    
    
    int lpOverlapped);
    Odpovídat lze po přihlášení

  11. #11
    Nováček
    Registrace
    Jan 2008
    Příspěvků
    4

    Citace Původně odesláno od RStein
    PeterS: Ano, tohle je chyba na P3300 - negeneruje EV_RXCHAR signal.
    Zkuste v intervalech cist primo pres API ReadFile z COM portu:

    hFile je handle COM portu
    Kód:
    DllImport("coredll.dll", EntryPoint="ReadFile")] 
    
    
    public static extern bool ReadFile( 
    
    
    int hFile, 
    
    
    byte[] lpBuffer, 
    
    
    int nNumberOfBytesToRead, 
    
    
    ref int lpNumberOfBytesRead, 
    
    
    int lpOverlapped);
    čau, dík určitě by mi to mohlo pomoct,ale mohl by jsi být trošku konkrétnější..
    prostě to nějak trošku víc rozepsat..jestli to jde. Jinak jsem četl něco,že pomocí toho co je v SDK samples se to dá taky rozjet,ale chce to změnit 2 věci,ale nějak se mi to nepodařilo i po mém zásahu, ale jak jsem naznačil jsem "začátečník".. takže bych tipl,že jsem někde udělal chybu ops: :sarcastic:
    Kdyby jsi třeba věděl věděl jak na to a napsal bys to tady byl bych ti vděčný. A myslím,že nejen já. Předem děkuji.
    Odpovídat lze po přihlášení

  12. #12
    Nováček
    Registrace
    Jan 2008
    Příspěvků
    4

    tak nakonec jsem to teda vymyslel takhle:
    Kód:
    namespace testp3300
    {
        class hlavni
        {
            static void Main(string[] args)
            {
                DateTime endDT = DateTime.Now.AddSeconds(80);
                
                string data;
                StreamWriter sw = new StreamWriter("dataGPS.txt", true);
                ASCIIEncoding encoding = new ASCIIEncoding();
                int count = 0;
                byte[] buffer = new byte[1000];
                GPS Gps = new GPS();
                try
                {
                    Gps.openPort();
                    
                    while (DateTime.Now < endDT)
                    {
                        buffer[count] = (byte)GPS.COM.ReadByte();
                        count++;
       
                        if (count == 1000)
                        {
                            
                                sw.WriteLine(encoding.GetString(buffer,0,1000));
                                
                            
                            count = 0;
                        }
    
                        //System.Threading.Thread.Sleep(10);
                    }
                    
                }
                catch (Exception ex)
                {
                    sw.WriteLine(ex.ToString());
                }
            
                sw.Close();
                Gps.closePort(); 
    
            }
          
        }
    }l
    snad to někomu pomůže ale můžu potvrdit,že to funguje a vypisuje to co má. Je to jen "test"..určitě finální verze bude vypadat jinak, ale kdyby měl někdo obdobný problém tak na HTC P3300 s WM6 to funguje. Tak je alspoň čeho se chytit.
    Odpovídat lze po přihlášení



Podobná témata

  1. Reakcí: 1
    Poslední příspěvek: 22-08-2008, 00:08
  2. Jak programově rozpoznat mobilní číslo?
    Od Mobex v sekci Programování
    Reakcí: 1
    Poslední příspěvek: 18-06-2008, 14:35
  3. Dotazovani na pripojeni pres GPRS
    Od K4N3C_ce4you v sekci Zbývající PPC
    Reakcí: 8
    Poslední příspěvek: 24-08-2006, 11:07