Bonjour à tous,
Grâce à vos contributions j'ai développé un petit soft qui lit les données d'un GPS via le port série. J'ai déjà évoqué dans ces colonnes des problèmes de dysfonctionnement sur certains PC où l'on est obligé d'utiliser un émulateur série USB.
Le problème n'est pas reconnaitre le port série, TcomPort le fait très bien... Mais sur certains appareils je ne ramène aucune info. Le problème est à mon niveau car il existe un shareware (GPSDump) qui fonctionne parfaitement bien sur ces appareils.
J'ai donc décidé de creuser un peu plus le problème.
Le protocole est simple, j'envoie sur le port :
et le GPS doit me répondre une phrase ($PBRSNP,5030, not set ,05132,1.11*36#0A) comprenant son numéro de série et autres infos
Code : Sélectionner tout - Visualiser dans une fenêtre à part ComPort.WriteStr('$PBRSNP,*21'+#13#10);
Ma form contient un TComPort et un TComDataPacket configuré avec un startstring à $ et un stopstring à *. Dans 90% des cas aucun problème cela marche nickel.
Pour essayer d'analyser mon problème j'ai décidé de me passer du TComDataPacket et là surprise je n'arrive pas à ramener quoique ce soit ( sur une prise qui marche évidemment !!! ). J'ai pris à la lettre le code du tuto... nada....
Je fais l'envoi de la phrase citée plus haut et j'éxecute le code du bouton btnRecevoirSync du tuto
zéro caractères reçus... Etrange non ? J'ai en parallèle un espion de mon port série, et je voie bien que le GPS ne répond pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 begin // MAJ composants btnRecevoirSync.Enabled := False; Memo1.Lines.Add('Début envoi synchrone'); // Mise à jour du time out demandé ( valeur en sec ici 3 que x 1000 ) Comport.Timeouts.ReadTotalConstant := 3 * 1000; // Supression de ce qui traine dans le buffer d'entrée Comport.ClearBuffer(True,False); // Lecture bloquante de la longueur demandée ( ici 256 ) Long:=Comport.ReadStr(Chaine,5); // MAJ composants Memo1.Lines.Add('Fin envoi synchrone '+IntToStr(Long)+' caractère(s) reçu(s):'+Chaine); btnRecevoirSync.Enabled := True; end;
Quelqu'un a une idée ?
Partager