Meilleur auteur de réponses
connexion Bluetooth

Question
-
bonjour,
j'ai la charge de faire évoluer une application sous VB6. L'une de ses évolution c'est le faite qu'elle peux utiliser le Bluetooth pour se connecter. Or sur VB6 je n'ai pas trouvé un tutoriel qui peux m'aider a faire ce genre de connexion.
est ce que quelqu'un a un exemple de code ou un tutoriel??merci d'avance :)
Réponses
-
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(); } } }
- Marqué comme réponse ahmedmahdi mercredi 30 janvier 2013 08:27
-
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 projetexemple:
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()
Merci à Eyal du site de stackoverflow
télécharger le "InTheHand.Net.Personal.dll" sur ce site :- Marqué comme réponse ahmedmahdi mercredi 30 janvier 2013 08:27
- Modifié ahmedmahdi mercredi 30 janvier 2013 08:43 remerciement
Toutes les réponses
-
Bonjour
Ici vous avez des détails sur l’utilisation du BlueTooth. http://social.msdn.microsoft.com/Forums/en/vbpowerpacks/thread/a432e734-0082-413b-8e03-667eaa6f2544
Même si l’exemple est en VB.NET vous pouvez modifier facilement car il utilise des DLL. Cordialement,
- Modifié Aurel Bera jeudi 13 décembre 2012 10:45
-
-
-
-
bonjour,
j'ai rencontré un problème qui m’empêche d'avancer.
A chaque connexion, le périphérique demande le code. Cette saisie je veux qu'elle soit automatique(transparente pour l'utilisateur), mais je n'ai pas trouvé un code qui permet de faire cela.
Est ce que quelqu'un connais une solution a cela ou un terrain a suivre pour résoudre le problème??
merci d'avance :)
- Modifié ahmedmahdi lundi 7 janvier 2013 13:20
-
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 projetexemple:
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()
Merci à Eyal du site de stackoverflow
télécharger le "InTheHand.Net.Personal.dll" sur ce site :- Marqué comme réponse ahmedmahdi mercredi 30 janvier 2013 08:27
- Modifié ahmedmahdi mercredi 30 janvier 2013 08:43 remerciement
-
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(); } } }
- Marqué comme réponse ahmedmahdi mercredi 30 janvier 2013 08:27
-
BluetoothWin32Authentication m_BTWinAuthenication;
m_BTWinAuthenication = new BluetoothWin32Authentication(new EventHandler<BluetoothWin32AuthenticationEventArgs>(Win32AuthenticationCallback));
public static void Win32AuthenticationCallback(object sender, BluetoothWin32AuthenticationEventArgs e)
{
BluetoothWin32AuthenticationEventArgs BTEvent = e;
e.Confirm = true;
}