Click here to Skip to main content
15,867,835 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
hello every body,

i'm evolve an application writen on VB6. this app use bluetooth connection to communicate with the hardware. i succed to communicate but the OS claim me a code to associate the bluetooth with my pc. The goal is the association must be transparent for the user because he use this app many times in hour.

any one know a solution for this problem.

thanks
Posted
Comments
[no name] 7-Jan-13 9:30am    
Depends on the Bluetooth version. Try using a version that does not require association code to connect.
mistergamer 7-Jan-13 9:38am    
the problem I configured the device to disable the code but it ask me for the code. So i have to find a solution on VB6 or an external software to automate this process
CHill60 7-Jan-13 9:45am    
Did you disable secure mode on the bluetooth settings of both your PC AND the other device?
mistergamer 7-Jan-13 10:20am    
i don't have this option on my computer.
mistergamer 8-Jan-13 3:30am    
please any one have a solution for this problem

there is a solution but it is not completly operating. Create a dll ActiveX by following these steps with "InTheHand.Net.Personal.dll" :
Start VS2010 as administrator.
Open a class library project (exmaple - MyProject).
- Add a new interface to the project (see example below).
- Add a using System.Runtime.InteropServices; to the file
- Add the attributes InterfaceType, Guid to the interface.
- You can generate a Guid using Tools->Generate GUID (option 4).
- Add a class that implement the interface.
- Add the attributes ClassInterface, Guid, ProgId to the interface.
- ProgId convention is {namespace}.{class}
Under the Properties folder in the project in the AssemblyInfo file set ComVisible to true.
- In the project properties menu, in the build tab mark "Register for COM interop"
Build the project

C#
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.");

        }

    }
}


- and VB using the COM:
set obj = createObject("PSLauncher.PSLauncher") obj.launch()




download the "InTheHand.Net.Personal.dll" in this site :
site


thanks to Eyal from the site stackoverflow
 
Share this answer
 
v3
there is my dll code to connect:

C#
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();
        }


    }
}
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900