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

Réseau C Discussion :

emuler un port [Non suivi]


Sujet :

Réseau C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut emuler un port
    bonjour,

    voilà j'ai à créer un code qui doit permerttre d'émuler un port (RS232).

    Le problème est que je ne sais pas du tout par où commencer (je n'ai jamais créé de code qui "touche" au matériel)

    si vous pouviez me diriger (donner les étapes, dire à quoi je devrais m'interesser, si il y a une bibliotheque en C qui permet de faire cela facilement....) ce serait sympa.


    merci d'avance

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Il faut regarder comment sont transmises les trames en RS232 et si tu dois seulement émettre ou recevoir. Sinon il faudrait ouvrir un port logiciel à partir duquel un client se connectera et enverra des trames ou alors à qui tu en enverras, gérer les problémes de communication, un spool de thread,...
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    si je dois seulement emmetre ca rend les choses plus simples?

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Citation Envoyé par Elstak
    si je dois seulement emmetre ca rend les choses plus simples?
    Oui je pense.
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    hello,

    voilà j'ai fait quelques recherches sur le format des trames, j'ai trouvé ceci. (je ne sais pas si c'est ca qui sera interessant car je ne sais pas ce que je devais trouver en particulier)

    Protocole de transmission
    Afin que les éléments communicants puissent se comprendre, il est nécessaire d'établir un protocole de transmission. Ce protocole devra être le même pour les deux éléments afin que la transmission fonctionne correctement.

    Paramètres rentrant en jeu :

    Longueur des mots : 7 bits (ex : caractère ASCII) ou 8 bits
    La vitesse de transmission : les différentes vitesses de transmission sont réglables à partir de 110 bauds (bits par secondes) de la façon suivante : 110 bds, 150 bds, 300 bds, 600 bds, 1200 bds, 2400 bds, 4800 bds, 9600 bds...
    Parité : le mot transmit peut être suivi ou non d'un bit de parité qui sert à détecter les erreurs éventuelles de transmission. Il existe deux types de parité.
    Parité pair : Le bit ajouté à la donnée est positionné de telle façon que le nombre des états 1 soit pair sur l'ensemble donné plus le bit de parité.
    Exemple : Soit la donnée 11001011 contenant 5 états 1, le bit de parité est positionné à 1, ramenant ainsi le nombre de 1 à 6.
    Parité impair : Le bit ajouté à la donnée est positionné de telle façon que le nombre des états 1 soit impair sur l'ensemble donné plus le bit de parité.
    Exemple : Soit la donnée 11001011 contenant 5 états 1, le bit de parité est positionné à 0, laissant ainsi un nombre de 1 impair...
    Bit de start : la ligne au repos est à l'était logique 1. Pour indiquer qu'un mot va être transmit, la ligne passe à l'état bas avant de commencer le transfert. Ce bit permet de synchroniser l'horloge du récepteur.
    Bit de stop : après la transmission, la ligne est positionnée au repos pendant 1,2 ou 1,5 périodes d'horloges selon le nombre de bits de stop.
    [modifier]Format des trames
    Le bit de start apparaît en premier dans la trame puis les données (poids faible en premier), la parité éventuelle et le ou les bits de stop.

    La trame d'une transmission a les caractéristiques suivantes :

    Parité paire, 2 bits de stop, 7 bits de données. 1 div = 26µs.

    quand tu parle de :
    ouvrir un port logiciel
    qu'est ce que tu entends par là (c'est assez abstrait pour moi)

    merci

    EDIT : j'aurai une autre question car c'est un peu confus pour moi. Le but est au final d'émuler un terminal. Il y a donc 2 etapes? premierement creer un port virtuel puis emuler la connexion du terminal? non?

  6. #6
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut
    Si tu veux émuler un terminal, utilise les pseudo-terminaux.

    Il existe 2 types de pseudo-terminaux :
    - ceux qui n'ont qu'un maître ( /dev/ptmx ) et qui alloue les esclaves dynamiquement ( /dev/pts/0, /dev/pts/1, ... ),
    - ceux qui ont un couple maître ( /dev/ptyp0 ) esclave ( /dev/ttyp0 ).

    Ce que tu écris sur le périphérique maître ressort sur l'esclave et vice-versa.

    C'est très simple à utiliser : openpty(), open(), read(), write(), select(), ... devraient t'être utiles.

    Bon courage.
    "Il est plus facile de décomposer un problème en ses éléments, forcément plus simples, que de le traiter en sa totalité." (R. Descartes)

    Freelance iOS

  7. #7
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Le port logiciel c'est le canal par lequel les échanges de trame s'effectuent. Cela peut être pratique pour l'émulation. Reste à voir comment l'implémenter

    fopen et les api de ton système permettent d'accèder à certains ports matériel série ou paralléle
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    wawawa,

    Si tu veux émuler un terminal, utilise les pseudo-terminaux.

    Il existe 2 types de pseudo-terminaux :
    - ceux qui n'ont qu'un maître ( /dev/ptmx ) et qui alloue les esclaves dynamiquement ( /dev/pts/0, /dev/pts/1, ... ),
    - ceux qui ont un couple maître ( /dev/ptyp0 ) esclave ( /dev/ttyp0 ).

    Ce que tu écris sur le périphérique maître ressort sur l'esclave et vice-versa.

    C'est très simple à utiliser : openpty(), open(), read(), write(), select(), ... devraient t'être utiles.

    Bon courage.
    ces types là dont tu me parles, moi je n'en utilise qu'un selon le terminal que je veux emuler? (j'y comprend pas grand chose dsl )

    ensuite la fonction openpty(), j'ai regardé sur google et j'ai trouvé quelques truc (tuto et autre) mais sur linux... je fais ca sous windows on est d'accord? (enfin ptet que je suis tombé que sur des "mauvais" exemples mais bon...)

    en tout cas merci déjà


    pour hegros:

    fopen et les api de ton système permettent d'accèder à certains ports matériel série ou paralléle
    quand tu dis certains ports matériel, tu suppose qu'ils existent donc? car moi il n'y en aura pas forcement sur le pc... je voudrais un truc comme daemon tools pour les lecteurs cd virtuel par exemple mais en port série

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    de quoi de quoi émuler un porc ?

    Suffit d'aller rue St Denis ...

    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  10. #10
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    ton probléme ce n'est visiblement pas l'implémentation en C. Tu peux passer par un port logiciel plutot qu'un port physique c'est effectivement ce que je disais tu ne comprends pas quel mot ?
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    bah pour le moment le pb n'est pas le C (mais ca viendra ) dison que je vois pas comment m'y prendre pour "émuler le port logiciel" meme si j'ai compris en gros ce que c'etait.

    tu avais dit :

    fopen et les api de ton système permettent d'accèder à certains ports matériel série ou paralléle
    mais c'est juste pour un port materiel ca? pour un logiciel comment qu'on fait ?



    de quoi de quoi émuler un porc ?

    Suffit d'aller rue St Denis ...
    hm.... j'ai relu 3 fois mon post pour voir où y'avai l'erreur... il l'a meme pas

  12. #12
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    pour un port logiciel via une socket par exemple

    ca veut dire que tu t'es trompé de forum mais bon
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  13. #13
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut
    Citation Envoyé par Elstak
    je fais ca sous windows on est d'accord? (enfin ptet que je suis tombé que sur des "mauvais" exemples mais bon...)
    Ha...
    Les pseudo-terminaux ne sont présents que sous Linux et autres Unix.

    Je t'ai proposé cette solution car c'est celle utilisée par XTerm et les autres émulateurs de terminaux.

    Eventuellement, peut-être que Cygwin gère les pseudo-terminaux. Je l'ai utilisé pour attaquer des ports série et ça marche nickel avec toutes les versions de Windows ( Vista compris ).

    Sinon, je ne peux pas plus t'aider si tu es sous Windows. Désolé.
    "Il est plus facile de décomposer un problème en ses éléments, forcément plus simples, que de le traiter en sa totalité." (R. Descartes)

    Freelance iOS

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    pour un port logiciel via une socket par exemple

    ca veut dire que tu t'es trompé de forum mais bon
    ca m'eclaire que moyennement. T'aurais pas un lien qui explique tout ca clairement car en tapant uniquement socker j'ai plein de resultats qui m'interessent pas

    dans quel forum je devrai plutot etre d'apres toi?

Discussions similaires

  1. Émuler un port COM virtuel
    Par DaffyDuck dans le forum API, COM et SDKs
    Réponses: 18
    Dernier message: 08/11/2018, 18h21
  2. Emulation port série RS232
    Par Invité dans le forum Développement
    Réponses: 0
    Dernier message: 26/07/2011, 14h43
  3. Programmer port derrière routeur NAT TRAVERSAL comme Emule
    Par Steff2 dans le forum Web & réseau
    Réponses: 4
    Dernier message: 04/05/2010, 14h29
  4. Emulation Port Série - USB
    Par azman0101 dans le forum Windows XP
    Réponses: 0
    Dernier message: 24/12/2007, 11h02
  5. emulation port usb
    Par H¤N£y dans le forum Composants
    Réponses: 3
    Dernier message: 09/08/2006, 17h17

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