Esempio n. 1
0
        public static async Task <BcSerialPort> CreateByBcIdAsync(string bcId)
        {
            var allPorts = await GetBcSerialPortsAsync();

            BcSerialPort port = allPorts.FirstOrDefault(p => p.Info?.ID == bcId);

            return(port);
        }
        public BcSerialPortDetail(BcSerialPort parent)
        {
            System.Diagnostics.Debug.Assert(parent != null);

            _parent = parent;

            var aqs  = SerialDevice.GetDeviceSelector(_parent.Com);
            var task = DeviceInformation.FindAllAsync(aqs);

            while (task.Status != Windows.Foundation.AsyncStatus.Completed)
            {
                Task.Delay(1);
            }
            var devices = task.GetResults();

            var di = devices.FirstOrDefault(d => d.IsEnabled);

            if (di is null)
            {
                di = devices.FirstOrDefault();
            }
            // no device?
            _info = di;

            if (di?.Properties != null)
            {
                const string PROP_DEVICEID = "System.Devices.DeviceInstanceId";
                if (di.Properties.ContainsKey(PROP_DEVICEID))
                {
                    DeviceID = di.Properties[PROP_DEVICEID] as string;
                }
            }

            //if (BcDeviceType.Dongle.IsTypeByID(_info?.Id))
            //{
            //    // check device using FTDI wrapper
            //    FTDI ftdi = new FTDI();
            //    uint deviceCount = 0;
            //    FTDI.FT_STATUS status = ftdi.GetNumberOfDevices(ref deviceCount); // Get the number of FTDI devices connected to the computer.
            //    if (status == FTDI.FT_STATUS.FT_OK && deviceCount>0)
            //    {
            //        FTDI.FT_DEVICE_INFO_NODE[] deviceList = new FTDI.FT_DEVICE_INFO_NODE[deviceCount]; // Allocate a storage array for a device info list.
            //        status = ftdi.GetDeviceList(deviceList);
            //        var port = deviceList.FirstOrDefault();

            //        string c;
            //        ftdi.GetCOMPort(out c);
            //        ftdi.OpenByLocation(port.LocId);
            //        ftdi.GetCOMPort(out c);
            //    }
            //}
        }
Esempio n. 3
0
        public static async Task <BcSerialPort[]> GetBcSerialPortsAsync()
        {
            string[] comPorts = SerialPort.GetPortNames();

            List <BcSerialPort> clowns = new List <BcSerialPort>();

            foreach (var com in comPorts)
            {
                BcSerialPort port = await CreateAsync(com);

                if (port != null)
                {
                    clowns.Add(port);
                }
            }

            return(clowns.ToArray());
        }
Esempio n. 4
0
        public static BcEventMessage CreateFromMessage(MqttMessage message, BcSerialPort gateway = null)
        {
            if (string.IsNullOrEmpty(message?.Topic))
            {
                return(null);
            }

            if (message.Topic.StartsWith("/"))
            {
                return(null);
            }

            var parts = message.Topic.Split('/');

            BcEventMessage bc = new BcEventMessage();

            bc.GatewayId = gateway?.Info?.ID;
            if (parts.Length > 0)
            {
                bc.NodeId = parts[0];
            }
            if (parts.Length > 1)
            {
                bc.SensorName = parts[1];
            }
            if (parts.Length > 2)
            {
                bc.SensorAddress = parts[2];
            }
            if (parts.Length > 3)
            {
                bc.EventName = parts[3];
            }

            bc.Value = message.Payload;

            return(bc);
        }
Esempio n. 5
0
        public static async Task <BcSerialPort> CreateAsync(string portName)
        {
            BcSerialPort port     = null;
            string       selector = SerialDevice.GetDeviceSelector(portName);
            var          task     = DeviceInformation.FindAllAsync(selector);

            while (task.Status == Windows.Foundation.AsyncStatus.Started)
            {
                await Task.Delay(20);
            }
            var devices = task.GetResults();

            if (devices.Any(d => d.IsEnabled && (d.Id.Contains(BcDeviceType.Core.ID))))
            {
                port = new BcSerialPort(portName, BcDeviceType.Core);
            }
            else if (devices.Any(d => d.IsEnabled && d.Id.Contains(BcDeviceType.Dongle.ID)))
            {
                port = new BcSerialPort(portName, BcDeviceType.Dongle);
            }

            return(port);
        }