IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Un segment de memoire a été endommagé


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 37
    Points : 39
    Points
    39
    Par défaut Un segment de memoire a été endommagé
    Bonjour tout le monde
    J'ai créer une application sur vb qui sert à se connecter à un serveur OPC , et j'ai un probléme lors de l'ajout des items au group

    Nom : erreur.PNG
Affichages : 1248
Taille : 35,6 Ko

    et donc j'ai besion de vos aides et merciii d'avance

  2. #2
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 37
    Points : 39
    Points
    39
    Par défaut
    Nom : errur continue.PNG
Affichages : 1098
Taille : 40,3 Ko

  3. #3
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Points : 10 543
    Points
    10 543
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Ce genre d'erreur résulte généralement de l'utilisation de code managé avec un code unsafe et/ou natif. Comme a priori tu utilises une bibliothèque tiers, 3 cas se présentent :
    • cette bibliothèque est buggée. Et dans ce cas, il n'y a pas grand chose à faire ;
    • l'utilisation de la bibliothèque est faite de manière inappropriée, ce qui déclenche des bugs ;
    • le wrapper qui permet d'appeler du code natif (qui contient généralement des DllImport à foison) est erroné et réalise de mauvaises liaisons entre les données, ce qui provoque l'erreur.


    Bref, en l'état actuel des choses, difficile de t'aider. Il nous faudrait déjà la confirmation que tu utilises bien une bibliothèque tiers, que c'est une bibliothèque native ou unsafe. Ensuite, il nous faudrait la bibliothèque utilisée et voir si quelqu'un l'a déjà utilisé. Un exemple de code simple reproduisant le problème serait également le bien venu.

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 37
    Points : 39
    Points
    39
    Par défaut
    Bonjour et merci bien pour votre réponse , bon je sais pas qu'est ce qu'une bibliothéque tiers( bibliothèque native ou unsafe) mais j'ai ajouté une réference par l'instruc suivante Imports SAOPCAutomation et j'ai déclaré mes variables suivant cette réf

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      Public ServeurOPC As New SAOPCAutomation.OPCServer 'objet serveur
        Public WithEvents OPCGroupes As SAOPCAutomation.OPCGroups 'Collection de Groupes
        Public WithEvents OFSGroupeAutomate1 As SAOPCAutomation.OPCGroup 'group d 'item
        Public ItemLectureAutomate1_Compt As SAOPCAutomation.OPCItem ' opc item1
        Public ItemLectureAutomate1_analog As SAOPCAutomation.OPCItem  'opc item1
    il y'a d'autre personnes qui ont utilisé cette réf (d'aprés ce que j'ai trouvé sur les forums) mais ils n'ont pas ce type de probléme

  5. #5
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Points : 10 543
    Points
    10 543
    Billets dans le blog
    21
    Par défaut
    Alors, dans l'ordre :
    • Bibliothèque tiers : bibliothèque développée par un tiers, c'est-à-dire une personne ou une équipe extérieure
    • Bibiothèque native : bibliothèque non managée (écrite en C, en C++ ou tout autre langage compilé)
    • Bibliothèque unsafe : bibliothèque managée qui utilise des opérations non sûres (d'où le unsafe) comme la manipulation de pointeurs


    il y'a d'autre personnes qui ont utilisé cette réf (d'aprés ce que j'ai trouvé sur les forums) mais ils n'ont pas ce type de probléme
    Dans ce cas, ce serait une mauvaise utilisation de la bibliothèque. Auquel cas il nous faudrait le code complet, et non juste la déclaration des variables...

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 37
    Points : 39
    Points
    39
    Par défaut
    Merci
    voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    Imports SAOPCAutomation ' add ref ; SA OPC Automation 
    Imports System.Runtime.InteropServices
    'ajout des ref sys optionnel
    Imports System
    Imports System.IO
    Imports System.ComponentModel
    Public Class Form1
        'déclaration des objet serveur 
        Public ServeurOPC As New SAOPCAutomation.OPCServer 'objet serveur
        Public WithEvents OPCGroupes As SAOPCAutomation.OPCGroups 'Collection de Groupes
        Public WithEvents OFSGroupeAutomate1 As SAOPCAutomation.OPCGroup 'group d 'item
        Public ItemLectureAutomate1_Compt As SAOPCAutomation.OPCItem ' opc item1
        Public ItemLectureAutomate1_analog As SAOPCAutomation.OPCItem  'opc item1
        'Public ItemLectureAutomate1() As SAOPCAutomation.OPCItem
        Dim FinCreation As Boolean 'Flag de signalement de la fin de création 
        Const OPC_DS_DEVICE = 2 ' la source de laquelle on va lire les items (la valeur 2 est décrit dans le tuto OFS)
     
     
        ' tableau
        Dim tab_item() As SAOPCAutomation.OPCItem
        Dim t() As String
        Dim items() As String
        Dim index, Pcourant As Integer
        'variable
        Dim val1_preced As String 'test de la nouvelle valeur
        Dim test1 As Boolean 'fermeture de serveur
        Dim test_doublitem As Boolean 'verifier les doublons
     
     
        Public Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     
            Button3.Enabled = False
            Button5.Enabled = False
     
        End Sub
        Public Sub Form1_Unload(sender As Object, e As EventArgs) Handles MyBase.Load
            'déconnection à la fermeture pour libérer de l'espace 
            DeConnectionOPC()
     
        End Sub
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Try
                ConnectionOPC()
                Button3.Enabled = True
                Button5.Enabled = True
                index = 1
            Catch ex As System.Runtime.InteropServices.COMException
                MessageBox.Show(ex.Message)
            End Try
        End Sub
     
     
        'fonction ConnectionOPC
        '-------------------------------------------------------------------------------------------------------------------------------------------------------
        Public Sub ConnectionOPC()
            'connection de serveur 
            ServeurOPC = New OPCServer
            ServeurOPC.Connect("Schneider-Aut.OFS")
            If ServeurOPC.ServerState = 1 Then
                MsgBox("Connection OK")
            Else
                MsgBox("Défaut connection")
                Exit Sub
            End If
            ' Connection OK création du groupe
     
            OPCGroupes = ServeurOPC.OPCGroups
            OPCGroupes.DefaultGroupIsActive = vbTrue
            OPCGroupes.DefaultGroupDeadband = 0
            OFSGroupeAutomate1 = OPCGroupes.Add("GroupeAutomate1")
            OFSGroupeAutomate1.IsSubscribed = vbTrue
            OFSGroupeAutomate1.IsActive = vbTrue
            OFSGroupeAutomate1.UpdateRate = 1000
     
     
        End Sub
     
        'fonction deConnectionOPC
        '-------------------------------------------------------------------------------------------------------------------------------------------------------
        Public Sub DeConnectionOPC()
     
            'ServeurOPC.OPCGroups.RemoveAll() ' deconnection des groupes
            OPCGroupes.RemoveAll()
            OPCGroupes = Nothing
            OFSGroupeAutomate1 = Nothing
            ServeurOPC.Disconnect() 'déconnection du serveur
            ServeurOPC = Nothing
        End Sub
     
        ' pour l'ajout des items dans un tableau t 
        Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
            Try
                test_doublitem = True
                If (TextBox1.Text = "" Or TextBox2.Text = "") Then ' le texbox1 contient l@ memoire de l'item et le textbox2 contient un nom de l'item (choisi par l'utilisatuer)
                    MsgBox("veuillez saisir le nom et l'adresse de l'item")
                Else
                    If t Is Nothing Then
                        ReDim t(0)
                        t(t.Count - 1) = TextBox2.Text
                        ListView1.Items.Add(TextBox1.Text)
     
                    Else
                        For i = 0 To t.Count - 1
                            If (t(i) = TextBox2.Text Or items(i) = TextBox1.Text) Then
                                test_doublitem = False
                                MsgBox("l'Item existe déja")
                                Exit For
                            End If
                        Next
                        If (test_doublitem = True) Then
                            ReDim Preserve t(t.Count)
     
                            t(t.Count - 1) = TextBox2.Text
                            ListView1.Items.Add(TextBox1.Text)
                        End If
     
                    End If
                End If
            Catch ex As System.Runtime.InteropServices.COMException
                MsgBox(e.ToString)
            End Try
            OPCGroupes = Nothing
        End Sub
       ' le bouton valider qui va faire l'ajout de l'item 
     
    Public Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
            Try
                For i = 0 To t.Count - 1
                    ItemLectureAutomate1_Compt = OFSGroupeAutomate1.OPCItems.AddItem(t(i), i + 1)
                    If tab_item Is Nothing Then
                        ReDim tab_item(0)
                        tab_item(tab_item.Count - 1) = ItemLectureAutomate1_Compt
                    Else
                        ReDim Preserve tab_item(tab_item.Count)
                        tab_item(tab_item.Count - 1) = ItemLectureAutomate1_Compt
                    End If
                Next
            Catch ex As System.Runtime.InteropServices.COMException
                MsgBox(e.ToString)
            End Try
        End Sub
    lors de l'affichage de l'erreur le curseur s'arrete à ce niveau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ItemLectureAutomate1_Compt = OFSGroupeAutomate1.OPCItems.AddItem(t(i), i + 1)
    Indication
    J'ai essayé de faire directement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab_item(tab_item.Count - 1) =OFSGroupeAutomate1.OPCItems.AddItem(t(i), i + 1)
    mais lorsque j'ai utilisé ce tableau tab_item pour faire la lecture a prés ça n'a pas marché (probleme de ref null)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For i = 0 To tab_item.Count - 1
     
                tab_item(i).Read(OPC_DS_DEVICE)
     
                Me.DataGridView1.Rows.Add("m", "compteur", tab_item(i).Value, ItemLectureAutomate1_Compt.Quality, Now().Date.ToString(), Now.TimeOfDay.ToString())
     
            Next
    donc j'ai procéder à cette instance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ItemLectureAutomate1_Compt = OFSGroupeAutomate1.OPCItems.AddItem(t(i), i + 1)
    Il 'ya une autre fonction d'ajout d'item AddItems() mais avec plusieurs parametre que j'ai testé mais ça n'a jamais marché et j'ai pas pu le résoudre Nom : aaa.PNG
Affichages : 1058
Taille : 42,6 Ko

    J'attends vos commentaires et merciii énormément

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 37
    Points : 39
    Points
    39
    Par défaut
    J'ai fait une faute dans le commentaire du 1er code en effet le textbox2 s'agit de l'@ et le textbox1 et le nom

  8. #8
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 37
    Points : 39
    Points
    39
    Par défaut
    pour la fonction additems c'est ce que j'ai besion de mettre comme primitives

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sub AddItems(NumItems As Integer, ByRef ItemIDs As System.Array, ByRef ClientHandles As System.Array, ByRef ServerHandles As System.Array, ByRef Errors As System.Array, Optional RequestedDataTypes As Object = Nothing, Optional AccessPaths As Object = Nothing)
         Member of SAOPCAutomation.OPCItems

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/01/2013, 11h46
  2. probleme de segment de memoire partagé
    Par charisma dans le forum C
    Réponses: 1
    Dernier message: 09/01/2007, 10h08
  3. segment de memoire partagé en C
    Par thierry_b dans le forum C
    Réponses: 2
    Dernier message: 29/11/2005, 21h30
  4. [segment de memoire partagée]
    Par pitit777 dans le forum C
    Réponses: 4
    Dernier message: 26/11/2005, 14h47
  5. Réponses: 13
    Dernier message: 05/05/2004, 19h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo