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

Discussions diverses VB Discussion :

Structure C équivalent en VB6


Sujet :

Discussions diverses VB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2013
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 20
    Par défaut Structure C équivalent en VB6
    Bonsoir tout le monde ,
    j'ai une structure en C et j'ai besoin de la modifier en VB6 puisque je suis en train de réaliser une interface en VB6.0 pour une DLL en C , le code en C est le suivant:
    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
     
     
    #define DATA_ARRAY  129
    struct ANSWER {
    	int iStatus;
    	unsigned char idata[DATA_ARRAY ];
    	int iBytes;
    };
     
    struct INSTRUCTION {
    	unsigned char iCode[DATA_ARRAY ];
    	int iBytes;
    };
     
    ANSWER ans_data;
    INSTRUCTION ins_data;
    je l'ai modifiée en VB6 comme suit:
    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
     
    Private Const DATA_ARRAY  = 129
     
    Private Type ANSWER
    iStatus as long
    idata[DATA_ARRAY ] as long 
    iBytes As long 
    End Type
     
    Type INSTRUCTION {
    	 iCode[DATA_ARRAY ] as long
    	 iBytes as long
    End type
     
     ans_data ANSWER
     ins_data INSTRUCTION
    mais ce code VB6 ne fonctionne pas et je sais pas où se trouve le problème.

    Merci de me rendre service et me répondre.

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bonjour ,

    remplace les crochets [] par des parenthèses () , supprime les accolades { }


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    idata(DATA_ARRAY) As Long

  3. #3
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    bonsoir,

    La déclaration d'une variable typée en vb doit toujours comporter la clause: As.
    Par ailleurs, le type char correspond au type Byte en vb
    rectifie comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ....
    idata(DATA_ARRAY) As Byte
     
    ...ans_data As ANSWER

  4. #4
    Membre averti
    Inscrit en
    Avril 2013
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 20
    Par défaut
    Merci pour votre réponse,

    mais malheureusement pour cette ces instructions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ans_data As ANSWER
    ins_data As INSTRUCTION
    me donne une erreur de complitaion : instruction non valide en dehors du bloc type.

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    salut,


    il manque le "Dim"...

  6. #6
    Membre averti
    Inscrit en
    Avril 2013
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 20
    Par défaut
    Merci beaucoup pour vos réponses mon problème de fonctionnement de code persiste toujours.

    je vous donne une idée générale sur le programme, en fait c'est un programme de commande et supervision avec WinCC qui fonctionne parfaitement avec 0 erreur. quand je le reprogramme avec VB6il ne me donne rien (je parle des fonctions .dll utilisés).
    le code Wincc fonctionnel est le suivant:
    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
     
    #include "apdefap.h"
    void OnObjectChanged(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
    {BOOL s5;
    s5= GetTagBit("ST2_S5_1");	//Return-Type: BOOL 
    if (s5 == 1)
    {
    BOOL rfid;
    rfid = GetTagBit("RFID");	//Return-Type: BOOL 
    if (rfid == 0 ) 
    {
     
    }
    else if ( rfid == 1)
    {
    #define DATA_ARRAY  129
    long int s;
    int i,k,A1;	
    char buffer[3],a[9], tmp[20];
    char data[DATA_ARRAY ];
    char input[DATA_ARRAY ];
    char text1[] ="palette 1";
     
    struct ANSWER {
    	int iStatus;
    	unsigned char idata[DATA_ARRAY ];
    	int iBytes;
    }ans_data;
     
    struct INSTRUCTION {
    	unsigned char iCode[DATA_ARRAY ];
    	int iBytes;
    }ins_data;
     
     
    #pragma code("RFID_VC_VB1.dll")
     
     short int  Evaluation_unit_quit(BOOL Mode,int ncom);
     short int  Evaluation_unit_reset(BOOL Mode,int ncom);
    short int  System_memory_examine(BOOL Mode,int ncom, char* status);
     short int  Data_medium_type_adjust(BOOL Mode,int ncom, char* data_medium);
     short int  Double_sided_read_letter_active(BOOL Mode,int ncom);
     short int  Autoread_letter_terminate(BOOL Mode,int ncom);
    short int  Version_message(BOOL Mode,int ncom, char* version);
    int  Comset(int iPort, int iBaud, int iBits, int iStop, int iParity, int iTimeout);
     short int  Data_medium_read(BOOL Mode,int ncom, char* head, char* status, char* data);
     int  ComReset(int iPort);
     short int  Bytes_write(BOOL Mode,int ncom, char* head, char* status, char* adresse, char* number, char* data);
     short int  Byte_read(BOOL Mode,int ncom, char* head, char* status, char* adresse, char* number, char* data);
     short int  Reset(BOOL Mode,int ncom, char* head, char* status); 
     void  Check_total_compute(void);
    BOOL  Send(int ncom);
     BOOL Receive(int ncom); 
    void ShiftLeft(unsigned char* data, int place);
    void ArrayCopy(char* dest, unsigned char* source, int place);
     int HexToInt(char* hex);
     BOOL Receive1(int ncom);
     
    #pragma code()
     
     
    printf("\t\t\t\tProgramme d'exploitation des RFID\n\n");
    printf("\t\t\t\tLECTURE PALETTE 1\n\n");
    Comset(1,9600,8,1,0,20);
     
    Evaluation_unit_quit(FALSE,1);
    Evaluation_unit_reset(FALSE,1);
    Data_medium_type_adjust(FALSE, 1,"4");
     
    Byte_read(TRUE,1, "2", buffer, "00", "09", data);
     
     
     
    	for ( i = 0; i < 10; i++) 
    	{
    		a[i] = data[i];
    		printf("%c", a[i]);
     
    	} //if (a=(s.c_str()));
     
     
    printf("\n comparaison des chaines de caracters:  \t%s, et ,\t%s \n",a,text1);
    A1= strcmp(a,text1);
    printf("A 1=%d",A1);
     
    if (A1==0)
    {
    SetTagBit("ST1_entrer_Z3_P1",1);	//Return-Type: BOOL 
     
    }
    else
    {SetTagBit("OUI",0);
     
     
     
    } 
    ComReset(1);
    }
    }
     
     
    }

    le code VB6 non fonctionnel est le suivant:
    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
     
    Private Const DATA_ARRAY = 129
     
    Private Type ANSWER
    iStatus As Long
    idata(DATA_ARRAY) As Long
    iBytes As Long
     
    End Type
     
    Private Type INSTRUCTION
         iCode(DATA_ARRAY) As Long
         iBytes As Long
     
    End Type
     
    Dim ans_data As ANSWER
    Dim ins_data As INSTRUCTION
     
    Dim d1, ccc, cc, d As Long
    Dim hj As Integer
    Private Declare Function Comset Lib "RFID_VC_VB1.dll" (ByVal iPort As Integer, ByVal iBaud As Integer, ByVal iBits As Integer, ByVal iStop As Integer, ByVal iParity As Integer, ByVal iTimeout As Integer) As Long
    Private Declare Function ComReset Lib "RFID_VC_VB1.dll" (ByVal iPort As Integer) As Long
    Private Declare Function Evaluation_unit_quit Lib "RFID_VC_VB1.dll" (ByVal Mode As Boolean, ByVal ncom As Integer) As Long
    Private Declare Function Evaluation_unit_reset Lib "RFID_VC_VB1.dll" (ByVal Mode As Boolean, ByVal ncom As Integer) As Long
    Private Declare Function Data_medium_type_adjust Lib "RFID_VC_VB1.dll" (ByVal Mode As Boolean, ByVal ncom As Integer, ByVal data_medium As String) As Integer
    Private Declare Function Bytes_write Lib "RFID_VC_VB1.dll" (ByVal Mode As Boolean, ByVal ncom As Integer, ByVal head As String, ByVal buffer As String, ByVal adresse As String, ByVal number As String, ByVal DATA As String) As Long
    Private Declare Function Byte_read Lib "RFID_VC_VB1.dll" (ByVal Mode As Boolean, ByVal ncom As Integer, ByVal head As String, ByVal status As String, ByVal adresse As String, ByVal number As String, ByVal DATA As String) As Long
    Private Declare Function HexToInt Lib "RFID_VC_VB1.dll" (ByVal hex As String) As Long
    Private Declare Function Send Lib "RFID_VC_VB1.dll" (ByVal ncom As Integer) As Boolean
    Private Declare Function Receive Lib "RFID_VC_VB1.dll" (ByVal ncom As Integer) As Boolean
    Private Declare Function ArrayCopy Lib "RFID_VC_VB1.dll" (ByVal dest As String, ByVal source As String, ByVal place As Integer)
     
    Private Declare Function Check_total_compute Lib "RFID_VC_VB1.dll" ()
    Set ST1_S5 = OPCMygroup.OPCItems(21)
    ST1_S5.Read OPCDevice
    If (ST1_S5.Value = "Vrai") Then
    '***************************************
     
     
     
     
    Dim donnée, DATAA, DATA1, DATA2, DATA3, DATA4, DATA5, DATA6, DATA7 As String
    Dim lettre, lettre1, lettre2, lettre3, lettre4, lettre5, lettre6, lettre7  As String
    Dim i As Integer
     
    d1 = Comset(1, 9600, 8, 1, 0, 20)
    ccc = Evaluation_unit_quit(True, 1)
     
    cc = Evaluation_unit_reset(True, 1)
     
    hj = Data_medium_type_adjust(True, 1, "4")
     
    d = Byte_read(True, 1, "2", "00", "00", "16", donnée)
     
     For i = 1 To 10
        lettre1 = Mid(donnée, i, 1)        '
    Next i
    Text2.Text = lettre1
    '**********************

    merci de me répondre .

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/08/2006, 18h26
  2. Réponses: 2
    Dernier message: 23/03/2006, 10h56
  3. [VB6]Tri multi-colonnes sur tableau de structure
    Par ELGUEVEL dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/02/2006, 08h02
  4. [vb6] Modifier structure table Access sous VB6
    Par jlvalentin dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 25/03/2004, 17h45
  5. [VB6] [Fichier] Enregistrer des variables de structure
    Par de.bo dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/10/2002, 11h09

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