Couplage automatique avec le bluetooth en VB6 [Résolu]

Messages postés
19
Date d'inscription
jeudi 27 mars 2008
Dernière intervention
14 mai 2013
- 7 janv. 2013 à 13:02 - Dernière réponse :
Messages postés
19
Date d'inscription
jeudi 27 mars 2008
Dernière intervention
14 mai 2013
- 30 janv. 2013 à 09:36
bonjour,
je suis entrain de modifier une communication entre mon programme sur mon PC et un appareil.
Il était connecté directement par USB, mais maintenant je change pour une connexion Bluetooth .
le programme arrive à se connecter sur l’appareil sauf que l'utilisateur doit saisir le code PIN à chaque fois (sachant qu'il peut l'utiliser plusieurs fois par heure ).
j'ai essayé d'automatiser cette étape, mais sans succès .
Est ce qu'il y a un moyen pour que celle-ci soit transparente pour l'utilisateur??

merci d'avance
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
19
Date d'inscription
jeudi 27 mars 2008
Dernière intervention
14 mai 2013
- 30 janv. 2013 à 09:35
3
Merci
il ya une solution, mais ce n'est pas complètement opérationnel. Créer une dll ActiveX en suivant ces étapes avec "InTheHand.Net.Personal.dll":
- Ouvrer VS2010 en tant qu'administrateur.
- Creer un projet bibliothèque de classes (exmaple - MyProject).
- Ajouter une nouvelle interface pour le projet (voir l'exemple ci-dessous).
- Ajouter un using System.Runtime.InteropServices; au fichier
- Ajouter la InterfaceType attributs, Guid à l'interface.
- Vous pouvez générer un GUID en utilisant Outils-> Générer GUID(Create GUID) (option 4).
- Ajouter une classe qui implémente cette interface.
- Ajouter la ClassInterface attributs, Guid, ProgId à l'interface.
- ProgId convention est {namespace} {classe}.
Sous le dossier Propriétés dans le projet dans le fichier AssemblyInfo mis ComVisible à true.
- Dans le menu des propriétés du projet, dans l'onglet build marque "Inscrire pour COM Interop"
Générez le projet

exemple:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using System.Runtime.InteropServices;
 
namespace Launcher
{
 
    [InterfaceType(ComInterfaceType.InterfaceIsDual), Guid("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")]
    public interface ILauncher
    {
        void launch();
    }
 
    [ClassInterface(ClassInterfaceType.None), Guid("YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYY"), ProgId("Launcher.Launcher")]
    public class Launcher : ILauncher
    {
        private string path = null;
 
        public void launch()
        {
            Console.WriteLine("I launch scripts for a living.");
 
        }
 
    }
}

- et en VB6 en utilisant le COM:
set obj = createObject("PSLauncher.PSLauncher") obj.launch()


télécharger le "InTheHand.Net.Personal.dll" sur ce site :
site

Merci ahmedmahdibenjemaa 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de ahmedmahdibenjemaa
Meilleure réponse
Messages postés
19
Date d'inscription
jeudi 27 mars 2008
Dernière intervention
14 mai 2013
- 30 janv. 2013 à 09:36
3
Merci
voici mon code de DLL :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using InTheHand.Net.Sockets;
using InTheHand.Net.Bluetooth;
using System.Windows.Forms;
using InTheHand.Net;
using System.Runtime.InteropServices;

namespace LibrairieDeConnexionBluetoothAvecDLL
{

[InterfaceType(ComInterfaceType.InterfaceIsDual), Guid("220081A3-4B8F-4834-A47D-0531877D483E"), ComVisible(true)]
public interface IBluetooth
{
bool connection();
void initialisation();
void detecterLesDispositifs();
void choisirUnDispositif();
void ajouterLesControleALaFentreDeConnexion(Form fenetreDeSelectionDuBluetooth, ListBox listeDesAdresseDesPériphérique, ListBox listeDesNomDesPériphérique, Button Connexion, Button refresh);
void confgurerFenetreDeConnexion(Form fenetreDeSelectionDuBluetooth);
void configurerLeBouton(Button Connexion, int marginGauche, int marginHaut, string nom, bool etat);
void configurerLaListe(ListBox liste, int with, int height, int marginGauche, int marginHaut, bool enable);
void seConnecter();
void Win32AuthCallbackHandler(object sender, InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs e);
void listeDesNomDesPériphérique_SelectedIndexChanged(object sender, EventArgs e);
void Refresh_Click(object sender, EventArgs e);
void Connexion_Click(object sender, EventArgs e);
}

[ClassInterface(ClassInterfaceType.None), Guid("90A2335C-0310-49C1-AF57-E9BF993647D5"), ProgId("LibrairieDeConnexionBluetoothAvecDLL.Bluetooth"), ComVisible(true)]
public class Bluetooth : UserControl, IBluetooth
{
private BluetoothClient listeDePeripheriqueBluetooth;
private BluetoothClient SerialPort;
private BluetoothDeviceInfo optifive;
private Guid service;
private BluetoothDeviceInfo[] bdi;
private BluetoothRadio radio;
private Form fenetreDeSelectionDuBluetooth;
private ListBox listeDesNomDesPériphériques;
private ListBox listeDesAdresseDesPériphériques;
private Button Connexion;
private Button Refresh;

public bool connection()
{
initialisation();
detecterLesDispositifs();
listeDesNomDesPériphériques.SelectedIndexChanged += new System.EventHandler(
listeDesNomDesPériphérique_SelectedIndexChanged);
Refresh.Click += new System.EventHandler(Refresh_Click);
Connexion.Click += new System.EventHandler(Connexion_Click);

return optifive.Connected;
}

public void initialisation()
{
radio = BluetoothRadio.PrimaryRadio;
if (radio !null && radio.Mode RadioMode.PowerOff)
{
BluetoothRadio.PrimaryRadio.Mode = RadioMode.Connectable;
}
listeDePeripheriqueBluetooth = new BluetoothClient();
service = BluetoothService.SerialPort;

fenetreDeSelectionDuBluetooth = new Form();
confgurerFenetreDeConnexion(fenetreDeSelectionDuBluetooth);
listeDesNomDesPériphériques = new ListBox();
listeDesAdresseDesPériphériques = new ListBox();
Connexion = new Button();
Refresh = new Button();
configurerLaListe(listeDesNomDesPériphériques, 200, 300, 5, 5, true);
configurerLaListe(listeDesAdresseDesPériphériques, 200, 300, 220, 5, false);
configurerLeBouton(Connexion, 220, 310, "Connexion", false);
configurerLeBouton(Refresh, 5, 310, "Refresh", true);
ajouterLesControleALaFentreDeConnexion(fenetreDeSelectionDuBluetooth, listeDesAdresseDesPériphériques, listeDesNomDesPériphériques, Connexion, Refresh);
fenetreDeSelectionDuBluetooth.Show();
}

public void detecterLesDispositifs()
{
//this will take a while...
Cursor.Current = Cursors.WaitCursor;
bdi = listeDePeripheriqueBluetooth.DiscoverDevices();
//bind the combo
if (listeDesAdresseDesPériphériques.Items.Count>0)
listeDesAdresseDesPériphériques.Items.Clear();
if(listeDesNomDesPériphériques.Items.Count>0)
listeDesNomDesPériphériques.Items.Clear();
bdi.ToList().ForEach(delegate(BluetoothDeviceInfo Device)
{
listeDesNomDesPériphériques.Items.Add(Device.DeviceName);
listeDesAdresseDesPériphériques.Items.Add(Device.DeviceAddress.ToString().Insert(10, ":").Insert(8, ":").Insert(6, ":").Insert(4, ":").Insert(2, ":"));
});
Cursor.Current = Cursors.Default;

}


public void choisirUnDispositif()
{
bdi.ToList().ForEach(delegate(BluetoothDeviceInfo device)
{
if (device.DeviceName == listeDesNomDesPériphériques.SelectedItem.ToString().Replace(":", ""))
optifive = device;
});
}

public void ajouterLesControleALaFentreDeConnexion(Form fenetreDeSelectionDuBluetooth, ListBox listeDesAdresseDesPériphérique, ListBox listeDesNomDesPériphérique, Button Connexion, Button refresh)
{
fenetreDeSelectionDuBluetooth.Controls.Add(listeDesNomDesPériphérique);
fenetreDeSelectionDuBluetooth.Controls.Add(listeDesAdresseDesPériphérique);
fenetreDeSelectionDuBluetooth.Controls.Add(Connexion);
fenetreDeSelectionDuBluetooth.Controls.Add(refresh);
}

public void confgurerFenetreDeConnexion(Form fenetreDeSelectionDuBluetooth)
{
fenetreDeSelectionDuBluetooth.StartPosition = FormStartPosition.CenterScreen;
fenetreDeSelectionDuBluetooth.Height = 378;
fenetreDeSelectionDuBluetooth.Width = 445;
fenetreDeSelectionDuBluetooth.Text = "Connexion Bluetooth";
}

public void configurerLeBouton(Button Connexion, int marginGauche, int marginHaut, string nom, bool etat)
{
Connexion.Left = marginGauche;
Connexion.Top = marginHaut;
Connexion.Width = 100;//height==23
Connexion.Text = nom;
Connexion.Enabled = etat;
}

public void configurerLaListe(ListBox liste, int with, int height, int marginGauche, int marginHaut, bool enable)
{
liste.Height = height;
liste.Width = with;
liste.Left = marginGauche;
liste.Top = marginHaut;
liste.Enabled = enable;
if (liste == null)
MessageBox.Show("n'éxiste pas");
else
MessageBox.Show("éxiste");
}


public void seConnecter()
{
try
{
BluetoothWin32Authentication authetification = new BluetoothWin32Authentication(Win32AuthCallbackHandler);
SerialPort = new BluetoothClient();
SerialPort.Connect(new BluetoothEndPoint(optifive.DeviceAddress, service));
}
catch (Exception ex)
{
MessageBox.Show("n'arrive pas a se connecter : " + ex.Message);
}

}





public void Win32AuthCallbackHandler(object sender, InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs e)
{
// Note we assume here that 'Legacy' pairing is being used,
// and thus we only set the Pin property!
string address = e.Device.DeviceAddress.ToString();
Console.WriteLine("Received an authentication request from address " + address);
//
// compare the first 8 hex numbers, this is just a special case because in the
// used scenario the model of the devices can be identified by the first 8 hex
// numbers, the last 4 numbers being the device specific part.

// send authentication response
e.Pin = "0000";

e.Confirm = true;
}


public void listeDesNomDesPériphérique_SelectedIndexChanged(object sender, EventArgs e)
{
choisirUnDispositif();
listeDesAdresseDesPériphériques.SelectedIndex = listeDesNomDesPériphériques.SelectedIndex;
Connexion.Enabled = true;
}


public void Refresh_Click(object sender, EventArgs e)
{
detecterLesDispositifs();
}


public void Connexion_Click(object sender, EventArgs e)
{
seConnecter();
}


}
}

Merci ahmedmahdibenjemaa 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de ahmedmahdibenjemaa

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.