begin process at 2012 02 14 18:55:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Réseaux & Internet

 > 

Sockets

 > 

Probleme SerialPort


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme SerialPort

jeudi 8 novembre 2007 à 12:05:54 | Probleme SerialPort

orj30754

Bonjour,

je dois créer un programme afin de récupérer et envoyer des données via un port série.
- Mon 1er soucis, est que je ne sais pas comment tester si mon programme fonctionne.
J'ai essayer de le faire dialoguer avec le logiciel Hyperterminal sur un autre PC mais impossible.
Ma 1ère question serait de savoir si quelqu'un saurait comment tester le dialogue entre mon programme et un autre ordinateur?

- Mon 2ème soucis viens du code de mon programme. Pendant l'exécution de celui ci j'ai un problème lors de l'ouverture du port. Le compilateur me dit : Access to the port 'COM1' is denied.
Il marche la 1ère fois de la journée une fois que mon PC à démarrer. Le PC plante au moment d'envoyer ou recevoir des données et du coup je ne referme pas le port après utilisation et j'ai l'impression que ca vient de la.

Voici ma class pour la gestion des données et configuration du port, je m'y suis mis depuis peu, faites preuve d'indulgence ... :

Code :
OptionExplicitOn
Imports System
Imports System.IO
Imports System.IO.Ports
Imports System.Text
Imports Microsoft.VisualBasic
 
PublicClass Form1
 
    Private MonPort AsNew PortSerie
    Dim returnStr AsString = ""
 
    PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)HandlesMyBase.Load
        LoginForm1.ShowDialog()
        Me.Text = "Terminal VIZ 100"
        Me.WindowState = FormWindowState.Maximized
        Send_Num.Enabled = False
        Num_serie_recup.Text = ""
    EndSub
 
    PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Button1.Click
        Form2.ShowDialog()
    EndSub
 
    PrivateSub Send_Num_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Send_Num.Click
        ProgressBar1.Value = 0
        SendSerialData(Form2.N_Serie)
    EndSub
 
    PrivateSub Receive_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Receive.Click
         ProgressBar1.Value = 0         
         ReceiveSerialData()
    EndSub
 
    PrivateSub ProgressBar1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles ProgressBar1.Click
        ProgressBar1.Minimum = 0
        ProgressBar1.Maximum = 200
    EndSub
 
    Sub SendSerialData(ByVal data AsString)
        MonPort.configuration()
        Using PortSerie As IO.Ports.SerialPort = My.Computer.Ports.OpenSerialPort("COM1")
            MonPort.ouverture()
            PortSerie.WriteLine(data)
            ProgressBar1.Value += 100
            PortSerie.Close()
            ProgressBar1.Value += 100
            MonPort.fermeture()
        EndUsing
    EndSub
 
    Function ReceiveSerialData()AsString
        MonPort.configuration()
        Using PortSerie As IO.Ports.SerialPort = My.Computer.Ports.OpenSerialPort("COM1")
            MonPort.ouverture()
            If(SerialPort.IsOpen())Then
                Do MsgBox("Ouverture réussi", MsgBoxStyle.Information)
                    ProgressBar1.Value = 70
                    Dim Incoming AsString = PortSerie.ReadLine()
                    If Incoming IsNothingThen
                        ExitDo
                    Else
                        returnStr &= Incoming & vbCrLf
                    EndIf
                    ProgressBar1.Value = 120
                Loop
            EndIf
            ProgressBar1.Value = 150
            MonPort.fermeture()
        EndUsing
        Return returnStr
        ProgressBar1.Value = 200
    EndFunction
 
EndClass
 
 
#Region"Classe Port Série"
PublicClass PortSerie
 
    Public NoPort AsString = "COM1"'Numero de port qui sera utilisé
    Public Debit AsInteger = 9600'debit en bits/sec sur le port COM
    Public NbBits AsInteger = 8'bits de donnée
    Public BitStop AsString = IO.Ports.StopBits.One'bit de stop 
    Public Parite AsString = IO.Ports.Parity.None'parité
 
    Dim i AsInteger
 
    Function configuration()AsBoolean
        Form1.SerialPort.PortName = NoPort
        Form1.SerialPort.BaudRate = Debit
        Form1.SerialPort.DataBits = NbBits
        Form1.SerialPort.StopBits = BitStop
        Form1.SerialPort.Parity = Parite
    EndFunction
 
    Function ouverture()AsBoolean
        ' verifie que le port est fermé avant de l'ouvrir
        If(Not(Form1.SerialPort.IsOpen)Or(NoPort = "NULL"))Then
            Form1.SerialPort.Open()
        EndIf
        ouverture = EtatPort()
    EndFunction
 
    Function fermeture()AsBoolean
        ' verifie que le port est ouvert avant de le fermer
        If(Form1.SerialPort.IsOpen())Then
            Form1.SerialPort.Close()
        EndIf
        fermeture = EtatPort()
    EndFunction
 
    Function EtatPort()AsBoolean
        ' test le port et retourn 0 ou 1
        If(Form1.SerialPort.IsOpen())Then
            EtatPort = True
        Else
            EtatPort = False
        EndIf
    EndFunction
 
   
EndClass
#End Region
jeudi 8 novembre 2007 à 16:24:41 | Re : Probleme SerialPort

lim

Salut

   Voilà un petit programme qui envoi et reçoit des données depuis 1 port Com, à adapter pour ton besoin
   Il te faut une form, 2 textbox et 1 bouton

   Paramétrage et ouverture du port com au chargement de la fenêtre
   Il faut laisser le port com ouvert si tu veux pourvoir avoir accès aux données qui reviennent.
   Car ton cas tu le ferme après avoir envoyé des données donc tu ne pourras jamais recevoir le retour de ta demande

   En espérant que çà te débloquera

'Chargement de ta fenêtre
PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
'Permet l'utilisation de datareceive
Control.CheckForIllegalCrossThreadCalls = False
'N° du port de com à utilisé
SerialPort1.PortName = "COM1"
'Ferme le port si il est ouvert
   If SerialPort1.IsOpen = TrueThen
      SerialPort1.Close()
   EndIf
'Paramétrage du port
SerialPort1.BaudRate = "9600"
SerialPort1.DataBits = 8
SerialPort1.Parity = IO.Ports.Parity.None
SerialPort1.StopBits = IO.Ports.StopBits.One
SerialPort1.Handshake = IO.Ports.Handshake.None
'Ouverture du port
SerialPort1.Open()
EndSub

PrivateSub btnEnvoi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnvoi.Click
'Envoi sur le port série le contenue de la textbox
SerialPort1.WriteLine(txtEnvoi.Text)
EndSub

PrivateSub SerialPort1_DataReceived(ByVal sender AsObject, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
'Quand il y a quelquechose dans le buffer de réception çà lit les données et les ajoutes à la textbox
txtReception.Text = txtReception.Text & SerialPort1.ReadExisting.ToString
EndSub

@+
LIM
jeudi 8 novembre 2007 à 16:25:51 | Re : Probleme SerialPort

lim

Re

   J'ai oublié il faut évidement ajouter un objet serialport sur ta fenêtre via la boîte à outils

@+
LIM
jeudi 8 novembre 2007 à 17:17:16 | Re : Probleme SerialPort

orj30754

Merci j'essai ca demain et je te tiens au courant.
dimanche 11 mai 2008 à 09:24:33 | Re : Probleme SerialPort

SEB73460

Bonjour Lim,
j'ai essayer le bout de code pour envoyer et recevoir sur le port com
Mais à la fin des caracteres recus dans le textbox j'ai un petit trait vertical en plus a la fin des caracteres ? "
As-tu une idee ?
Mes remerciements
A

lundi 12 mai 2008 à 09:19:57 | Re : Probleme SerialPort

lim

Salut SEB73460

   Il est possible que ce soit le codage ASCII d'un caractère de fin de trame du style chr(3) ou autre.
   Je ne vois que çà avec les infos que tu me donnes.

@+
LIM


Cette discussion est classée dans : port, system, serialport, form1, progressbar1


Répondre à ce message

Sujets en rapport avec ce message

Prob liaison port série VB2008 [ par fredleemans ] salut tout le monde,Ca fait plusieurs heures que je cherche désespérement une solution pour communiquer avec une carte relais électronique velleman (K problème imcompréhensible!!!! [ par thevbrocker ] Bon voilà mon problème j'ai créer un programme pour transférer des dossiers sur mon ordinateur à un disque du portatif, mais voilà il y a un lag...ma Difference 2003 et 2010 [ par andrebernard ] Bonjour à tous C'est la premiere fois que je demarre VB.NET, je code en VB6 d'habitude Sur 2003, en double cliquant sur une form, maintenant apparai Outils SerialPort et bluetooth [ par Janfi57 ] Bonjour,je suis en train d'écrire un programme de calcul topométrique couplé à un tachéomètre (appareil de topo), tout cela en vb.net. J'ai lu et test port parralèle [ par benbonjour ] Bonjour,Je souhaite commander le port parralèle avec VB2008.  J'ai fais une application windows forms simple. Je colle la valeur des sorties voulues d appel controle thread [ par Finality ] Bonjour tout le monde, je suis actuellement en  train d'apprendre le fonctionnement des threads. Pour cela voilà le code que j'ai écris :<fon PB Client Telnet avec VB 2005 Express [ par TheZUP ] Bonjour,J'utilise un Windows Form ainsi qu'un Boutton et un RichTextBox pour voir le résultat.Mon programme a des problèmes de connections, ainsi que  Aide sur la class Socket pour clien ntp [ par slyderkiller ] slt a ttJe voudrais me connecter a un serveur ntp pour qu'il me transmet l'heure mais je ne connais pas vraiment cette classje bug sur la connexion il Variable composer [ par SeigneurARES ] Bonjour a tous,J'ai un petit probleme je vien de passer sur VB9 (avant sur VB6), et je n'arrive plus a faire de variable de ce type :#Public Class For


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales