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 :

port série virtuel sur port usb


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de Othana
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 188
    Par défaut port série virtuel sur port usb
    bonjour.

    pour un programme qui va paramétrer des traceurs GPS (et que je suis chargé de programmer - donc il n'y a pas de logiciel de base, sauf pour certains GPS, mais donc je m'en occupe pas), je vais avoir besoin d'émuler un port série (COM), sachant que le traceur est en usb.
    Alors attention, le logiciel est à destination d'utilisateurs non initiés. donc, il faudrait intégrer cette émulation au code.
    pourquoi ? et bien, pour le moment, je suis contraint d'utiliser hyperterminal pour lancer les commandes de paramétrage au GPS. commandes formatées par le logiciel (c'est son principal but, simplifier le boulot de monsieur l'installeur).

    Perso, j'aurais piloté le gps directement via sa connexion usb, je vais essayer de négocier ça, mais en attendant, je suis coincé.

  2. #2
    Membre très actif Avatar de Othana
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 188
    Par défaut
    Bon, j'apporte des précisions et des rectifications :
    La connexion USB d'un GPS va être affectée automatiquement à un port COM (pareil pour du bluetooth). Il me semble d'ailleurs que c'est le principe de l'USB.
    Du coup, l'émulation n'est plus utile, c'est déjà fait.

    Maintenant, toujours pour mon programme, le truc serait de savoir quelle règle est suivi pour l'affectation, est-ce que ça commence en COM1, dès le premier COM libre ou autre ?
    Comment récupérer infailliblement le port COM affecté au GPS connecté ?
    Ceci, toujours dans l'optique de paramétrer automatiquement le terminal.

  3. #3
    Membre très actif Avatar de Othana
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 188
    Par défaut Communication avec un module GPS sur port série
    Mis à part cette détection de connexion, j'ai un premier soucis majeur, je poste le code de "test" que j'ai fait :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    public partial class MainForm : Form
        {
            SerialPort mySerialPort;
            public MainForm()
            {
                //
                // The InitializeComponent() call is required for Windows Forms designer support.
                //
                InitializeComponent();
     
                //
                // TODO: Add constructor code after the InitializeComponent() call.
                //                
            }
     
            private void MainFormLoad(object sender, EventArgs e)
            {
                mySerialPort=new SerialPort();            
                //paramètres pour le VT10
                mySerialPort.PortName="COM3";
                mySerialPort.BaudRate = 57600;
                mySerialPort.Parity = Parity.None;
                mySerialPort.StopBits = StopBits.One;
                mySerialPort.DataBits = 8;
                mySerialPort.Handshake = Handshake.None;
                mySerialPort.DtrEnable=true;           
                mySerialPort.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
                mySerialPort.Open();
            }
     
            private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                // Event for receiving data
                // Read the buffer to text box.
                this.Invoke(new EventHandler(DoUpdate));
            }
     
            private void DoUpdate(object s, EventArgs e)
            {
                textBox2.Text = textBox2.Text + "Getting Data";
                textBox2.Refresh();
                textBox2.Text = textBox2.Text + mySerialPort.ReadExisting();
            }
     
            private void btSend_Click(object sender, EventArgs e)
            {
                // Button to send test data
                try
                {
                    mySerialPort.WriteLine(textBox1.Text);
                }
                catch (Exception wex)
                {
                    MessageBox.Show(wex.ToString());
                }
            } 
        }
    Avec le code corrigé, je reçois des infos du GPS, notamment le code erreur informant de l'absence de carte SIM. Mais je ne reçois pas la réponse aux commandes envoyées.

  4. #4
    Membre très actif Avatar de Othana
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 188
    Par défaut
    Résolu : un problème de caractère de fin de ligne.
    une textbox (même en multiligne) envoie un fin de ligne avant un retour chariot. Et pour valider mes commandes j'ai besoin d'un retour chariot AVANT.
    Code ASCII 13.

    Maintenant, nouveau problème : comment obtenir le nom de l'appareil sur le port série (comme le fait le gestionnaire de matériel) ?

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/06/2008, 16h12
  2. [C#] lecture sur port série
    Par Iokanaan dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/05/2005, 13h50
  3. Recevoir "NULL" sur port série
    Par WinY57 dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 04/03/2005, 11h37
  4. Etat de CTS sur port série
    Par Juste_Une_IlluZion dans le forum C++Builder
    Réponses: 9
    Dernier message: 12/09/2004, 10h46
  5. [Débutant] Réception sur port série
    Par Tophe59 dans le forum Langage
    Réponses: 43
    Dernier message: 28/06/2004, 11h04

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