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

API, COM et SDKs Delphi Discussion :

Port RS232 et chargement d'un soft


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 18
    Par défaut Port RS232 et chargement d'un soft
    Bonjour,

    1)
    Je dois programmer un soft pour un C167, ce C167 est un microcontrolleur muni d'une flash.
    Je dois envoyer par un logiciel sous delphi le code compilé du C167 pour mettre à jour son soft sur le port RS232 .

    J'aimerais avoir votre avis sur quel composant à utiliser sachant qu'il me semble que CPort permet d'envoyer seulement du texte.

    De plus je ne sais pas comment décomposé mon soft pour C167 en binaire pour l'envoyer par la RS232.

    2)
    Je doit créer un espion pour la liaison RS232 pour récupérer ce qu'il se passe sur la liaison RS232. Sachant que ce qui sera envoyer sur la liaison série ne sera pas de l'ascii.


    Je vous remercie d'avance de votre aide

  2. #2
    Membre émérite
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Par défaut
    1) CPort marche très bien, même pour du binaire
    2) Quel est ton problème ?
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  3. #3
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    2) Essaie http://www.sysinternals.com/ntw2k/freeware/portmon.shtml
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  4. #4
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 18
    Par défaut
    Mon problème est que je ne vois pas comment je dois envoyer le programme. Il faut que je puisse envoyer le programme et le récupérer de l'autre côté...

    Sinon pour CPort lorsque l'on fait un Write on peut seulement envyer du texte non ?

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par chrisis
    Mon problème est que je ne vois pas comment je dois envoyer le programme. Il faut que je puisse envoyer le programme et le récupérer de l'autre côté...
    Il te faut un soft de chargement de l'autre côté, c'est ce que l'on appelle un bootstrap. Tu utilises soit une manip matérielle (genre strap sur un cavalier) pour passer en mode programmation au démarrage, soit un truc logiciel (réception de caractères en rafale au démarrage du processeur), etc...

    Principe :
    - Trouver une vitesse fiable et commune aux deux machines. Pour une vitesse maximale, je conseille 115.200, 8 bits de données, pas de parité, 1 bit de stop et pas de contrôle de flux.
    - Vérifier si l'on demande un téléchargement ou pas : test de la valeur d'un GPIO, vérification de réception d'une clé magique sur la LS, etc...
    - Si oui : mode programmation.
    - Si non : exécution du programme principal. Ceci demande à reloger le programme principal "plus haut" dans la Flash, de manière à laisser de la place pour coder le bootstrap et que les deux programmes n'interfèrent pas entre eux.

    Mode programmation :
    - Transférer des trames adaptées à la taille de la RAM et à la taille des secteurs de Flash du contrôleur. Ces trames doivent avoir une adresse de destination (en Flash), une longueur, un checksum.
    - Prévoir des trames "spéciales" : abandon, fin de programmation, reboot, etc... en fonction des besoins.
    - Réception d'une trame sur le µC : envoi d'un ACK ou d'un NACK suivant la validité de la trame. En cas d'ACK, on copie les données en Flash.
    - Réception d'une trame "fin de programmation" : cette trame contient l'adresse et la taille du bloc complet venant d'être transféré, plus un checksum. Le µC vérifie alors le checksum en Flash, et répond ACK ou NACK en fonction.
    - Réception autre trame spéciale : action à prendre suivant les fonctions à implémenter.

    Après, ton µC peut également posséder un protocole plus ou moins propriétaire dédié à cette opération, utilisant l'UART mais fonctionnant plus comme un simili-JTAG. Dans ce cas, un soft dédié à cette reprogrammation doit déjà exister, voire être distribué avec l'environnement de développement.

    Citation Envoyé par chrisis
    Sinon pour CPort lorsque l'on fait un Write on peut seulement envyer du texte non ?
    MD Software t'as déjà dit que non, écoutes ce qu'on te dit.
    Vu que j'utilise ce composant pour gérer un protocole de téléprogrammation et le protocole Modbus, je crois que depuis le temps, j'aurais remarqué s'il ne prenait pas le binaire...
    Et j'utilise bien "Write(const Buffer; Count: Integer)".
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  6. #6
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Le binaire est en fait du texte !
    Explications :
    Prenons par exemple 01000001 en binaire vaut 65 en décimal et chr(65) = 'A'.
    01000001 = A
    01000010 = B
    01000011 = C
    01000100 = D
    etc...

    Utilise la fonction Chr pour convertir un octet en caractère.
    Utilise la fonction Ord pour obtenir l'inverse.
    à+

Discussions similaires

  1. lecture/ecriture des broches RTS/CTS du port RS232
    Par .:: sly51 ::. dans le forum C
    Réponses: 3
    Dernier message: 24/10/2006, 15h28
  2. gestion port RS232
    Par portos.lio dans le forum C
    Réponses: 8
    Dernier message: 30/11/2005, 12h04
  3. lire les données sur un port RS232
    Par xave dans le forum Langage
    Réponses: 6
    Dernier message: 06/10/2005, 16h40
  4. Port RS232
    Par jcharles dans le forum Composants VCL
    Réponses: 25
    Dernier message: 14/06/2005, 23h04
  5. Lecture port RS232
    Par hamster dans le forum MFC
    Réponses: 9
    Dernier message: 07/06/2005, 14h38

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