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 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209
| 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();
}
}
} |
Partager