2016-11-25 10 views
0

私はあなたの助けが必要です。Bluetoothデバイススキャン

現状....以下、この参照を通じて行ってください:私は、PCのシリアルポートと通信できるアプリケーションを作り、私が送受信できるように、このシリアルポートは、BLEモジュールが接続されていますコマンドと応答を使用することができます....

問題:近くのBluetoothデバイスをリストとしてスキャンするためにウィンドウアプリケーション(ビジュアルベーシックでのみPCプログラム)を作成する必要があります。 BLEを介してそのデバイスに接続されます。 私はプログラミングの専門家ではないので、あなたの助けを求めています。実装するコードをいくつか提案してください....

ありがとうございます。

答えて

0

列挙型名前空間を使用すると、システムに内部接続されているか、外部接続されているか、ワイヤレスプロトコルまたはネットワークプロトコル経由で検出可能なデバイスを見つけることができます。使用可能なデバイスを介して列挙するために使用するAPIは、(。https://msdn.microsoft.com/library/windows/apps/br225459を参照してください)。

async void enumerateAvailableDevices() { 
    DeviceInformationCollection collection = await DeviceInformation.FindAllAsync(); 
} 

+0

.....私はこの.... をしようとします。しかしこれまでのところ、私はこの方法でそれを試してみました。私のBLEモジュールはATコマンドで動作するので、ATスキャンコマンドを送信して、リッチテキストボックス内の近くのデバイスアドレスを受信することで、スキャンを検知するようにモードを変更できます。これで、richtextboxから任意のデバイス文字列を選択し、その上でマウスをクリックして、近くのデバイスの特定のBTアドレス(文字列を受け取る)をクリックすると、さらに操作を行う必要があります。私はこれを実装するためにVBについて全く新しいです。私を助けてください。ありがとう – Emlinux

0

@Emlinux

ブルートゥース用Package.appxmanifest機能を追加することについて覚えてくださいこれは私が、プリンタのために実装したコードの一部です。これは、あなたがそれを把握するのに役立ちます願っています。提案のためありがとうrudnicki)

private string deviceName; 
    private string rfCommName; 
    private string rfCommId; 
    private object rfCommProperty; 
    private bool rfCommAvalability; 
    private PeerInformation device; 
    private HostName hostName; 
    private StreamSocket streamSocket = null; 
    private DataWriter dataWriter; 
    private RfcommDeviceService rfcommService; 
    private DeviceInformation deviceInformation; 
    private DeviceInformationCollection deviceInformationCollection; 
    private static readonly Guid RfcommSerialUuid = Guid.Parse("00001101-0000-1000-8000-00805f9b34fb"); 

    public MainPage() 
    { 
     this.InitializeComponent(); 

     this.NavigationCacheMode = NavigationCacheMode.Required; 
    } 

    protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 

    } 

    private async void searchButton_Click(object sender, RoutedEventArgs e) 
    { 
     PeerFinder.AlternateIdentities["Bluetooth:PAIRED"] = ""; 
     var serviceInfoCollection = await PeerFinder.FindAllPeersAsync(); 
     if (serviceInfoCollection.Count > 0) 
     { 
      Debug.WriteLine("Search() - There's few paired devices"); 
      foreach (var peerInfo in serviceInfoCollection) 
      { 
       if (peerInfo.DisplayName.ToLower().IndexOf("star-") > -1) 
       { 
        hostName = peerInfo.HostName; 
        deviceName = peerInfo.DisplayName; 
        device = peerInfo; 
        Debug.WriteLine("Search() - There's your star printer"); 
        Debug.WriteLine("Search() - Device - " + deviceName); 
        Debug.WriteLine("Search() - Hostname - " + hostName); 
        textBlock.Text = "I've found ur printer: " + deviceName; 
        break; 
       } 
      } 
     } 
     else 
     { 
      Debug.WriteLine("Search() - There's no paired devices"); 
      textBlock.Text = "I didn't found ur printer"; 
     } 
    } 

    private async void rfcommButton_Clicked(object sender, RoutedEventArgs e) 
    { 
     Debug.WriteLine("RfComm() - I'm going to check all Rfcomm devices"); 
     deviceInformationCollection = await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.FromUuid(RfcommSerialUuid))); 

     if (deviceInformationCollection != null) 
     { 
      foreach (var rfComm in deviceInformationCollection) 
      { 
       if (rfComm.Name.ToLower().IndexOf("star-") > -1) 
       { 
        rfCommName = rfComm.Name; 
        rfCommId = rfComm.Id; 
        rfCommProperty = rfComm.Properties; 
        rfCommAvalability = rfComm.IsEnabled; 
        Debug.WriteLine("RfComm() - name - " + rfCommName); 
        Debug.WriteLine("RfComm() - id - " + rfCommId); 
        Debug.WriteLine("RfComm() - property - " + rfCommProperty); 
        Debug.WriteLine("RfComm() - avalability - " + rfCommAvalability); 
        deviceInformation = rfComm; 
       } 
      } 
     } 

     try 
     { 
      rfcommService = await RfcommDeviceService.FromIdAsync(rfCommId); 
      Debug.WriteLine("RfComm() - seems like we're at home"); 
      textBlock.Text = "seems liek we're at home"; 
     } 
     catch (Exception) 
     { 
      Debug.WriteLine("RfComm() - access to the device is denied"); 
      textBlock.Text = "access to the device is denied"; 
     } 
    } 

    private void socketButton_Click(object sender, RoutedEventArgs e) 
    { 
     if (streamSocket == null) 
     { 
      Debug.WriteLine("Socket() - socket's null"); 
      lock (this) 
      { 
       streamSocket = new StreamSocket(); 
       Debug.WriteLine("Socket() - socket created"); 
       textBlock.Text = "socket created"; 
      } 
     } 

     try 
     { 
      dataWriter = new DataWriter(streamSocket.OutputStream); 
      Debug.WriteLine("Socket() - data writer created"); 
     } 
     catch (Exception) 
     { 
      Debug.WriteLine("Socket() - something went wrong while creating writer"); 
      textBlock.Text = "something went wront while socket creation"; 
     } 
    } 

    private async void connectToButton_Click(object sender, RoutedEventArgs e) 
    { 
     try 
     { 
      Debug.WriteLine("Connect() - Trying to connect"); 
      await streamSocket.ConnectAsync(hostName, rfcommService.ConnectionServiceName, SocketProtectionLevel.BluetoothEncryptionAllowNullAuthentication); 
      Debug.WriteLine("Connect() - Connected"); 
      textBlock.Text = "Connected"; 
     } 
     catch (Exception) 
     { 
      Debug.WriteLine("Connect() - Couldn't connect"); 
      textBlock.Text = "Couldn't connect"; 
     } 
    }