2016-11-25 3 views
0

Ich brauche deine Hilfe.Bluetooth Gerät scannen

unten durch diesen Verweis gehen Sie bitte ....

Aktuelle Status: Ich habe eine Anwendung, die mit seriellem PC-Anschluss und diese serielle Schnittstelle ist ferner mit BLE Modul kommunizieren kann, so dass ich senden und empfangen kann Befehle und Antworten durch sie ....

Problem: Ich muss eine Fensteranwendung machen (PC-Programm in Visual Basic nur), um die in der Nähe befindlichen Bluetooth-Geräte als Liste zu scannen .... und dann, wenn ich irgendeinen auswähle , es wäre durch BLE mit diesem Gerät verbunden. Ich bin kein Experte in der Programmierung, also auf der Suche nach Ihrer Hilfe. Bitte schlagen Sie einige Codearbeit vor, um zu implementieren ....

Vielen Dank.

Antwort

0

Der Aufzählungsnamespace ermöglicht die Suche nach Geräten, die intern mit dem System verbunden, extern verbunden oder über Drahtlos- oder Netzwerkprotokolle nachweisbar sind. Die APIs, die Sie zum Aufzählen über die möglichen Geräte verwenden, sind die (siehe. https://msdn.microsoft.com/library/windows/apps/br225459).

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

Bitte denken Sie daran, über das Hinzufügen Capabilities in Package.appxmanifest für bluetooth

+0

Dank Rudnicki für den Vorschlag ..... Ich werde versuchen, diese .... Aber bisher habe ich versucht, es auf diese Weise. Da mein BLE-Modul mit AT-Befehlen arbeitet, kann ich seinen Modus ändern, um das Scannen zu erkennen, indem ich AT-Scan-Befehle sende und die in der Nähe befindlichen Geräteadressen in meiner Richtextbox erhalte. Jetzt muss ich eine beliebige Gerätezeichenkette aus der richtextbox auswählen, während ich mit der Maus darauf klicke und weitere Aktionen ausführe, wenn ich auf die bestimmte BT-Adresse (Empfangszeichenfolge) von Geräten in der Nähe klicke. Ich bin völlig neu in VB, dies zu implementieren. Bitte hilf mir. Vielen Dank – Emlinux

0

@Emlinux

Dies ist Teil des Codes, die ich für Drucker implementiert haben. Hoffe, das Sie wird es helfen, herauszufinden;)

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"; 
     } 
    } 
Verwandte Themen