Esempio n. 1
0
        public static Device CreateDeviceObject(DeviceInformation_T di, BrailleDisNet parent)
        {
            var types = Assembly.GetExecutingAssembly().GetTypes();

            foreach (var type in types)
            {
                var attribs = type.GetCustomAttributes(typeof(DeviceTypeAttribute), false);
                if (attribs.Length <= 0)
                {
                    continue;
                }
                foreach (DeviceTypeAttribute att in attribs)
                {
                    if (att.DeviceType == di.DeviceType)
                    {
                        var constructor = type.GetConstructor(new Type[] { });
                        var newDevice   = constructor.Invoke(new object[] { }) as Device;
                        newDevice.DeviceInformation     = di;
                        newDevice.Parent                = parent;
                        newDevice.DeviceTypeInformation = Device.DeviceTypes[att.DeviceType];
                        return(newDevice);
                    }
                }
            }

            return(new DeviceBrailleDis());
        }
        public void CheckForDevice()
        {
            lock (synchLock)
            {
                //Wir arbeiten nur mit einem Device, erstmal dieses ausstecken!
                if (this.deviceIsInitialized)
                {
                    return;
                }

                string deviceString;
                DeviceInformation_T now = LoadFirstDevice(out deviceString);

                if (now.DeviceName != null)
                {
                    this.Initialize();

                    this.fireErrorOccurredEvent(ErrorType.NEW_DEVICE);
                }
            }
        }
        private DeviceInformation_T LoadFirstDevice(out string devicestring1)
        {
            devicestring1 = "";
            DeviceInformation_T di = new DeviceInformation_T()
            {
                DeviceName = null
            };

            try
            {
                // enumerate devices
                char[] line    = new char[1000];
                String strline = new String(line);
                var    ba      = new byte[1000];
                int    devices = 0;
                lock (synchLock)
                {
                    devices = BrdEnumDevice(ba, strline.Length);
                }
                if (devices > 0)
                {
                    int position     = 0;
                    var devicestring = new string[devices];
                    for (int i = 0; i < devices; i++)
                    {
                        int newposition = Array.IndexOf <Byte>(ba, 0, position);
                        devicestring[i] = Encoding.ASCII.GetString(ba, position, newposition - position);
                        position        = newposition + 2;
                    }
                    var deviceInfo = devicestring.Select(s => this.ParseDeviceString(s));
                    di                 = deviceInfo.First(x => true);
                    devicestring1      = devicestring[0];
                    di.DeviceUsbString = devicestring1;
                }
            }
            catch (Exception ex) { }
            return(di);
        }