none
Vusial studio 2008 - C# - Tchar RRS feed

  • Question

  • Bonjour à tous,

    Je dois récupérer la mac adresse d'un terminal qui a un OS Windows Mobile 6.1.
    Le fabricant me met à disposition une référence .net que j'importe sans problème.

    Mon problème est le suivant:

    - Le fabricant me donne la doc suivante:

    GetMac (C++)

    Gets the radio's MAC address. You must call RadioConnect before calling this function.

    UINT GetMac(TCHAR *MACaddress );

    Parameters

    MACaddress

    Pointer to a TCHAR array indicating the MAC address of the radio (xx-xx-xx-xx-xx-xx).


    TCHAR n'existant pas sous visual c# je suis embêté et ne sais pas comment déclarer la variable.

    Un exemple C++ estg livré et voici comment ils déclarent la variable *MACADDRESS:

        UINT ret;
        TCHAR our_mac[128];
    Et l'appel de la fonction:

    ret = App->GetMac(our_mac);
                if (ret == ERROR_SUCCESS)
                {
                    message.Format(_T("MAC: %s"), our_mac);

    Si quelqu'un pouvait m'aider à convertir cela en visual C# ce serait chouette

    Merci d'avance et bon Week end à tous
    samedi 5 septembre 2009 11:37

Réponses

  • Bonjour,

    En regardant votre DLL que vous m'avez envoyé, il suffit d'ajouter une référence à cette DLL dans votre projet C#.
    Ensuite vous devez appeler l'une des méthodes suivantes :

    WLAN80211API_ND5_1.GetMac(byte[])
    ou
    WLAN80211API_v3.GetMac(byte[])

    A voir avec la documentation du constructeur.

    L'utilisation de ces méthodes devrait fonctionner ainsi :

    byte[] our_mac;
    our_mac = new byte[128];
    
    WLAN80211API_v3.GetMac(our_mac);
    
    string s;
    s = Encoding.UTF8.GetString(our_mac);
    Cordialement


    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    lundi 7 septembre 2009 20:11
    Modérateur

Toutes les réponses

  • Bonjour,

    Dans une classe essayez ceci :

    [DllImport("VotreDll.dll")]
    extern static int GetMAC(out string macAdress);
    


    Cordialement

    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    samedi 5 septembre 2009 20:22
    Modérateur
  • Merci pour votre réponse.

    J'ai essayé: OK pour la compilation mais lorsque j'exécute l'EXE dans l'appareil, j'ai une erreur:

    Missing Method exception
    Can't find an Entry point GerMac in a PInvoke DLL ...le nom de la DLL

    Je suis sûr que les fonctions y sont: Object browser les reconnaît.

    Justement le nom de la DLL est à rallonge: Intermec.Communication.WLAN.80211api_net.dll

    Une idée?

    Désolé pour le dérangement.

    merci
    samedi 5 septembre 2009 21:01
  • Bonjour,

    Est-ce que cette DLL est un assembly .NET ? Il suffit dans ce cas d'ajouter une référence à cette DLL, et l'utiliser comme tout assembly .NET...
    Est-il possible que vous puissiez m'envoyer cette DLL (zippé) par e-mail à gilles.tourreau@pos.fr (en mettant l'URL de cette discussion dans le mail)

    Cordialement
    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    dimanche 6 septembre 2009 07:50
    Modérateur
  • Bonjour,

    Je me demandais si vous avez reçu mon email d'hier avec la DLL entre autres?

    Merci
    lundi 7 septembre 2009 13:14
  • Bonjour,

    En regardant votre DLL que vous m'avez envoyé, il suffit d'ajouter une référence à cette DLL dans votre projet C#.
    Ensuite vous devez appeler l'une des méthodes suivantes :

    WLAN80211API_ND5_1.GetMac(byte[])
    ou
    WLAN80211API_v3.GetMac(byte[])

    A voir avec la documentation du constructeur.

    L'utilisation de ces méthodes devrait fonctionner ainsi :

    byte[] our_mac;
    our_mac = new byte[128];
    
    WLAN80211API_v3.GetMac(our_mac);
    
    string s;
    s = Encoding.UTF8.GetString(our_mac);
    Cordialement


    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    lundi 7 septembre 2009 20:11
    Modérateur
  • Bonjour

    Je voulais juste vous remercier pour votre aide précieuse : Ce qui me manquait était
    s = Encoding.UTF8.GetString(our_mac);

    qui d'ailleurs prends deux autres arguments dont la longueur de our_mac;
    Mais en tout cas je récupère maintenant la mac adresse de l'appareil. Vous m'avez vraiment sorti une grosse épine du pied.

    Bonne journée

    Bien cordialement,

    Elie
    mardi 8 septembre 2009 08:05