Répondre à la discussion
Affichage des résultats 1 à 22 sur 22

Visual Basic



  1. #1
    punky591

    Visual Basic


    ------

    Bonsoir,

    Pour planter le terrain, je suis en train d'effectuer une liaison entre un µC et le PC par port serie, jusque la rien d'extraordinaire.

    Ce que je cherche a faire, c'est envoyer le chiffre tapé sur le clavier en 1 trame . Autrement dit, lorsque je tape par exemple "126", il envoie 3 trames de 8 bits de donnée, { 1;2;6} au lieu de 1 {126}!

    J'ai essayé pas mal de chose mais rien y fait, toujours 3 trames à l'oscilloscope!

    Quel code pourrait me permettre de transformer le tableau d'entier en un seul entier? Ou encore envoyer ce tableau en tant qu'entier?

    La première requête me parait plus accessible, mais en vain!

    Merci pour votre aide

    -----

  2. Publicité
  3. #2
    bzh_nicolas

    Re : Visual Basic

    Un petit bout de code serait le bien venu, car là on ne sait même pas si tu lis un nombre (int, long, ...) ou une chaine de caractères.

  4. #3
    punky591

    Re : Visual Basic

    Bonjour,

    Voici Mon code :

    Imports System.Text

    Public Class Domoa
    Dim COM1 As IO.Ports.SerialPort = My.Computer.Ports.OpenSerialPo rt("COM1", 9600)

    Private Sub Domoa_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'Fenetre général
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    ' Envoie des données

    COM1.Write(Val(ID1.Text))
    End Sub
    End Class
    C'est a vérifier mais je pense qu'il envoie une chaine de caractère (celle tapée) alors que je voudrais le nombre que j'ai tapé en une seule fois!

    Merci d'avoir répondu aussi vite

    Je cherche encore de mon coté!

  5. #4
    punky591

    Re : Visual Basic

    J'ai trouvé quelque chose mais je ne me vois pas faire tout le tableau ASCII de cette maniere :

    Code:
    If (ID1.Text = 135) Then rr = "]"
    COM1.Write(rr)
    Dans l'exemple, la valeur 135 est tapée ; Elle est remplacée par le symbole ASCII correspondant " ]" qui lui même vaut 135 en décimal.

    Je peux bien faire ca pour les 255 valeur ASCII mais il doit y avoir plus simple

    Merci pour votre aide

  6. A voir en vidéo sur Futura
  7. #5
    punky591

    Re : Visual Basic

    j'ai trouvé, il suffisait d'utiliser 'Chr'

    Code:
    COM1.Write(Chr(ID1.Text))
    Voila

  8. #6
    punky591

    Re : Visual Basic

    Un autre problème s'offre a moi!

    Je peux envoyer de 1 à 127 sans problème, je reçois bien les informations, mais dès que j'envoie 128 ou plus, il envoie je ne sais pas quoi et je reçois "63" a chaque fois qui est j'ai vu quelque part, une sorte de parité?! Je ne comprend pas cette réaction. Le code ASCII va de 0 à 255, pourquoi s'arrête t'il a 127?

    Merci

  9. Publicité
  10. #7
    bzh_nicolas

    Re : Visual Basic

    Tu as essayé les fonctions de conversion pour être sûr de ce que tu envoies ?
    CInt pour convertir en int, CShort pour convertir en short. Tu seras sûr de ce que tu envoies.

  11. #8
    punky591

    Re : Visual Basic

    Oui j'ai essayer toute les conversions que j'ai trouvé.

    Pour être sur j'ai envoyé manuellement les informations :

    Code:
    COM1.Write(Chr(XXX))
    (Remplacement de XXX par des nombres)

    Encore une fois un problème pour les nombres supérieur a 127.

    Cela vient donc de la configuration du port, l'ASCII étendu n'étant apparemment pas géré!

    Il dois exister une configuration mais je ne la connais pas!

  12. #9
    whoami

    Re : Visual Basic

    Bonjour,

    RS232 dispose de différents formats pour les transmissions, il faut régler tous les paramètres, DONT la taille des données, souvent 7 bits de données par défaut !!

  13. #10
    punky591

    Re : Visual Basic

    Bonsoir,

    Aurais-je oublié quelque chose ? :

    Code:
    Dim COM1 As IO.Ports.SerialPort
    COM1 = My.Computer.Ports.OpenSerialPort("COM1", 9600, 0, 8, 1)
    Tout parait correct selon moi!

  14. #11
    whoami

    Re : Visual Basic

    Bonjour,
    Citation Envoyé par punky591 Voir le message
    Bonsoir,

    Aurais-je oublié quelque chose ? :

    Code:
    Dim COM1 As IO.Ports.SerialPort
    COM1 = My.Computer.Ports.OpenSerialPort("COM1", 9600, 0, 8, 1)
    Tout parait correct selon moi!
    Ici, oui, mais pas dans ton autre message.

  15. #12
    punky591

    Re : Visual Basic

    Bonjour!

    Je ne vois pas trop ce qu'il y a dans l'autre message qu'il n'y a pas dans celui ci a part "COM1.Write(Chr(XXX))".

    Je ne l'ai pas écrit car il ne s'agit pas de la configuration

    L'envoie se limite toujours a 127

    Je persiste!

  16. Publicité
  17. #13
    whoami

    Re : Visual Basic

    Bonjour,
    Citation Envoyé par punky591 Voir le message
    Bonjour!

    Je ne vois pas trop ce qu'il y a dans l'autre message qu'il n'y a pas dans celui ci a part "COM1.Write(Chr(XXX))".

    Je ne l'ai pas écrit car il ne s'agit pas de la configuration

    L'envoie se limite toujours a 127

    Je persiste!
    Ah ?

    Citation Envoyé par punky591 Voir le message
    Bonjour,

    Voici Mon code :

    Code:
    Imports System.Text
    
    Public Class Domoa
    Dim COM1 As IO.Ports.SerialPort = My.Computer.Ports.OpenSerialPo rt("COM1", 9600)
    
    Private Sub Domoa_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'Fenetre général
    End Sub
    
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    ' Envoie des données
    
    COM1.Write(Val(ID1.Text))
    End Sub
    End Class
    C'est a vérifier mais je pense qu'il envoie une chaine de caractère (celle tapée) alors que je voudrais le nombre que j'ai tapé en une seule fois!

    Merci d'avoir répondu aussi vite

    Je cherche encore de mon coté!

  18. #14
    punky591

    Re : Visual Basic

    Bonjour a tous,

    Cela ne fonctionne toujours pas, la configuration de Windows elle meme pourrait elle etre en cause? Je suis a cours d'idée!

    Merci

  19. #15
    Dormeur74

    Re : Visual Basic

    J'ai bien peur que ton pb ne vienne de la chaîne string que tu envoies (unicode). Essaye de convertir tes données au format Bytes avant des les envoyer pour voir ce que ça donne.

  20. #16
    punky591

    Re : Visual Basic

    Bonjour!

    A vrai dire, je pense avoir tout essayer les moyens de conversions, J'ai aussi envoyé directement chaque valeur, cela ne fonctionne pas. Existe t-il d'autre instruction/Librairie pour gerer le port serie?

    Je soupçonne les instructions de ne pas 'savoir' (Pas etre prévu) envoyer au dela de 127!

  21. #17
    Jack
    Modérateur

    Re : Visual Basic

    tu es sur que le protocole est le bon des 2 côtés? nombre de bits/caractère, parité, etc?

    A+

  22. #18
    punky591

    Re : Visual Basic

    Oui j'en suis certain! D'une part parce que pour les test je renvoie au PC ce que lui même envoie.
    Puis d'autre part, je vois très bien a l'oscilloscope qu'il y a 8 bits de données, 1 de start et 1 de stop!

    Les anciennes versions de vb fonctionnait mieux ce niveau je me trompe?

  23. Publicité
  24. #19
    Dormeur74

    Re : Visual Basic

    Avec quelle version de VB travailles-tu ?

  25. #20
    punky591

    Re : Visual Basic

    Ah oui j'ai oublié de préciser, je travail avec la version 2010.

  26. #21
    Jack
    Modérateur

    Re : Visual Basic

    je ne conais pas VB, mais en principe, lorsqu'on appelle une fonction on peut s'attendre à ce qu'elle nous renvoie une valeur indiquant si l'appel s'est bien déroulé ou pas.

    Si la fonction open renvoie un résultat, as-tu testé la valeur de retour?

    A+

  27. #22
    Dormeur74

    Re : Visual Basic

    Il semblerait que la gestion des ports série sous VB 2010 fasse l'objet de critiques lourdes, aussi bien au niveau des API que du contrôle. Problème pratiquement inconnu sous VB 6.0.

    Il faut dire que les ports série n'ont jamais été la tasse de thé de Microsoft ; tu trouveras quelques informations très intéressantes ici.

    Je pense que ton problème vient d'un encodage incorrect des chaînes de caractères...mais ne puis l'affirmer. As-tu la possibilité de tester ton code sous VB 6.0 ?

Discussions similaires

  1. Visual Basic
    Par nicom974 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 29/07/2008, 14h58
  2. Visual Basic
    Par Indoterrestre dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 17/09/2007, 12h45
  3. Visual basic
    Par hollanders dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 20/02/2007, 19h55
  4. Visual Basic
    Par Mandrinus dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 09/01/2007, 10h09
  5. Visual Basic
    Par knecmotet dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 09/07/2004, 13h57