Envoyer une information logic à un port sous visual basic

antoineminier - 19 mars 2013 à 11:10
 Utilisateur anonyme - 26 mars 2013 à 11:42
Bonjour,

Dans un premier temps je vous remercie de prendre le temps de lire mon message.
Je suis étudiant en terminale SSI et je dois pour mon projet de fin de cycle réussir à envoyer une information binaire à un interupteur pour le contrôle d'un moteur.
J'ai plusieurs problèmes, le premier est d'envoyer via visual basic 2010 une information à un port usb car l'ordinateur que nous utilisons ne posséde pas de port série. J'ai pensé à utiliser un adaptateur serie/usb pour faciliter les choses car j'ai cru comprendre qu'il était beaucoup plus simple de communiquer avec un port serie. Je me demandais donc si l'adaptateur remplacerait l'adresse du port usb par un port serie.
Mon second problème est la création du code. Je suis un grand amateur en codage et j'espèrais que quelqu'un pourrait m'expliquer dans les grandes lignes le contenu du code que je devrais écrire et les spécificités du language.

Vous remerciant d'avance si quelqu'un prend la peine de répondre(si vous le faites soyez très explicite car je suis le plus grand des neophites).

19 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 mars 2013 à 11:35
Bonjour,
As-tu lu ceci :
Tapez le texte de l'url ici.
Sauf à montrer le code tenté (et pour un seul point par discussion), je doute que tu recevras de l'aide.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
19 mars 2013 à 17:43
Salut

"Je suis un grand amateur en codage"
Alors pourquoi choisir la catégorie VB6 alors que tu fais du VB.Net ?

Port série/USB : Ce n'est pas une question pratique, c'est qu'un port USB se comporte comme un port série.

Et en face, il y a quoi, quelle machine ?
(automate, PC, ...)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)
0
Utilisateur anonyme
19 mars 2013 à 20:10
Bonjour,

Port série/USB : Ce n'est pas une question pratique, c'est qu'un port USB se comporte comme un port série.


Je ne me souviens pas pour les autres versions de VB.net, mais VB2012 (Express) viens avec un composant SerialPort par défaut dans la boîte à outils. Il peut même télécharger gratuitement VB2012 Express sur le site de MS.
0
antoineminier
19 mars 2013 à 20:38
Re bonjour,
Désolé Jack de mettre trompé de section
Ce que je cherche dans un premier temps est de savoir si s'il serait plus facile de contrôler mon interrupteur via un port série car j'ai cru comprendre en parcourant les forums que l'utilisation d'un port USB étant plus délicate.

Je ne souhaite pas que vous me fassiez mon travail à ma place mais simplement que vous puissiez m'éclairer et me guider sur le bon chemin.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
20 mars 2013 à 12:18
Bonjour,

plus facile de contrôler mon interrupteur via un port série

Ton "interrupteur" est forcément doté d'un circuit et d'un micro-contrôleur.

Tu dois utiliser le port série, si le circuit à été conçu pour recevoir les commandes en série.
Ou, tu dois utiliser le port parallèle, si le circuit à été conçu pour recevoir les commandes en parallèle.
Je me demandais donc si l'adaptateur remplacerait l'adresse du port usb par un port serie

L'adaptateur ne remplace rien, il ajoute tout simplement un port série sur ton PC.
Tu peux voir quel est le numéro du port attribué dans ton gestionnaire de périphériques.

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
jibob Messages postés 59 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 4 juillet 2013
20 mars 2013 à 20:28
Bonjour à tous,

Pour disposer d'un port série quand le PC n'en dispose pas, au moins 2 solutions:
- la carte PCI série (pas besoin de pilotes, toujours reconnues même sous Linux)
- le port série USB (émule un port série avec les fonctions standards)

Il est possible de se passer de micro-contrôleur jusqu'à 2 sorties + 4 entrées en utilisant les signaux annexes destinés au modem.
Par exemple le signal DTR devient actif quand on ouvre le port COMx et inactif quand on ferme ce même port.

Voici le candidat idéal pour commander une UNIQUE ligne en tout ou rien.
Il faut par contre une interface de puissance pour commander un relais, un transistor de puissance ou un triac.

Voir un des schémas sur
http://www.automatepc.fr/?page=IntroPortSerie
http://www.automatepc.fr/?page=RelaisSerie

avec rappel des fonctions série standards.

Quel que soit le montage, ne pas oublier de monter une diode zéner 5.1 Volt/250 mw en inverse sur l'entrée (de la ligne DTR dans notre cas) à cause des tensions négatives qui pourraient détruire le transistor ou l'opto triac.

Il est également possible de réaliser une isolation avec un opto-transistor.
0
Utilisateur anonyme
20 mars 2013 à 23:54
Re:
Il est possible de se passer de micro-contrôleur jusqu'à 2 sorties + 4 entrées en utilisant les signaux annexes destinés au modem


Oui avec une porte logique (AND NAND NOR ou n'importe laquelle) un optocoupleur pour isoler le PC du reste du circuit ainsi qu'un relais concernant la commande du moteur.
(ça me rappelle le montage que j'avais à faire au BTS)

Il faut rappeler que antoineminier nous n'a pas précisé quel est le genre de moteur, s'il s'agit d'un moteur pas-à-pas, notre dernier raisonnement ne sera pas applicable (ou applicable mais le circuit devra être considérablement plus complexe et limité).


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
jibob Messages postés 59 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 4 juillet 2013
21 mars 2013 à 18:36
Bonjour à tous,

Remarque pertinente, si le moteur est de type pas-à-pas ou brushless, ou bien même un simple moteur universel dont la vitesse serait variable, là le micro-contrôleur et une interface spécifique s'avèrent indispensable.

Mais comme la description parle d'un interrupteur, un transistor commandant un relais semble une approche correcte en supposant que toute l'électronique nécessaire au moteur existe déjà.
0
antoineminier
21 mars 2013 à 22:45
Bonjour

Merci pour votre aide.
Le moteur que j'utilise est un moteur à courant continu classique.
Vous m'avez donnez matière à réfléchir en ce qui concerne le problème du port et je vous en suis très reconnaissant.

J'ai demandé à mon professeur d’électronique comment il s'y prendrait pour la partie codage et il m'a dit de faire une routine. Je ne suis pas très sur de ce que c'est. Est ce une simple boucle que l'on répète jusqu'à ce que le programme détecte une information binaire à envoyer?
Prière de ne pas vous arrachez les cheveux en lisant ce message
0
Utilisateur anonyme
22 mars 2013 à 03:20
Re:
Prière de ne pas vous arrachez les cheveux en lisant ce message

Ne t'inquiète pas je fais des automates depuis 20 ans

J'ai demandé à mon professeur d’électronique comment il s'y prendrait pour la partie codage et il m'a dit de faire une routine

Le codage sur quoi?
Sur le PC, sur un éventuel circuit à micro-contrôleur?
tu nous as toujours pas dit ce que c'est ton "interrupteur"...

Bon... on sait déjà que ce n'est pas un moteur pas-à-pas... mais les informations arrivent au compte-goûte...

Tu dis:
une boucle que l'on répète jusqu'à ce que le programme détecte une information binaire à envoyer

Oui... d'où provient cette information? sur combien de bits (en binaire)? et une fois l'info arrivée que doit-t-il faire et où?



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Utilisateur anonyme
22 mars 2013 à 03:42
En bref, la conception de n'importe quel projet démarre forcément par l'élaboration d'un cahier des charges en collaboration avec l demandeur.

Forcément il faut quelqu'un pour t'expliquer ce qu'il faut allumer et avec quoi...

Commence par la...

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
antoineminier
22 mars 2013 à 19:41
Bonjour

Merci acive pour tes conseilles. Le but de mon projet est de réussir à faire une économie d'énergie avec un pont levant type pont gustave flaubert à rouen en analysant la taille du bateau avec une kinect pour lever le pont juste à la bonne hauteur. Je travaille sur la liaison entre le programme qui donne le temps de fonctionnement des moteurs pour que le tablier du pont arrive à la bonne hauteur. Nous utilisons un orphy usb comme simple interrupteur.

On m'a expliquer comment régler mon problème de port. Je vais donc utiliser un port série car l'utilisation de l'usb me semble trop compliqué.
J'aimerais donc si c'est possible que tu m'éclaires sur le code que je devrais rentrer dans visual basic pour faire la connection entre visual basic et orphy.
Simplement les étapes du code comme ex:-renter adresse du port

Merci pour ta précieuse aide.
0
antoineminier
22 mars 2013 à 19:46
Petit fautes, j ai oublié de dire que je faisais la liaison entre le programme visual basic et l'interupteur mais je pense que tu avais compris.
0
Utilisateur anonyme
23 mars 2013 à 13:48
Ok...
Un petit exemple sous VB 2010 avec l'ouverture/fermeture du port ainsi que la réception et envoi de données:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Ouverture() 'Au démarrage il fait appel à la sub Ouverture qui ouvre le port
    End Sub

    Private Sub Ouverture()
        Try
            SerialPort1.PortName = "COM1" 'Numéro de ton port
            SerialPort1.BaudRate = 9600  'Vitesse à régler selon le circuit
            SerialPort1.StopBits = 1
            SerialPort1.DataBits = 8
            SerialPort1.Parity = Parity.None
            SerialPort1.Open()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
     End Sub

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
       'Si le port est ouvert quand on ferme le programme il ferme le port 
       If SerialPort1.IsOpen = True Then SerialPort1.Close()
    End Sub

    'Réception de données:
    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
        Me.Invoke(New EventHandler(AddressOf Recu)) 'Dès qui reçoit un caractère il fait appel à la sub 'Recu'
    End Sub
    Private Sub Recu()
        Threading.Thread.Sleep(100) 'On attend 100ms afin de s'assurer que tuotes les données sont bien arrivées
        Dim DonnéesRecues As String = SerialPort1.ReadExisting
        TextBox1.Text = DonnéesRecues 'Les données sont maintenant dans la variable 'DonnéesRecues'
    End Sub

    'écriture de données:
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
           SerialPort1.Write("BlaBlaBla")
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub




Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
antoineminier
23 mars 2013 à 16:20
Bonjour

Acine je te remercie infiniment pour ta précieuse aide.
Je te tient au courant de l'avancé de mon projet que tu as grandement fait avancé.
0
antoineminier
26 mars 2013 à 11:19
Bonjour

J'ai aujourd'hui essayer de rentrer ton code dans visual basic mais je me suis rendu vite comptee qu'il me manquait la déclaration des variables.
Pourrait tu me donner le type de variable que tu utilises comme integer, short, long...

Merci de prendre le temps de me répondre.
:)
0
Utilisateur anonyme
26 mars 2013 à 11:25
Bonjour,

La seule variable dans mon code est DonnéesRecues et elle est bien déclarée: (Dim DonnéesRecues As String)

As-tu ajouté un serailport sur ta form à partir de ta boite à outils?

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Utilisateur anonyme
26 mars 2013 à 11:40
Bonjour,

La seule variable dans mon code est DonnéesRecues et elle est bien déclarée: (Dim DonnéesRecues As String)

As-tu ajouté un serailport sur ta form à partir de ta boite à outils?

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Utilisateur anonyme
26 mars 2013 à 11:42
Sinon tu peux éventuellement créer ton SerialPort1 dynamiquement, tu ajoutes:
Imports System.IO.Ports 'ça en toute première ligne
Public Class Form1
    Dim WithEvents SerialPort1 As New System.IO.Ports.SerialPort 'et ça juste après le Public Cass Formx



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Rejoignez-nous