У меня проблема с подключением Arduino к ПК с устройствами. Класс Bluetooth в C # - PullRequest
0 голосов
/ 11 июня 2019

У меня проблема с подключением модуля Bluetooth Arduino к моему компьютеру (имя модуля HC-06). Я пробовал класс port.devices в .net, но мне нужен класс UWP для его переноса на гололинзы, но я не могу попасть в Devices.Bluetooth Framework, потому что я не знаю, как получить Uuid с устройства для подключения к услугам или правильный метод, чтобы получить DeviceInformation.

Каждый раз, когда я получаю исключение NullReferenceException от port = await BluetoothDevice.FromIdAsync (bdeviceInfo.Id); Иногда это работает, но когда я использую port.Hostname, появляется то же исключение. Также устройство HC-06 указано дважды, почему? Кто-нибудь пробовал это еще? Мне легко работать с этим классом Port. Я не так глубоко разбираюсь в протоколлах Bluetooth и т.д., так что, может быть, я что-то пропустил. Я также попытался получить службу rfcomm от устройства, которое также не работает, но я думаю, что это проблема из-за неправильного идентификатора из bdeviceInfo.Id. Иногда это говорит ArgumentException. Это может быть связано со случайным списком этих двух перечисленных устройств. Я надеюсь, что кто-нибудь может помочь мне или рассказать мне больше о классе. Спасибо!

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.Networking.Sockets;

namespace connectAppDice
{
    using System.Collections;
    using System.Collections.Generic;
    using System;
    //using System.IO.Ports;
    //#if ENABLE_WINMD_SUPPORT && WINDOWS_UWPP
    using System.Threading.Tasks;
    using Windows.Devices.SerialCommunication;
    using Windows.Devices.Bluetooth;
    using Windows.Storage.Streams;
    using Windows.Devices.Enumeration;
    using Windows.Foundation;
    using Windows.Devices.Bluetooth.Rfcomm;
    using Windows.Storage;

    public class connectAndReadDiceBluetooth
    {
        private IInputStream input;
        private Task readThread;
        private static Guid guid = new Guid("e0cbf06c-cd8b-4647-bb8a-263b43f0f974");

        void ReceiveData()
        {
            while (readThread.Status == TaskStatus.Created) {

            }
        }

        private void OnApplicationQuit()
        {
            //readThread.Abort();
            //port.Close();
        }

        public static async Task listPorts()
        {
            StreamSocket _socket;
            string bDeviceSelect;
            DeviceInformationCollection bdevices;
            DeviceInformation bdeviceInfo;
            BluetoothDevice port;
            DataWriter dataWriter;
            bDeviceSelect = BluetoothDevice.GetDeviceSelector();
            bdevices = await DeviceInformation.FindAllAsync(bDeviceSelect);

        //create buffer to write
        Console.Write(bdevices.Count + "\n");
            if (bdevices.Count > 0) {
                bdeviceInfo = bdevices[1];

                for (int i = 0; i < bdevices.Count; i++)
                {
                    Console.Write(bdevices[i].Name + " is NOT the preferred Device! \n");
                }

                for (int i = 0; i < bdevices.Count; i++) {
                    if (bdevices[i].Name == "HC-06") {
                        bdeviceInfo = bdevices[i];
                        Console.Write(bdevices[i].Name + " is the preferred Device! \n");
                        Console.Write("The second dice is " + bdevices[i].Name + "\n");
                        break;
                    }
                }

                try {
                    port = await BluetoothDevice.FromIdAsync(bdeviceInfo.Id);
                    Console.Write(port.Name + "\n");
                    Console.Write(port.HostName + "\n");
                    //Guid uuid = BluetoothUuidHelper.FromShortId((uint)bdeviceInfo.Id);
                    //var service = await port.GetRfcommServicesForIdAsync(RfcommServiceId.FromUuid(guid));
                    //_socket = new StreamSocket();
                    /*await _socket.ConnectAsync(port.HostName, "{00001101-0000-1000-8000-00805f9b34fb}",
                        SocketProtectionLevel.BluetoothEncryptionAllowNullAuthentication);*/

                    /*await _socket.ConnectAsync(bdeviceInfo., "{00001101-0000-1000-8000-00805F9B34FB}",
                        SocketProtectionLevel.PlainSocket);*/

                    Console.Write("Ready");
                } catch (Exception ex) {
                    Console.Write("Exception happend \n");
                    System.Diagnostics.Debug.WriteLine(ex.ToString());
                }

                Console.Write("DeviceInfo \n");
                Console.Write(bdeviceInfo.Name + "\n");
            } else {
                Console.Write("Sorry, no device found. \n");
            }
        }

    }
    //#endif

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...