IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

Choix de langage pour programme GPS - émission de donnée par USB


Sujet :

Langages de programmation

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 31
    Points : 10
    Points
    10
    Par défaut Choix de langage pour programme GPS - émission de donnée par USB
    Bonjour à tous,

    Voila j'aimerais me lancer dans un projet GPS.

    J'ai récemment acheter un GPS qui tourne sous Windows CE 6.0

    J'aimerais développer un Soft perso qui se connecte au GPS (chip SIRF III) et enregistre dans un fichier dans un premier temps.

    Je ne sais pas trop quel langage choisir, sachant qu'il en faudrait un ou je puisse développer assez facilement. De plus j'aimerais par la suite enregistrer dans une base de donnée la position plus certaines info qui seront recuperer sur le gps par le suite.

    J'ai pu voir sur MSDN qu'il y a avait une classe serial Port, qui est valable sous C# et C++ entre autre.

    Lequel de ses deux langages me permetra t il de facilement recuperer la position GPS de la trame, pour ensuite l'enregistrer dans une base de donnée ( surement creer sur access)

    Merci à tous pour votre aide

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 271
    Points : 491
    Points
    491
    Par défaut
    Avant de te lancer dans le décodage du signal GPS, tu pourrait tout simplement utiliser hyperterminal pour voir en clair (code ASCII) les codes envoyés par ton GPS a travers le port série.
    Pour tester ta connexion GPS :
    Ouvrir HyperTerminal:
    Démarrer > Programmes > Accessoires > HyperTerminal
    ou
    Démarrer > Programmes > Accessoires > Communications > HyperTerminal.
    Mettre 'Connexion GPS' pour le nom de la connexion et sélectionner une icone. Cliquer sur OK.
    Sélectionner le port COM ou le GPS est connecté. Cliquer sur OK.
    Spécifier la vitesse, parité et bit stop qui correspondent au paramètres de ton récepteur GPS. Cliquer OK.
    Si ton GPS est a la norme NMEA 0183, alors les parametres sont les suivants :
    Bit rate 4,800
    Bit données 8
    Parity Aucun
    Bits Stop 1
    Handshake Aucun
    Pour savoir si le GPS envoi bien des données a travers le port série dans la fenêtre de HyperTerminal, les phrases ASCII NMEA doivent être lisibles. Si tu n'as pas de donnée ou bien si tu as des données illisibles cela veut dire un problème de connexion.
    tu devra avoir des phrases du genre
    $GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47

    Si tout le test se passe bien, tu pourrais écrire un programme sous C# et C++ en suivant l'exemple de MSDN en décodant chaque ligne suivant le protocol GPS.
    Dans c#, Dans la palette Composants, il y'a le composant Serial Port, tu le met sur une fiche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Windows.Forms;
    using System.IO.Ports;
    
    public static void Main()
    {
    string messageGPS;
    
    serialPort1.PortName="COM1";
    serialPort1.BaudRate=4800;
    serialPort1.DataBits=8;
    serialPort1.Parity=Parity.None;
    serialPort1.StopBits= StopBits.One;
    serialPort1.Handshake = Handshake.None;
    serialPort1.DtrEnable = true
    
    serialPort1.ReadTimeout = 500;
    
    serialPort1.Open();
    
    
     while (true)
        {
            messageGPS = serialPort1.Readline();
            Console.WriteLine(messageGPS);
         // decodage de messageGPS
        .....
    
        }
    serialPort1.Close();
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 271
    Points : 491
    Points
    491
    Par défaut
    Si tu es obligé de travailler qu'en mode USB, tu pourrais utiliser la bibliothèque SharpUSBLib

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    Tout d'abord merci beaucoup pour ta reponse .

    J'ai en effet tenter de realiser un programme C# en y placant le module serial Port .

    J'ai deployer la solution sur le GPS qui tourne sous windows CE sans probleme.

    Le gros problem c'est que visual studio ;ais des erreurs sur mes points d'arret. " arret impossible.Le module specifie n'a pas ete charge".

    Le programme qui tente d'ouvrir le port serie du GPS plante a l'ouverture du port et un enorme message s'affiche remplie de IO exception mais sans m'indiauer reelement d'ou provient l'erreur...Et le debuggage etant impossible cela devient difficile d'en savoir plus pour un novice comme moi.

    L'idee de Hyperterminal est bonne ! Cependant je ne sais pas si il me sera possible juste en connectant mon GPS sur le pc par USB d'acceder par hyperterminal au pour serie du gps . Je veux dire que le gps est surement cable sur une entre sortie du processeur du GPS et pas directment sur une sortie serie direct... Si j'ai bien compris ta proposition . Je verifierais ce soir tout de meme cela.

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    Voici le screen du problem de Debug si ca peux donner des idees...


    http://www.hostingpics.net/viewer.ph...2Sanstitre.png

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 271
    Points : 491
    Points
    491
    Par défaut
    Quelle est la plateforme cible de l'application que tu veux developpez? Je veux dire ton application tournera sur PC connecté a ton GPS a travers un cable ou bien elle tournera directement sur ton GPS sans besoin de PC?

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    Mon soft tournera sur le GPS en "embarque".

    L'OS embarque est un windows CE 6.0.

    Concernant le déploiement cela fonctionne mais je n'arrive pas a debugger pour l'instant, mon programme ne s'arrête pas sur les points d'arrêts...

    Concernant ces problemes, un sujet a était spécifiquement ouvert ici:

    http://www.developpez.net/forums/d10...sharp-windows/

    Il y a un screen shot de mon problème aussi.

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 271
    Points : 491
    Points
    491
    Par défaut
    As-tu deja consulter ces fichiers exemples en c# qui se trouvent dans le repertoire de "Windows CE Tools"?

    C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Samples\Cs\Gps\Gps.sln

    C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Smartphone SDK\Samples\Cs\Gps\Gps.sln

  9. #9
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    oui effectivement, cependant j'avais rencontrer des difficultés avec le sln, je penses que je vais réessayer ce soir, je te tiens au courant des que je peux

    Merci

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 271
    Points : 491
    Points
    491
    Par défaut
    Pour le debug, tu pourrais aussi passer par la DeviceEmulator, les données GPS seront dans un fichier texte au lieu de l'entrée série a travers le GPS Intermediate Driver. Le lien pour expliquer la démarche est le suivant lien

  11. #11
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    Super Merci pour l'astuce. Il me semble si je me souviens bien que j'qvais rencontrer des problemes car mon GPS n'est pas "vu" comme un smartphone. J'avais aussi eu des problemes d'installation du SDK ... bref beaucoup de problem qui ne m'ont pas permis d'aller tres loin avec le sln...

  12. #12
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    Bon j'ai avancé ... J'arrive a déployer a débugger en créant un projet Smart device mais C++ cette fois ci.

    Avec ce projet je peut choisir ou déployer l'exe , et cette fois ci je peux sélectionner la carte SD et j'arrive à présent a mettre des break points qui fonctionne.

    J'aimerais essayer d'ouvrir le port serie du gps avec le C++ cette fois ci, je ne sais pas trop s'il existe deja une dll pour ca je vais chercher.

    Tant pis pour le c# pour l'instant...

  13. #13
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 271
    Points : 491
    Points
    491
    Par défaut
    Ton GPS doit surement avoir un virtual serial device driver qui émule le port COM et te permet de voir gps comme un COM. Meme le telephone le plus simple en possede un. L'accés au GPS se fait en utilisant CreateFile, ReadFile et CloseHandle.

  14. #14
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    Oui bien sûr fab256, je le connais dailleurs 5 com1 4800baud, no handshake etc...) mais je voulais juste dire qu'en branchant par USB mon GPS, active Synch se lance mais ce n'est pas pour autant que je vois dans mon gestionnaire de peripherique dans le menu Port (COM et LPT) le gps.

    A present qu ej'arrive a debuggé je dois trouver comment me connecter au port COM en C++. Et aussi comment creer un nouveau win fom dans mon projet C++ car hier ca n'a pas fonctionner.

    Merci pour le support c'est vraiment très sympa.

  15. #15
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    J'ai mieux regarder dans les péripheriques, et effectivement il y a "Sirf GPS HH" , il est sur le : "port_#0001,HUB_#0007"

    Du coup je sais pas si c'est possible de se connecter dessus avec l'ordi pour avoir la trame mais c'est deja bon signe

  16. #16
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 271
    Points : 491
    Points
    491
    Par défaut
    Pour un premier temps concentre-toi sur le mode Console, c'est largement suffisant pour une phase de test, surtout que ca ne consomme pas trop de ressources. Sur ton GPS, y'a surement un paneau de control GPS Intermediate Driver, regarde-le.
    le GPS Intermediate Driver te permet d'acceder a ton GPS de deux manieres, une avec le code GPS traduit (parsed mode), et une en mode non traduit (raw data).
    Le mode traduit propose fonctions:
    GPSOpenDevice
    GPSGetPosition
    GPSGetDeviceState
    GPSCloseDevice

    pour connaitre le port COM utilisé, regarde dans la base de registre la clé HKEY_LOCAL_MACHINE\System\CurrentControlSet\GPS Intermediate Driver\Drivers.
    dans cette clé tu trouvera une entrée CurrentDriver.

    Par exemple si le driver GPS courant est “GPSOneDevice” alors la clé sera HKEY_LOCAL_MACHINE\System\CurrentControlSet\GPS Intermediate Driver\Drivers\GPSOneDevice.

    sous cette clé, l'entrée “InterfaceType” et “CommPort” determine le port COM port et le type.

    si l'entrée CommPort a comme valeur COM4, le fichier pour la fonction CreateFile sera “$device\COM4:”.

    La fonction ReadFile retournera la chaine de caractères sous format NMEA.

  17. #17
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    Salut à tous

    Bon, j'ai des nouvelles qui vont nous permettres d'avancer dans de meilleurs conditions. Sur les conseils averties d'un professionel windows du forum MSDN, le debug en c# pour les smart device ne fonctionnent pas correctement c'est un peu compliquer de le faire tourner, il m'a donc conseiller de travailler sous visual 2008, ce que j'ai fait.

    J'ai donc re créer un projet Smart device , C#. Compact Framework utilisé : 3.5, comme celui installé en ROM dans mon GPS.

    J'arrive à le déployer sur ma carte SD et a debugger !!! De quoi partir sur de bonne base pour la suite.

    J'ai donc ajouter sur le win form principal l'objet graphique de la toolbox, Serial Port.

    J'ai ajouter dans mon code , SerialPort;Open().

    Le problème que j'ai à présent, est une IO exeption qui se lève. Je ne sais pas encore pourquoi ni si c'est normal. Ai- je quelque chose de spécifique à faire sur le GPS à présent ? ( Merci Fab pour ton soutient ca fait franchemnt plaisir, je me sens beaucoup moins seul lool )

  18. #18
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    De plus j'ai essayer d'aller explorer uin peu le driver du coté PC, voici une image de ce que j'ai pu avoir comme info, cela peu peu etre m'aider? Fab256, c'était cela dont tu me parlais precedement ?


  19. #19
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 271
    Points : 491
    Points
    491
    Par défaut
    Si tu utilise SerialPort.Open() ca veut dire que tu connais le nom du port COM, pourquoi ne pas faire le meme test avec hyperterminal tout simplement juste pour confirmer les parametres de connection?

  20. #20
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    Oui c4est vrai... je check ca ce soir en rentrant.

    Je me suis pas mal renseigner sur le forum MSDN et le probleme est connu depuis un moment apparement, sans pour autant y avoir de reelle solution.

    Certain contourne le problem en scrutant a l'aide d'un timer qui appelle le fonction serial.read toute les 20ms.

    J'espere qu'on trouvera ensemble une auter solution parce que ca ne m'a pas l'air terrible comme ca...

    En attendant, je voulais comprendre l'histoire des registres. Je dois aller dans tousles programmes/VS2008 et lancer le remote registry tool puis me connecter a mon appareil pour avoir access a ses registres pour ensuite les configurer pour donner la possibilite a mon soft d'acceder au port com c'est ca fab?

Discussions similaires

  1. Choix de langage pour petit programme - vérification de noms de fichiers
    Par hardcorepierre dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 13/09/2011, 12h49
  2. Conseil choix d'un langage pour programmer?
    Par Elammath dans le forum Débuter
    Réponses: 7
    Dernier message: 26/06/2008, 22h30
  3. Réponses: 4
    Dernier message: 29/07/2007, 10h28
  4. Aide sur choix de langage de programmation pour PC et Mac
    Par benouille69 dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 11/11/2006, 18h30
  5. Choix de langage pour programme de gestion de pharmacie
    Par manalBxl dans le forum Windows
    Réponses: 10
    Dernier message: 07/11/2006, 10h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo