Laden...

Mit 32Feet.net bluetooth GUUID bilden

Erstellt von MBoerner vor 6 Jahren Letzter Beitrag vor 6 Jahren 2.365 Views
M
MBoerner Themenstarter:in
22 Beiträge seit 2016
vor 6 Jahren
Mit 32Feet.net bluetooth GUUID bilden

Guten Tag!
Dank eines Tutorials für 32Feet.NET habe ich ein kleines Programm, was eine Verbindung zu bluetooth-geräte erstellt.

Die Clientseite scheint zu funktionieren, jedenfalls sehe ich mein Fitbit-Armband.

Aber die Serverseite funktioniert nicht. Ich verstehe nicht, wie man die Servie GUI-Id bildet. Wenn ich es richtig verstanden habe steht "00001101-" für den serialPort der Bluetooth Verbindung.
Aber wie bilde ich den Rest?

Hier ist mein Code, er bleibt ewig bei "Server started; waiting for clients" stehen, mehr passiert nicht.

Vielen Dank im Voraus für Eure Hilfe


Guid mUUId = new Guid("00001101-0000-1000-8000-00805F9B34FB"); //00001101 ist der serialPort für Bluetooth, der Rest ist fest??
        
        Boolean serverStarted = false;

        public void ServerConnectThread()
        {
            BluetoothListener blueListener = new BluetoothListener(mUUId);
            updateUI("Server started; waiting for clients");
            blueListener.Start();
            BluetoothClient conn = blueListener.AcceptBluetoothClient();
            updateUI("client has connected");

            Stream mStream = conn.GetStream();
            while (true)
            {
                try
                {
                    //handle server connection
                    byte[] received = new byte[2014];
                    mStream.Read(received, 0, received.Length);
                    updateUI("received:" + Encoding.ASCII.GetString(received));
                    byte[] sent = new byte[2014];
                    sent = Encoding.ASCII.GetBytes("Hello World");
                    mStream.Write(sent, 0, sent.Length);
                }
                catch(IOException exception)
                {
                    updateUI("Client has disconnected");
                }

            }
        }

16.832 Beiträge seit 2008
vor 6 Jahren

BT Applications werden durch einen Identifier (im Standard UUID) eindeutig deklariert. In .NET ist UUID durch GUID implementiert.

Du kannst diesen Identifier selbst wählen (Design Time).
Ein BT Client muss diese ID kennen, damit er zum Server(Bluetooth Service) eine Verbindung aufbauen kann.
Die ID wird quasi als Routing verwendet; wie ein Port bei TCP.

M
11 Beiträge seit 2017
vor 6 Jahren

Es geht auch einfacher, indem Du direkt den server anweist am Bluetooth serial port zu lauschen. Beachte den Teil mit serviceClass = BluetoothService.SerialPort;


class MyConsts
{
    static readonly Guid MyServiceUuid
      = new Guid("{00112233-4455-6677-8899-aabbccddeeff}");
}

    ...
    Guid serviceClass;
    serviceClass = BluetoothService.SerialPort;
    // - or - etc
    // serviceClass = MyConsts.MyServiceUuid
    //
    var lsnr = new BluetoothListener(serviceClass);
    lsnr.Start();


    // Now accept new connections, perhaps using the thread pool to handle each
    BluetoothClient conn = lsnr.AcceptBluetoothClient();
    Stream peerStream = conn.GetStream();
    ...

    // etc
    conn = lsnr.AcceptBluetoothClient();
    peerStream = conn.GetStream();
    ...

Wenn Du allerdings die GUID verwenden willst/musst, so müssen beide Dienste logischerweise die selbe GUID verwenden. Andernfalls weiß dein Server ja nicht, welcher Client zu ihm gehört.

Steht in deer Hilfe deiner BlueTooth-Library. Siehe:
https://32feet.codeplex.com/wikipage?title=Bluetooth%20Server-side&referringTitle=General%20Bluetooth%20Data%20Connections