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

C# Discussion :

C# - Port Série


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 92
    Par défaut C# - Port Série
    Bonjour,

    J'aimerais envoyer certaines informations(trame) au port série.
    Comment puis-je faire ca en CSharp.
    ps: j'ai déjà cherché un peu sur le net mais n'ai rien trouvé de concluant.

    Merci

  2. #2
    Membre chevronné
    Profil pro
    Développeur freelance
    Inscrit en
    Août 2006
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur freelance

    Informations forums :
    Inscription : Août 2006
    Messages : 453
    Par défaut
    regarde là si cela peut t'intéresser ...

    http://msdn2.microsoft.com/en-us/lib...DownFilterText

    Mosco.

  3. #3
    Membre chevronné
    Profil pro
    Développeur freelance
    Inscrit en
    Août 2006
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur freelance

    Informations forums :
    Inscription : Août 2006
    Messages : 453
    Par défaut
    Sinon fait une recherche sur le forum, il y a plein de posts qui en parle.

    Mosco.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 92
    Par défaut
    Merci.
    Juste pour un ptit coup de main (je débute).

    si j'écris ce code

    SerialPort Port = new SerialPort();
    Port. --> je n'ai pa accés aux méthodes

    Pourquoi ?

  5. #5
    Membre chevronné
    Profil pro
    Développeur freelance
    Inscrit en
    Août 2006
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur freelance

    Informations forums :
    Inscription : Août 2006
    Messages : 453
    Par défaut
    tu as penser à


    Mosco.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 92
    Par défaut
    Oui, j'y avait pensé :-) mais ca va, j'ai trouvé l'erreur...

    Sinon, Pouvez-vous me dire ceuque vous pensez de ca. Je dois créer une DLL qui permettrait d'interfacer une application et le Bancontact.

    Biensur, je ne trouve aucunes informations sur le net mais j'ai une doc de
    Banksys qui m'explique les trames a lui envoyer.
    Donc je devrais passer par le port série et lui envoyer la trame générée pour l'initialiser et communiquer avec celui-ci.

    Trame :
    STX | SEQ | VIC-MESSAGE | ETX | CRC(lsb) | CRC (msb)

    STX = Marque le début d’un segment : Toujours égal à 0x02
    SEQ= est un compteur
    VIC-MESSAGE : Message VIC à voir plus loin.
    ETX=Marque la fin d’un segment, toujours égal a 0x03
    CRC= Grâce aux codes de redondances cycliques, on vérifié s’il durant le rtransport il n’y a pas eu d’erreur.


    VIC-MESSAGE
    VIC_protocol_id | VIC_MSG_CODE | VIC_BITMAP | FIELD1 | FIELD2 | FIELD n

    VIC_Protocol_ID = Numéro de version  ici, 1,07 donc 01 07. Si c’est différent, alors problème de compatibilité.

    VIC_Msg_CODE = (spécifie le type de message selon des constantes)
    56 44 = vmc_debit_request
    56 43 = vmc_Cancel
    50 44 = pdv_debit_result
    5045 = pdv_error

    VIC_Bitmap = a une longeur de 8, 16 ou 24 Byte. Indique les champs qui suivront.

    D'apres vous, je dois créer ma succesion de Bits (trame) et l'envoyer simplement au buffer du port série ?

    lol.. je sais c'est un peu compliqué mais bon .. j 'm'en sors pas la...

  7. #7
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    J'ai fait dernierement ce type de logiciel qui dialoguait via le port série avec une carte electronique, et la solution retenu etait la suivante:

    Créer un flux de type memoryStream... faire ensuite le "remplissage" avec de "bete" : WriteByte(), WriteDouble(); etc.. bref , en utilisant la "panoplie" de méthode du memoryStream et apres, j'emettais tout cela vers le port Série

    LE code donnait un truc comme cela

    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
    MemoryStream buf = new MemoryStream();
                    BinaryWriter writer = new BinaryWriter(buf, Encoding.UTF8);                
     
                    IntercomCtrl com = panel1.Controls["Item" + i.ToString()] as IntercomCtrl;
     
                    writer.Write((byte)i);
                    writer.Write((byte)main.Conf.IntercomNbFields);
                    writer.Write((byte)com.UserMode);
                    writer.Write(com.UserPhone.ToCharArray());
                    if (com.UserPhone.Length < 15)
                    {
                        byte[] fill = new byte[15 - com.UserPhone.Length];
                        writer.Write(fill);
                    }
     
                    writer.Write(com.UserMessage.ToCharArray());
                    if (com.UserMessage.Length < 99)
                    {
                        byte[] fill = new byte[99 - com.UserMessage.Length];
                        writer.Write(fill);
                    }
     
    SerialPort1.Write(buf.ToArray(), 0, (int)buf.Length);
    CA devrait aider , non ?

    The Monz, Toulouse

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

Discussions similaires

  1. [Série] Accès au port série sous linux
    Par ghost dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 10/10/2007, 10h43
  2. Réception sur le port série sous DOS avec Borland V3.0
    Par jackyjacky dans le forum Autres éditeurs
    Réponses: 24
    Dernier message: 19/03/2004, 23h18
  3. probleme de communication port série
    Par ben23 dans le forum MFC
    Réponses: 8
    Dernier message: 06/02/2004, 15h12
  4. Recherche de l'adresse du port série
    Par StephCal dans le forum Langage
    Réponses: 8
    Dernier message: 07/01/2004, 11h23
  5. Problème avec le port série sous Windows XP
    Par didou2dek dans le forum Composants VCL
    Réponses: 6
    Dernier message: 02/09/2003, 19h50

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