begin process at 2012 02 14 15:05:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Système

 > 

Périphériques

 > 

DataReceived l'interuption ne fonctionne pas: Besoin d'aide


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

DataReceived l'interuption ne fonctionne pas: Besoin d'aide

dimanche 16 novembre 2008 à 12:56:05 | DataReceived l'interuption ne fonctionne pas: Besoin d'aide

Aselophe

Bonjour a tous

J'ai un petit probleme avec la fonction DataReceived. Interuption a la reception d'un byte ne fonctionne pas.
J'ai pourtant cherché sur plusieur site et livre mes j'ai rien trouvé.
J'ai un pic qui m'envoye un byte sur le port COM RS232.
Si je met "instance.ReadByte" dans un timer ceci fonctionne correctement.
Mes si je prend la fonction interuption port com

"PrivateSub RS232_DataReceived(ByVal sender AsObject, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles RS232.DataReceived"

Le programme ne vas pas dans interuption.

Programme fait sur "Microsoft Visual Basic 2008 Expresse"

Je souhaiterai SVP vottre aide si vous trouvé mon erreur.

Merci de vottre aide !


Telecharger mon Programme sur :  [ Lien ]

Ou voici mon code:

Imports

System.IO.Ports

Public

Class Form

Dim instance AsNew SerialPort

 

PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load

instance.Open()

EndSub

PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Quitter.Click

instance.Close()

Close()

EndSub

PrivateSub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

instance.Write(TextBox1.Text)

EndSub

PrivateSub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

 

EndSub

PrivateSub RS232_DataReceived(ByVal sender AsObject, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles RS232.DataReceived

Label1.Text = Convert.ToChar(instance.ReadByte)

Label2.Text = (

"Interupte en fonction")

EndSub

End

Class
dimanche 16 novembre 2008 à 13:05:25 | Re : DataReceived l'interuption ne fonctionne pas: Besoin d'aide

casy

Membre Club
Pourquoi poster sous VB6, puisque tu es en VB2008 ????

Si j'en crois ton code, ton objet RS232 s'appelle Instance (pas futé comme nom, mais c'est pas le sujet)

Ton évènement DataReceived ne peut pas se déclenché puisqu'il n'est pas branché sur ton objet Instance. Il est branché sur un autre objet qui s'appelle RS232 : ...HandlesRS232.DataReceived


---- Sevyc64  (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #    [ Lien ]
dimanche 16 novembre 2008 à 13:09:03 | Re : DataReceived l'interuption ne fonctionne pas: Besoin d'aide

casy

Membre Club
Oupps, ripage de bouton dsl

Donc pour continuer, si je comprend bien tu as un objet RS232 sur ton écran je présume connecté à un port série sur lequel tu as un évènement DataReceive.

Mais dans ton code, tu déclare un second objet, Instance en l'occurrence, branché lui aussi sur un port série je présume, sauf que dans le code que tu nous montre il n'est même pas configuré.

A mon avis je pense que tu te mélance les pinceaux et que l'objet Instance n'a pas lieu d'être, il faut que tu travaille sur l'objet RS232


---- Sevyc64  (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #    [ Lien ]
dimanche 16 novembre 2008 à 13:26:39 | Re : DataReceived l'interuption ne fonctionne pas: Besoin d'aide

Aselophe

J'ai  mis sur VB6 Car il y avait pas pour VB2008

Je suis debutant sur Visual basic ses bien possible que je me mélange les pinceaux .

Je suis desoler pour les nom que j'ai copier collé sur l'aide de l'aide microsoft .

Mes si j'ai bien compris l'erreur se touve a cette ligne.

PrivateSub RS232_DataReceived(ByVal sender AsObject, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles RS232.DataReceived

je les modifié comme suite

PrivateSub instance_DataReceived(ByVal sender AsObject, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles RS232.DataReceived

Mes cela ne marche pas.

Si cela ne te derange pas je voudrai savoir si tu pourrai m'aidé un peut plus.

Merci encore pour ton aide.

dimanche 16 novembre 2008 à 13:46:29 | Re : DataReceived l'interuption ne fonctionne pas: Besoin d'aide

Aselophe

Merci pour ton aide j'ai reussi a faire fonctionner interuption

Mes reste que j'ai un souci maintenent pour afficher ma valeur sur le Label1.Text & Label2.Text

Pour vous je pense que l'erreur se voit a vus d'oeil mes moi je patoge dans une flaque

Code:

Imports System.IO.Ports

Public

Class Form

Private Sub Form1_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase .Load

RS232.Open()

End Sub

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Quitter.Click

RS232.Close()

Close()

End Sub

Private Sub Button2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

RS232.Write(TextBox1.Text)

End Sub

Private Sub RS232_DataReceived( ByVal sender As Object , ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles RS232.DataReceived

Label2.Text = (

"Interupte en fonction" )

Label1.Text = Convert.ToChar(RS232.ReadByte)

 

End Sub

End

Class
dimanche 16 novembre 2008 à 14:37:51 | Re : DataReceived l'interuption ne fonctionne pas: Besoin d'aide

casy

Membre Club
Ceratinement que tu dois avoir un message d'erreur sur une histoire de thread.

Je vais essayer de faire simple.

La fonction DataReceive ne s'execute pas, en réalité dans le processus principal de ton logiciel, celui de ton écran, en fait elle s'execute dans son propre processus indépendant. Elle ne peut donc pas ainsi acceder directement aux objets du processus principal, notamment les controles de ton écran.

Il faut mettre en place un mécanisme appelé délégué (delegate en anglais) pour que ta fonction marche. En gros, ta fonction DataReceive va appeler par un mécanisme particulier, une seconde fonction en lui passant les données, et cette seconde fonction qui va se charger de faire la mise à jour des labels. Ca va doner le code suivant :


Imports System.IO.Ports
Public Class Form

        Private Delegate Sub _Affiche_reception(ByVal donnee As String)

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
                RS232.Open()
        End Sub

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Quitter.Click
                RS232.Close()
                Close()
        End Sub

        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
                RS232.Write(TextBox1.Text)
        End Sub

        Private Sub RS232_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles RS232.DataReceived
                Me.Invoke(New _Affiche_reception(AddressOf Affiche_reception), RS232.ReadExisting)
        End Sub

        Private Sub Affiche_reception(ByVal donnee As String)
                Label1.Text = "Interuption en fonction"
                Label2.Text = donnee      'On affiche les données à l'écran
        End Sub


End Class



JE t'invite à regarder cette source, qui est une initiation à l'utilisation du port série avec .Net --> http://www.vbfrance.com/codes/UTILISATION-PORT-COM-VS2005_42181.aspx


---- Sevyc64  (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #    [ Lien ]
dimanche 16 novembre 2008 à 14:42:47 | Re : DataReceived l'interuption ne fonctionne pas: Besoin d'aide

Aselophe

Un grand Merci a toi , Tu est genial

J'aurai pue encore cherche longtemp .

Ceci fonctionne super bien . et ca me fait comprendre ces fonction de base que je connaissé pas.

Merci et bonne journée a toi
mardi 24 février 2009 à 18:59:36 | Re : DataReceived l'interuption ne fonctionne pas: Besoin d'aide

taouale2

Bonsoir,

Merci Casy pour cette aide, je tournais un peu en rond aussi à cause de ces histoires de thread.
J'aurais voulu esquiver ce concept, mais je commence à voir le bien fondé de la méthode donc je vais m'y mettre finalement.
Pour info, j'ai lu sur un autre post (en C#) que la méthode invoke est très pratique pour des cas simples, mais a ses limites (bloquage du thread le temps de l'exécution, et ne permet pas de retourner de valeur).
Le concept asynchrone (begininvoke ...) est plus performant.

Bonne soirée et merci encore
lundi 14 mars 2011 à 11:26:38 | Re : DataReceived l'interuption ne fonctionne pas: Besoin d'aide

foufate

Avec les délégués sa marche de merveille


Cette discussion est classée dans : system, instance, rs232, datareceived, byval


Répondre à ce message

Sujets en rapport avec ce message

[Catégorie modifiée VB6 --> .Net] envoi d'un fichier par RS232 [ par wajdibh ] bjr à tous, svp j'ai besoin de votre aide pour achevé mon mini projet,(VB.NET). le projet consiste a envoyer un fichier soit .txt ou excel qui contien On y est presque! [ par aldrac ] Re-bonjour a tous, et oui on y est presque parce que après pas mal de recherche j'ai trouver presque ce qu'il me faut !! Je voudrais que ce petit bout Comment imprimer tout le contenu d'un datagridview ? [ par olman50 ] Bonjour, je souhaiterais imprimer tout le contenu de mon datagridview mais je n'arrive qu'à imprimer la partie visible de ce datagridview. Après plu Notification et Win32_ProcessStopTrace [ par JiP85 ] Bonjour, J'utilise VB2005 avec le Framework2 et je n'arrive pas à faire fonctionner la notification de fin de process avec WMI. Quelque soit l'évèneme mciSendString [ par paillekane ] Bonjour à tous. Je cherche à developper une application permettant d'enregistrer le son de mon PC (OS : Windows 7) J'ai quelques soucis avec la bibl utilisation de la fonction drag and drop [ par bahharkarim ] bonjour j'utilise 4 label 1;2;4;5 dans vb 2008[^^sad1] et je le drag and drop de label1 vers label3 et label2 vers label5 mais il ne fonctionne pas c echec d'envoi de mail systématique [ par Ant95 ] Bonjour, Depuis ce soir je n'arrive plus à envoyer de mail via mon application VB.Net. Le message d'erreur retourné est le suivant : [quote]Le serve drag and drop de plusieurs labels [ par bahharkarim ] bonjour a tout le monde j'ai créer une application ou il y a 6 labels et j'utilise la fonction drag and drop le problème c'est que lors le contenu d Structure du code MVC [ par witschi ] Bonjour à tous, J'ai une petite question concernant la structure de mon code. Alors voilà, mon code est structurée en MVC et j'aimerais connaître votr Pb Listbox [ par alexsupertramp ] Bonjour, Je fais un programme sur les options. J'ai deux listbox. La première affiche une liste d'indices boursiers. Après le choix d'un indice, la s


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 3,884 sec (4)

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