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

Lazarus Pascal Discussion :

Accès RS232 d'un GPS sous Raspberry PI [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 85
    Par défaut Accès RS232 d'un GPS sous Raspberry PI
    Bonjour,
    J'ai un module GPS sous RS232 branché sur mon Raspberry Pi3, avec le petit script suivant sous Python, cela affiche bien les trames NMEA qui arrivent:
    Code python : 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
    #!/usr/bin/env python
    import time
    import serial
     
    ser=serial.Serial(
    port='/dev/ttyS0',
    baudrate = 9600,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS
    )
    counter=0
     
    while 1:
    	x=ser.readline()
    	print x

    Par contre impossible de lire quoi que ce soit avec Lazarus et synaser de Synapse, voila le code:
    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
    var
      Form1: TForm1;
      ser:TBlockSerial;
     
    implementation
     
    {$R *.lfm}
     
    { TForm1 }
     
    procedure TForm1.FormCreate(Sender: TObject);
    var s:string;
    begin
      s:='/dev/ttyS0';
      ser:=TBlockSerial.Create;
      ser.Connect(s);
      ser.config(9600,8,'N',SB1,false,false);
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      s:ansistring;
    begin
        while true do
        begin
          s:=ser.Recvstring(2000);
          LabelGPS.caption:=s;
       end;
    end;
    C'est du archi simple, brut de fonderie pour tester le port com, mais cela me renvoie systématiquement une chaine s nulle.
    Des idées?

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 941
    Billets dans le blog
    6
    Par défaut
    lu ici : synaser.TBlockSerial
    function Recvstring(timeout: integer): AnsiString; virtual;

    This method waits until a terminated data string is received. The string is terminated by a CR/LF sequence. The resulting string is returned without the terminator (CR/LF)! If no data is received within the Timeout (in milliseconds) period, LastError is set to ErrTimeout.

    If ConvertLineEnd is used, then the CR/LF sequence may not be exactly CR/LF. See the description of ConvertLineEnd.

    This method serves for line protocol implementation and uses its own buffers to maximize performance. Therefore do NOT use this method with the RecvBuffer method to receive data as it may cause data loss.
    property ConvertLineEnd: Boolean read FConvertLineEnd Write FConvertLineEnd;

    Indicates if non-standard line terminators should be converted to a CR/LF pair (standard DOS line terminator). If True, line terminators CR, single LF or LF/CR are converted to CR/LF. Defaults to False. This property has effect only on the behavior of the RecvString method.
    La chaîne envoyée est-elle bien une AnsiString terminée par CRLF ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 251
    Par défaut
    hello,
    mon composant lazarus Tlazserial a justement comme exemple un simulateur , recepteur GPS série. Il est basé sur synaser.
    voir ici

    Ami calmant, J.P

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 85
    Par défaut
    Une trame NMEA se termine toujours par CR/LF.
    J'ai changé un chouia le code pour avoir une eventuelle erreur. J'obtiens:
    'Instance not yet connected'!!!!!!!
    Je ne comprends pas.

  5. #5
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 941
    Billets dans le blog
    6
    Par défaut
    Peut-être faut-il d'abord configurer, puis connecter. Voire tester si Connected si Connect n'est pas une fonction avec un code de retour.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 85
    Par défaut
    La doc de l'unit synaser dit au sujet de la methode de configuration:
    Reconfigure communication parameters on the fly. You must be connected to port before!

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 85
    Par défaut
    TROUVE!!!
    En fait je lançais systématiquement mon script Python pour voir si le GPS était bien connecté, visiblement celui ci ne referme pas le port série en étant tué. Donc si je teste en direct mon programme ça marche, c'est vraiment tout C..
    Merci quand même de vos messages.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. accès multiples à un fichier crypté sous EFS
    Par digital prophecy dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 28/06/2006, 13h52
  2. Réponses: 10
    Dernier message: 30/12/2005, 20h08
  3. Accès aux base de données sous Delphi 7 Edition Studio Perso
    Par renorx dans le forum Bases de données
    Réponses: 4
    Dernier message: 16/02/2005, 14h24
  4. Chemin d'accès des fichiers dans des sous rep
    Par Le Veilleur dans le forum C++Builder
    Réponses: 4
    Dernier message: 17/11/2004, 14h37
  5. [ADRESSAGE][DEBUTANT]Accés à une machine dans un sous-réseau
    Par Milark dans le forum Développement
    Réponses: 4
    Dernier message: 26/03/2004, 09h45

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