Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ КПК ΠΈ смартфонов Π½Π° .NET Compact FrameworkΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 44

Автор АлСксандр Климов

 } catch (Exception exFile) {

  MessageBox.Show("НС ΠΌΠΎΠ³Ρƒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ " + exFile.ToString());

  return;

 }


 // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ IrDA-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ с установлСнным ΠΈΠΌΠ΅Π½Π΅ΠΌ слуТбы.

 // ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ слуТбы Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ

 // IrDA-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅

 try {

  irClient = new IrDAClient(irServiceName);

 } catch (SocketException exS) {

  MessageBox.Show("Ошибка сокСта: " + exS.Message +

   " - Π’Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ»ΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ устройствС?");

  return;

 }


 // ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΏΠΎΡ‚ΠΎΠΊ

 Stream baseStream = irClient.GetStream();


 // ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ отправляСмого Ρ„Π°ΠΉΠ»Π°

 // ΠΈ запишСм это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΏΠΎΡ‚ΠΎΠΊ

 byte[] length = BitConverter.GetBytes((int)fileStream.Length);

 baseStream.Write(length, 0, length.Length);


 // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π±ΡƒΡ„Π΅Ρ€ для чтСния Ρ„Π°ΠΉΠ»Π°

 byte[] buffer = new byte[buffersize];


 // ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ число ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π±Π°ΠΉΡ‚

 int fileLength = (int)fileStream.Length;

 statusBar1.Text = "ΠžΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ " + fileLength + " Π±Π°ΠΉΡ‚";


 // Π§ΠΈΡ‚Π°Π΅ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅

 while (fileLength > 0) {

  int numRead = fileStream.Read(buffer, 0, buffer.Length);

  baseStream.Write(buffer, 0, numRead);

  fileLength -= numRead;

 }


 fileStream.Close();

 baseStream.Close();

 irClient.Close();

 statusBar1.Text = "Π€Π°ΠΉΠ» ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½";

}


private void butReceive_Click(object sender, EventArgs e) {

 // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠΎΡ‚ΠΎΠΊ для записи Ρ„Π°ΠΉΠ»Π°

 Stream writeStream;

 try {

  writeStream = new FileStream(fileReceive, FileMode.OpenOrCreate);

 } catch (Exception) {

  MessageBox.Show("НС ΠΌΠΎΠ³Ρƒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ "+ fileReceive + " для записи");

  return;

 }


 // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ соСдинСниС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ класса IrDAEndPoint

 // для Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ устройства ΠΈΠ· списка

 // НачинаСм ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΊΡƒ входящих сообщСний

 // ΠΈΠ· устройства с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ IrDAListener

 try {

  int i = listBox1.SelectedIndex;

  irEndP = new IrDAEndPoint(irDevices[i].DeviceID, irServiceName);

  irListen = new IrDAListener(irEndP);

  irListen.Start();

 } catch (SocketException exSoc) {

  MessageBox.Show("НС ΠΌΠΎΠ³Ρƒ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚ΡŒ Π½Π° слуТбС " + irServiceName + ": " +

   exSoc.ErrorCode);

 }


 // ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΠ΅ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ устройства

 statusBar1.Text = "ΠŸΡ€ΠΎΡΠ»ΡƒΡˆΠΊΠ° " + listBox1.SelectedItem.ToString();


 // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ соСдинСниС

 // для слуТбы, ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΊΠΎΠΉ

 IrDAClient irClient;

 try {

  irClient = irListen.AcceptIrDAClient();

 } catch (SocketException exp) {

  MessageBox.Show("НС ΠΌΠΎΠ³Ρƒ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ сокСт "+ exp.ErrorCode);

  return;

 }


 // ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ, ΠΈΠ΄Π΅Ρ‚ Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Ρ„Π°ΠΉΠ»Π°

 if (irListen.Pending() == true)

  statusBar1.Text = "ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΈΠ· " + irClient.RemoteMachineName;

 else

  statusBar1.Text = "НСт ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ· " + irClient.RemoteMachineName;


 // ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΏΠΎΡ‚ΠΎΠΊ ΠΈΠ· ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

 Stream baseStream = irClient.GetStream();

 int numToRead;

 // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π±ΡƒΡ„Π΅Ρ€ для чтСния Ρ„Π°ΠΉΠ»Π°

 byte[] buffer = new byte[buffersize];

 // Π§ΠΈΡ‚Π°Π΅ΠΌ ΠΏΠΎΡ‚ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит

 // Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ устройства

 numToRead = 4;

 while (numToRead > 0) {

  int numRead = baseStream.Read(buffer, 0, numToRead);

  numToRead -= numRead;

 }


 // ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±ΡƒΡ„Π΅Ρ€Π° для ΠΏΠΎΠΊΠ°Π·Π°

 // числа Π±Π°ΠΉΡ‚ для записи Π² Ρ„Π°ΠΉΠ»

 numToRead = BitConverter.ToInt32(buffer, 0);

 statusBar1.Text = "ЗаписываСм "+ numToRead + " Π±Π°ΠΉΡ‚";

 // ЗаписываСм ΠΏΠΎΡ‚ΠΎΠΊ Π² Ρ„Π°ΠΉΠ» Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€,

 // ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Ρ‹ всС Π±Π°ΠΉΡ‚Ρ‹

 while (numToRead > 0) {

  int numRead = baseStream.Read(buffer, 0, buffer.Length);

  numToRead -= numRead;

  writeStream.Write(buffer, 0, numRead);

 }

 // Π‘ΠΎΠΎΠ±Ρ‰Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½

 statusBar1.Text = "Π€Π°ΠΉΠ» ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½";

 baseStream.Close();

 writeStream.Close();

 irListen.Stop();

 irClient.Close();

}

Π˜Ρ‚Π°ΠΊ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄Π²ΡƒΡ… устройствах ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ». ΠŸΠ΅Ρ€Π΅Π΄ тСстированиСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ тСкстовый Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ send.txt с Π»ΡŽΠ±Ρ‹ΠΌ содСрТаниСм. Π—Π°Ρ‚Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ инфракрасныС Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ Π΄Π²ΡƒΡ… устройств ΠΈ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ устройствС Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π˜ΡΠΊΠ°Ρ‚ΡŒ. Если поиск Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΡΡ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Ρ‚ΠΎ Π² спискС отобразится имя Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ устройства.

Π—Π°Ρ‚Π΅ΠΌ Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΌ устройствС Π½Π°Π΄ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠŸΡ€ΠΈΠ½ΡΡ‚ΡŒ, Π° Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ устройствС Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Π°ΡˆΠΈΡ… дСйствий тСкст сообщСния ΠΈΠ· Ρ„Π°ΠΉΠ»Π° send.txt Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ устройство ΠΈ сохранСн Π² Ρ„Π°ΠΉΠ»Π΅ receive.txt.

К соТалСнию, Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ нСльзя Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° эмуляторС. Для провСдСния экспСримСнта Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π²Π° настоящих устройства. Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ мСня Π½Π΅Ρ‚ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ КПК, я Ρ€Π΅ΡˆΠΈΠ» Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ устройства своим смартфоном ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Windows Mobile 2005. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ графичСский интСрфСйс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для смартфонов Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ IrDA_Smartphone_CS ΠΈ частично ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ВмСсто ΠΊΠ½ΠΎΠΏΠΎΠΊ использовалось мСню, Π° вмСсто элСмСнта управлСния ListBox β€” элСмСнт ComboBox. Но ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΈ Π±Π΅Π· создания тСкстовых Ρ„Π°ΠΉΠ»ΠΎΠ², Π° просто ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ°. Π’ этом случаС наша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π»Π° Π±Ρ‹ Ρ‡Π΅Ρ€Ρ‚Ρ‹ Ρ‡Π°Ρ‚Π°. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π° ΠΈΠ³Ρ€ΠΎΠΊΠ°. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инфракрасной связи Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎ сдСланном Ρ…ΠΎΠ΄Π΅ Π² ΡˆΠ°Ρ…ΠΌΠ°Ρ‚Π°Ρ….

ВСхнология Bluetooth

НСсмотря Π½Π° свою Π΄Π΅ΡˆΠ΅Π²ΠΈΠ·Π½Ρƒ ΠΈ простоту, инфракрасноС соСдинСниС ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько сущСствСнных нСдостатков. К Π½ΠΈΠΌ относятся малСнький радиус дСйствия ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ связи Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… прямой видимости. Π­Ρ‚ΠΈΡ… нСдостатков лишСно Bluetooth-соСдинСниС.

Но ΠΈ Ρ‚ΡƒΡ‚ Π½Π΅ обошлось Π±Π΅Π· Π»ΠΎΠΆΠΊΠΈ дСгтя Π² Π±ΠΎΡ‡ΠΊΠ΅ ΠΌΠ΅Π΄Π°. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, сущСствуСт Π΄Π²Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Bluetooth-соСдинСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ совмСстимы Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΏΠΎΠΊΠ° Π½Π΅ сущСствуСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ этой Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π² управляСмом ΠΊΠΎΠ΄Π΅ .NET Compact Framework. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ с Bluetooth-связью ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ для устройств ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Windows Mobile 5.0, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Bluetooth-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° .NET Compact Framework Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π² своСм составС классов, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… с Bluetooth, Ρ‚ΠΎ придСтся Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Windows API, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² листингС 12.6.

Листинг 12.6

public enum RadioMode {

 Off = 0,

 Connectable = 1,

 Discoverable = 2

}


/// <summary>

/// ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ статус bluetooth

/// </summary>

/// <param name="dwMode">Ρ„Π»Π°Π³ΠΈ</param>

/// <returns></returns>

[DllImport("BthUtil.dll")]

public static extern int BthGetMode(out RadioMode dwMode);


/// <summary>

/// УстанавливаСт Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ bluetooth

/// </summary>

/// <param name="dwMode">Ρ„Π»Π°Π³ΠΈ для установки Ρ€Π΅ΠΆΠΈΠΌΠ°</param>

/// <returns></returns>

[DllImport("BthUtil.dll")]

public static extern int BthSetMode(RadioMode dwMode);


private void mnuOn_Click(object sender, EventArgs e) {

 BthSetMode(RadioMode.Connectable);

 lblStatus.Text = RadioMode.Connectable.ToString();

}


private void Form1_Load(object sender, EventArgs e) {

 RadioMode mode;

 int ret = BthGetMode(out mode);

 lblStatus.Text = mode.ToString();

}


private void mnuOff_Click(object sender, EventArgs e) {

 Π’thSetMode(RadioMode.Off);

 lblStatus.Text = RadioMode.Off.ToString();

}

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ послС запуска прилоТСния Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π΅ΠΆΠΈΠΌ Bluetooth опрСдСляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ BthGetMode, Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄ мСню ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Bluetooth-соСдинСниС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ BthSetMode.

НСсколько слов о связи

НСсомнСнно, малСнькиС ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ устройства, Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ смартфон ΠΈΠ»ΠΈ КПК, идСально подходят Π½Π° Ρ€ΠΎΠ»ΡŒ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… устройств. Π’ этой Π³Π»Π°Π²Π΅ Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самыС простыС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования связи ΠΌΠ΅ΠΆΠ΄Ρƒ устройствами. Π’ послСднСС врСмя Π½Π°Π±ΠΈΡ€Π°ΡŽΡ‚ ΠΎΠ±ΠΎΡ€ΠΎΡ‚Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ связи, ΠΊΠ°ΠΊ Wi-Fi, GPS ΠΈ GPRS. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ устройства ΠΈΠΌΠ΅ΡŽΡ‚ Π² своСм составС Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ для ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΡ ΠΏΠΎ ВсСмирной ΠΏΠ°ΡƒΡ‚ΠΈΠ½Π΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ вСсь спСктр Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, связанных с ΠΎΠ±ΠΌΠ΅Π½ΠΎΠΌ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ устройствами.

Π“Π»Π°Π²Π° 13

ИспользованиС нСуправляСмого ΠΊΠΎΠ΄Π°

НСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° .NET Compact Framework ΠΈΠΌΠ΅Π΅Ρ‚ мноТСство классов для выполнСния самых Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях приходится ΠΏΡ€ΠΈΠ±Π΅Π³Π°Ρ‚ΡŒ ΠΊ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Windows API. А Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Windows API Π΄Π°ΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅, Ρ‡Π΅ΠΌ использованиС Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² управляСмого ΠΊΠΎΠ΄Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ прилоТСния.