none
Gestion d'un port serie en VB 2005 Express RRS feed

  • Question

  • Bonjour,

     

    J’ai un banc de mesure des jauges outils pour Machine à Commande Numérique qui retourne le type de machine (saisie par l’opérateur sur la console du banc) et les valeurs X et Y, (après validation de l’opérateur) la console est actuellement connecter a une imprimante matricielle en mode série, qui après validation des mesures par l’opérateur, imprime les données sur une étiquette qui est ensuite coller sur l’outil.

    J’ai réalisé un câble avec les conseils du fabricant pour connecter la console à un micro-ordinateur.

    J’ai effectué des tests avec Hyper Terminal, après configuration du port :

    Bauds =2400

    Data = 7 bits

    Stop = 2 bits

    Parité = Paire

    Flux = XonXoff

     

    je réceptionne les données soit après validation sur la console ou en utilisant CTRL+B, mais je ne connais pas :

    -         la longueur du Buffer ?

    -         le TimeOut ?

     

    Mon projet 

    :

    Réaliser un programme en VB 2005 Express qui réceptionne les données sur le port COM1 puis les affiche sur une form avec la possibilité d’ajouter des informations et ensuite envois sur port COM2 pour l’imprimante et stockage dans un fichier texte pour envois par le réseau local sur la machine d’usinage.

    Pour info la configuration des ports est inscrite dans un fichier texte pour plus de souplesse dans les modifications (habitude des fichiers INI)

     

    Mon Problème :

     

    Je n’ai pas trouvé d’exemples utilisant une Form mais surtout de gestion d’erreur pour le débogage de mon programme

    Voici quelques morceaux de codes de mon programme pour exemple :

     

    Configuration du port :

    Ex :

    SerialPort1.BaudRate = PortBaud

     

    Vérification de la configuration du port= OK

    Ex :

    'Voir debug des propriete de SerialPort1

            Debug.Print(SerialPort1.PortName)

            Debug.Print(SerialPort1.BaudRate)

            Debug.Print(SerialPort1.Parity)

            Debug.Print(SerialPort1.DataBits)

            Debug.Print(SerialPort1.StopBits)

            Debug.Print(SerialPort1.Handshake)

            Debug.Print(SerialPort1.ReadBufferSize)

            Debug.Print(SerialPort1.WriteBufferSize)

            Debug.Print(SerialPort1.ReadTimeout)

            Debug.Print(SerialPort1.WriteTimeout)

            Debug.Print(SerialPort1.ReceivedBytesThreshold)

            Debug.Print(SerialPort1.DtrEnable)

            Debug.Print(SerialPort1.RtsEnable)

            Debug.Print(SerialPort1.DiscardNull)

            Debug.Print(SerialPort1.ParityReplace)

     

    Ensuite ouverture du port sur clic d’un bouton :

    Ex :

    Private Sub BTN_OpenPort1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_OpenPort1.Click

            Dim Port1Continue As Boolean = True 'valeur boolean pour bocle

            Dim Port1Input As String 'Variable de lecture du port        'variable pour mesage TimeOut

            Dim message As String = ""

            'Dim innerException As Exception

            'Dim instance As New TimeoutException(message, innerException)

     

            BTN_OpenPort1.Visible = False

            BTN_ClosePort1.Visible = True

            LBL_InputPort1.Visible = True

            'ouverture du port

            SerialPort1.Open()

            Debug.Print(SerialPort1.ReadBufferSize)

            While Port1Continue

                Try

                    Port1Input = SerialPort1.ReadLine()

                    LBL_InputPort1.Text = Port1Input

                Catch ex As TimeoutException

                    'do nothing

                    MsgBox("Erreur TimeOut")

                End Try

            End While

     

            'pour debug envoi ligne bidon

            'LBL_InputPort1.Text = "machine Huron 1" & crlf & "X = 255.000" & crlf & "Y = 5000"

     

    le programme se bloque, retour par fin de debogage.

     

    J'ai besoin d'aide, j'ai trouver des exemples en VB 6 qui exploite le MSComm.ocx mais je ne souhaite pas utilisé d'anciennes versions ! Bien que je respecte celles ou ceux qui les ont écrits

     

    Solutions :

    J’ai confiance, et reste persuadé que vous m’aiderez à résoudre ce problème.

     

    Salutations

     

     

     

    vendredi 8 décembre 2006 18:20

Toutes les réponses

  • Bonsoir,

    Je ne comprend pas bien votre problématique ... Est-ce le débogage qui vous pose problème ? A quelle ligne se bloque votre programme ?

    Si c'est le cas et afin d'intercepter toutes les erreurs de votre programme, ajoutez un Try / Catch sur l'ensemble du code de la méthode BTN_OpenPort1_Click

    vendredi 8 décembre 2006 18:43