4

我目前正在处理蓝牙激活(只需在 Windows CE 版本 6 的某个操作后自动启用和禁用蓝牙
我正在使用SmartDeviceFramework即 CAB 文件,然后我将其安装在 Windows CE 中

以下是我使用的方法(用于蓝牙的InTheHand.Net.Personal.dll文件):

  private static void setBluetoothConnection()
    {
     try
       {
           if (BluetoothRadio.IsSupported == true)
           {
               MessageBox.Show("Bluetooth Supported", "Information", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
               BluetoothRadio radio = BluetoothRadio.PrimaryRadio;
               MessageBox.Show(radio.Mode.ToString(), "Before Bluetooth Connection", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
               radio.Mode = RadioMode.Discoverable;
               // here radio.Mode works only if the Windows Device has Bluetooth enabled otherwise gives error
               MessageBox.Show(radio.Mode.ToString(), "RadioMode Discover", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
               bluetoothClient = new BluetoothClient();
               //Cursor.Current = Cursors.WaitCursor;
               BluetoothDeviceInfo[] bluetoothDeviceInfo = bluetoothClient.DiscoverDevices();
               MessageBox.Show(bluetoothDeviceInfo.Length.ToString(), "Device Name", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
               foreach(BluetoothDeviceInfo device in bluetoothDeviceInfo)
               {
                 Cursor.Current = Cursors.Default;
                 MessageBox.Show(device.DeviceName, "Device Name", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                 bluetoothClient.Connect(new BluetoothEndPoint(device.DeviceAddress, service));
                 MessageBox.Show("Bluetooth Connected...", "Information", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                 break;
               }
             }
          else
          {
               MessageBox.Show("Bluetooth Not Supported", "Information", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
          }
       }
        catch (Exception ex)
        {
           log.Error("[Bluetooth] Connection failed", ex);
           MessageBox.Show(ex.Message,"Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
        }
    }

所以我在这里遇到错误:

BluetoothRadio radio = BluetoothRadio.PrimaryRadio;
radio.Mode = RadioMode.Discoverable; // gives error here 

错误

Error setting BluetoothRadio.Mode

当在设备中禁用蓝牙并执行上述行并关闭应用程序时,会发生一次上述错误,
但是当应用程序关闭时,当我转到手机中的蓝牙管理器时,蓝牙已启用

我的问题

我必须单击按钮 2 次才能启用按钮(第一次是应用程序因错误关闭(但蓝牙设置为 ON)时,第二次是搜索范围内的设备)而不是单击 1 次。

我的假设

我认为当程序尝试将蓝牙从移动启用从关闭到可发现时,可能存在一些安全问题。

那么是否有任何进程System.Digonostics; dll )我可以通过它在 C#中的WindowsMo​​bile CE中自动设置蓝牙打开关闭

我试过但没有得到它,所以任何人都可以帮助我或建议任何用于蓝牙连接的dll文件。

谢谢

4

2 回答 2

3

您可能会发现这很有用:

使用 C# 开发蓝牙设备

蓝牙技术的 Windows Embedded Source Tools 的下载地址是:

下载

希望这可以帮助 :)

于 2015-02-16T15:28:16.243 回答
1

我不完全确定你使用的那个库是什么,所以我不确定它为什么会给你这个错误。

这是有关如何在设备上设置蓝牙连接模式的 MSFT 文档。如果您可以使用这些 DLL,您可能会有一些运气。

https://msdn.microsoft.com/en-us/library/bb416244.aspx

于 2015-02-19T16:52:18.567 回答