begin process at 2010 02 10 07:55:23
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

J'AI BESOIN D'AIDE !!!! :)

 > 

Réception RS232


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

Réception RS232

vendredi 31 mars 2006 à 09:37:43 | Réception RS232

tg57

Bonjour à tous, j'ai un petit problème avec la réception sur VB j'envoi la valeur 1023 via un picbasic à 9600 Bauds et la valeur reçue reste fixe à 203.
Si quelqu'un à une solution je l'en remerci ci joint mon programme:

 Const Serveur = "Excel|C:\Documents and Settings\sts2\Bureau\PROJET\Visual Basic2\Analyseur_PC\relever_polluants.xls"
    Public ligne As Integer
    Public colonne As Integer
    Public Mess As String

Private Sub Com1_Click()
    Com1.Checked = True
    Com2.Checked = False
    MSComm1.CommPort = 1
End Sub

Private Sub Com2_Click()
    Com2.Checked = True
    Com1.Checked = False
    MSComm1.CommPort = 2
End Sub

Private Sub Command1_Click()
    Select Case Command1.Caption
        Case "Acquisition"
            Command1.Caption = "Arrêt"
            MSComm1.Settings = "9600,N,8,1"
            MSComm1.RThreshold = 3
            MSComm1.PortOpen = True
        Case "Arrêt"
            Command1.Caption = "Acquisition"
            MSComm1.PortOpen = False
    End Select
End Sub

Private Sub Command2_Click()
    End
End Sub

Private Sub Excel_Click()
'Ouverture de l'application
    Set appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
    Set wbExcel = appExcel.Workbooks.Open("C:\Documents and Settings\sts2\Bureau\PROJET\Visual Basic2\Analyseur_PC\relever_polluants.xls")
'appExcel.visible=True permet de rendre la fenetre visible, car sans sa, elle est ouverte mais pas visible
    appExcel.Visible = True
End Sub

Private Sub Exit_Click()
    End
End Sub

Private Sub Form_Load()
    MSComm1.InputLen = 3
    ligne = 2
    Label3.LinkTopic = Serveur
    Label3.LinkMode = 2
    Label1.LinkTopic = Serveur
    Label1.LinkMode = 2

End Sub

Private Sub Notice_Click()
'permet d'ouvrir la notice d'utilisation
    Shell "C:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe C:\Analyseur_PC\Notice.pdf"
End Sub

Private Sub Print_Click()
    Dim appExcel As Excel.Application 'Application Excel
    Dim wbExcel As Excel.Workbook 'Classeur Excel
    Dim wsExcel As Excel.Worksheet 'Feuille Excel
'Ouverture de l'application
    Set appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
    Set wbExcel = appExcel.Workbooks.Open("C:\Documents and Settings\sts2\Bureau\PROJET\Visual Basic2\Analyseur_PC\relever_polluants.xls")
'wsExcel correspond à la première feuille du fichier
    Set wsExcel = wbExcel.Worksheets(1)
    ActiveWindow.SelectedSheets.PrintOut Copies:=1
    wbExcel.Close
    Set wbExcel = Nothing
    appExcel.Quit
End Sub

Private Static Sub MSComm1_OnComm()
    Dim résultat() As Byte
    Dim Quantité  As Byte
    Select Case MSComm1.CommEvent
        Case comEvReceive
            résultat = MSComm1.Input
            Quantité = résultat
            Label3.Caption = Quantité
            Label1.Caption = Time
            Label3.LinkItem = "L" & ligne & "C2"
            Label1.LinkItem = "L" & ligne & "C1"
            Label3.LinkPoke
            Label1.LinkPoke
            ligne = ligne + 1
    End Select
End Sub

Private Sub Version_Click()
'affiche le message version ...
    Mess = "Version 1.0   Copyright by Chris"
'la message box qui souvre sappele Analyseur PC
    MsgBox Mess, vbOKOnly + vbInformation, "Acquisiton ppb"
End Sub

vendredi 31 mars 2006 à 15:36:16 | Re : Réception RS232

jack

Administrateur CodeS-SourceS
Salut
A mon avis, le problème est dans la gestion de la réception :
Tu lis LES données dans un tableau de Bytes "résultat()" et tu transfères ce tableau dans un seul Byte "Quantité"
Qu'es-tu sensé recevoir ?
Un texte composé de chiffre ou des codes Ascii (limité entre 0 et 255) correspondant aux valeurs ?
C'est à dire, reçois-tu la chaîne "1023" ou une suite de Bytes 255 puis 255 ?
"1023" : Lis le .Input en String, directement
"255 + 255" : Résultat décimal = Val("&h" & Hex(255) & Hex(255)) qui donne -1 en entier signé --> Complément à 2 de 1024

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

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
vendredi 31 mars 2006 à 19:55:08 | Re : Réception RS232

tg57

Salut dejà merci d'avoir répondu aussi vite
En fait j'envoi plus une valeur de 0 à 1023 mais de 0 à 255 et je veux que ces valeurs s'affichent dans le label
Peux tu me dire clairement qu'elle ligne je dois changer de mon côter je vais tenter ta solution merci
samedi 1 avril 2006 à 01:49:02 | Re : Réception RS232

jack

Administrateur CodeS-SourceS
Re
Ta phrase n'est pas claire : Les valeurs vont de 0 à 255, c'est ça ?
Mais cela ne nous dit pas si tu es sensé les recevoir sous forme de 3 chiffres qui se suivent 2-5-5, ou bien si chaque Byte représente une valeur.
Je penche pour cette dernière théorie.
Donc ton programme devrait fonctionner.
Seule chose : Lors d'une récupération de données, tu peux très bien récupérer plusieurs données qui sont stockées dans le buffer.
Alors que comptes-tu en faire ?
Si tu ne dois afficher que le dernier lu, il te suffit de transformer le dernier Byte de ton tableau d'acquisition en chaine
Private Static Sub MSComm1_OnComm()
    Dim résultat() As Byte
    Dim Quantité  As Byte
    Select Case MSComm1.CommEvent
        Case comEvReceive
            résultat = MSComm1.Input
            Quantité = résultat
            Label3.Caption = Quantité CStr(résultat(UBound(résultat)))
            Label1.Caption = Time
            Label3.LinkItem = "L" & ligne & "C2"
            Label1.LinkItem = "L" & ligne & "C1"
            Label3.LinkPoke
            Label1.LinkPoke
            ligne = ligne + 1
    End Select
End Sub

Le CStr est juste là pour la forme, pas obligatoire.
UBound(Tableau) renvoie l'index le plus élevé dans le tableau.
résultat(UBound(résultat)) est donc la valeur du dernier élément du tableau.

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

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
samedi 1 avril 2006 à 01:57:44 | Re : Réception RS232

jack

Administrateur CodeS-SourceS
En y reflechissant, je vois que tu veux remplir une feuille excel avec ces données. Bonne astuce que d'utiliser les liens DDE.
Donc, si on veut être puriste, il ne faut pas perdre de données. Si plusieurs sont lues dans le même temps, il faut quand même les données.
Elles auront juste toutes la même heure (Label1)
Private Static Sub MSComm1_OnComm()
    Dim résultat() As Byte, r As Long
    Select Case MSComm1.CommEvent
        Case comEvReceive
            résultat = MSComm1.Input
            For r = 0 To UBound(résultat)   ' Les tableaux commencent à 0 par défaut
               Label3.Caption =
CStr(résultat(r))
               Label1.Caption = Time
               Label3.LinkItem = "L" & ligne & "C2"
               Label1.LinkItem = "L" & ligne & "C1"
               Label3.LinkPoke
               Label1.LinkPoke
               ligne = ligne + 1
            Next r
    End Select
End Sub


Juste une précaution : Il me semble que Excel ne sait pas gérer les tableaux de plus de 32768 lignes ...
Et rappelle toi que la scrutation DDE n'est pas toujours instantanée (charge machine ...). Il se peut donc que certaines cellules restent vides.

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

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
samedi 1 avril 2006 à 09:58:13 | Re : Réception RS232

tg57

Re
Oui tu as bien compris je veux envoyer une valeur qui va de 0 à 255 exemple 50 et que cette valeur apparaisse dans le label ce qui se rapporte à ta premiere proposition je vais essayer merci pour ton aide
En fait c'est pour mon projet BTS alors j'essais ça lundi merci encore
lundi 3 avril 2006 à 09:31:20 | Re : Réception RS232

tg57

Re j'ai essayé tes deux solutions aucune ne fonctionne
je te rappelle ce que je fais j'envois une valeur qui varie de 0 à 255 et celle ci va s'insérer dans une feuille excel si t'as une autre solution merci de me le dire

lundi 3 avril 2006 à 09:31:38 | Re : Réception RS232

tg57

Re j'ai essayé tes deux solutions aucune ne fonctionne
je te rappelle ce que je fais j'envois une valeur qui varie de 0 à 255 et celle ci va s'insérer dans une feuille excel si t'as une autre solution merci de me le dire



Cette discussion est classée dans : excel, private, click, mscomm1, appexcel


Répondre à ce message

Sujets en rapport avec ce message

pb reception donnee port serie [ par jerome57440 ] je travaille actuelement sur un projet sur lequelle je dois recuperer des données d'une carte CEPR (qui sert d'interface entre le PC et un lecteur d'e ouverture fichier excel [ par Xynder59 ] Bonjour, je souhaite ouvrir un fichier excel avec vb mais lorsque je clique sur mon bouton, il me met un message :"automation error"voila mon code :Pr Dialogue entre fichiers excel [ par LF pour les nuls ] Bonjour, je suis tout nouveau ici et peu expérimenté en VBA. Or, je suis bloqué...Je suis en train de faire une application Excel pour gérer des entré ouvrir un fichier excel dans word [ par titemi ] Bonsoir,Tout d'abord, merci au papa de Thibaud, j'ai factorisé et j'ai réduit mon code.Merci aussi à Casy, mais le problème se situait dans le fait qu Multipage vba excel [ par avyrex1926 ] Bonjour,Petit problème,Je voudrais quand je click sur un bouton vba, que le Userform1 ouvre dans le multipage 3, mais je n'y arrive pas.Voici ce que j Récupérer la valeur d'une cellule par click [ par kusss40 ] J'ai un petit programme VB qui me remplit automatiquement un tableau excel (listing) à partir de plusieurs fichiers excel (fiches).J'aimerai, en cliqu Problème avec mon code [ par Morrissey35 ] Bonjour, dans le code ci-dessous, lorsque je clique sur Ok, VB m'indique une erreur...parce qu'il n'arrive pas à lire la variable Fiche. Celle ci est export de excel à access en un click [ par chaudier37 ] Bonjour,Je suis en train de faire un petit exercice sur excel,et access.comment faire en un click sur excel un ajout de données dans access ?dans exce Problème avec Extraction de données [ par Morrissey35 ] Bonjour, j'ai un petit souci concernant l'execution d'un code VBA sous excel. Je resume la situation: j'ai une macro qui me permet d'extraire des donn Fermer excel [ par gouzou44 ] Bonsoir, J'ai un petit problème. J'ai fais une application qui a besoin de lancer plusieurs fois excel. Ce que je n'arrive pas a faire c'est de ferme


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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,655 sec (4)

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