Inheritance: IDeviceManager
Beispiel #1
1
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            產生手寫軌跡的測試資料();
            solidColorBrush1 = new SolidColorBrush(ColorsHelper.Parse("ff1a1a1a"));
            solidColorBrush2 = new SolidColorBrush(ColorsHelper.Parse("ff999999"));
            solidColorBrush3 = new SolidColorBrush(ColorsHelper.Parse("ffff0000"));
            solidColorBrush4 = new SolidColorBrush(ColorsHelper.Parse("ff006cff"));
            solidColorBrush5 = new SolidColorBrush(ColorsHelper.Parse("ff0da522"));

            wbContentImage = BitmapFactory.New(768, 1024);
            wbContentImage.Clear(Colors.Transparent);
            cnUsingWriteableBitmap.Source = wbContentImage;


            d2dBrush = new ImageBrush();
            cnUsingGeometries.Background = d2dBrush;

            // Safely dispose any previous instance
            // Creates a new DeviceManager (Direct3D, Direct2D, DirectWrite, WIC)
            deviceManager = new DeviceManager();

            shapeRenderer = new ShapeRenderer();
            DisplayInformation DisplayInformation = Windows.Graphics.Display.DisplayInformation.GetForCurrentView();
            int pixelWidth = (int)(cnUsingGeometries.Width * DisplayInformation.LogicalDpi / 96.0);
            int pixelHeight = (int)(cnUsingGeometries.Height * DisplayInformation.LogicalDpi / 96.0);

            d2dTarget = new SurfaceImageSourceTarget(pixelWidth, pixelHeight);
            d2dBrush.ImageSource = d2dTarget.ImageSource;
            imgUsingInkManager.Source = d2dTarget.ImageSource;

            // Add Initializer to device manager
            deviceManager.OnInitialize += d2dTarget.Initialize;
            deviceManager.OnInitialize += shapeRenderer.Initialize;

            // Render the cube within the CoreWindow
            d2dTarget.OnRender += shapeRenderer.Render;

            // Initialize the device manager and all registered deviceManager.OnInitialize 
            deviceManager.Initialize(DisplayProperties.LogicalDpi);

            // Setup rendering callback
            //CompositionTarget.Rendering += CompositionTarget_Rendering;

            // Callback on DpiChanged
            DisplayProperties.LogicalDpiChanged += DisplayProperties_LogicalDpiChanged;

            #region Scenario1
            Scenario1Drawing = new Scenario1ImageSource((int)cnUsingDirectXs.Width, (int)cnUsingDirectXs.Height, true);

            // Use Scenario1Drawing as a source for the Ellipse shape's fill
            cnUsingDirectXs.Background = new ImageBrush() { ImageSource = Scenario1Drawing };
            #endregion
        }
		public NetworkManager ()
		{
			ConManager = new ConnectionManager ();
			DevManager = new DeviceManager ();
			
			DevManager.NetworkDevices.ForEach (dev => dev.StateChanged += OnDevStateChanged);
		}
Beispiel #3
0
        /// <summary>
        /// Initializes the Device Driver System.
        /// </summary>
        public static void Initialize()
        {
            // Create Device Manager
            deviceManager = new DeviceManager();

            // Create Interrupt Manager
            interruptManager = new InterruptManager();

            // Create the Device Driver Manager
            deviceDriverRegistry = new DeviceDriverRegistry(PlatformArchitecture.X86);

            // Create the PCI Controller Manager
            pciControllerManager = new PCIControllerManager(deviceManager);

            // Setup hardware abstraction interface
            var hardware = new Mosa.CoolWorld.x86.HAL.Hardware();

            // Set device driver system to the hardware HAL
            Mosa.HardwareSystem.HAL.SetHardwareAbstraction(hardware);

            // Set the interrupt handler
            Mosa.HardwareSystem.HAL.SetInterruptHandler(InterruptManager.ProcessInterrupt);

            partitionManager = new PartitionManager(deviceManager);
        }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="_LogFileName">Log file name</param>
 public ScannerControl(string _LogFileName)
 {
     DeviceManager = new DeviceManager();
     DeviceInfoCollection = DeviceManager.DeviceInfos  ;
     objScannerPowerManager = new ScannerPowerManager(_LogFileName);
     scnMngrLog = new ScnMngrLog(_LogFileName);
 }
    protected void Page_Load(object sender, EventArgs e)
    {
        this.Page.Title = "Contact Your " + ConfigurationManager.AppSettings["ApplicationWord"].ToString();
        if (!this.IsPostBack)
        {
            //code for YT Mobile redirections
            string redirctMobileUrl = string.Empty;

            DeviceManager deviceManager = new DeviceManager
            {
                UserAgent = Request.UserAgent,
                IsMobileBrowser = Request.Browser.IsMobileDevice
            };

            // Added by Varun Goel on 25 Jan 2013 for NoRedirection functionality
            TributesPortal.Utilities.StateManager stateManager = StateManager.Instance;

            objSessionValue = (SessionValue)stateManager.Get("objSessionvalue", StateManager.State.Session);
            if (objSessionValue == null || objSessionValue.NoRedirection == null || objSessionValue.NoRedirection == false)
            {
                if (deviceManager.IsMobileDevice())
                {
                    // Redirection URL
                    redirctMobileUrl = string.Format("{0}{1}{2}", "https://www.", WebConfig.TopLevelDomain, "/mobile/ContactUs.html");
                    Response.Redirect(redirctMobileUrl, false);
                }
            }
        }
    }
        public frmDigitalizacao()
        {
            TwainGlobalSettings ts = new TwainGlobalSettings();

            ts.Register("Afranio de Carvalho Freire Filho", "*****@*****.**", "MKhP0tHkOo03FOTYCC/vNUjr9wmoknf4+479sZoIPV5JIEuUkpfv1Ou8Vz+jblAxAzzqG+s8za1oMuTn9Pql6QcSHb92gzJNPu5joE4URLT4BfBw/R1M6WpwfuTtsPDqfhVfX2O2btRsKlDYK77WfU6+bkImymve8Xm7KHPeGtyw");
            InitializeComponent();
            lGerenciadorDispositivos = new DeviceManager();
        }
 /// <summary>
 /// Constructor. 
 /// </summary>
 public ScannerControl()
 {
     //System.Diagnostics.Debug.WriteLine(@"DeviceManager = new DeviceManager();");
     DeviceManager = new DeviceManager();
     DeviceInfoCollection = DeviceManager.DeviceInfos  ;
     objScannerPowerManager = new ScannerPowerManager();
     scnMngrLog = new ScnMngrLog();
 }
Beispiel #8
0
 public static Device GetFirstScannerDevice()
 {
     DeviceManager deviceManager = new DeviceManager();
     foreach (DeviceInfo deviceInfo in deviceManager.DeviceInfos)
         if (deviceInfo.Type == WiaDeviceType.ScannerDeviceType)
             return deviceInfo.Connect();
     throw new ArgumentException("The Scanner is unavailable.");
 }
Beispiel #9
0
 public static Device FromDeviceId(string deviceID)
 {
     DeviceManager deviceManager = new DeviceManager();
     foreach (DeviceInfo deviceInfo in deviceManager.DeviceInfos)
         if (deviceInfo.DeviceID == deviceID)
             return deviceInfo.Connect();
     throw new ArgumentException("The Device with '" + deviceID + "' is unfound.");
 }
        public DepthBuffer(DeviceManager deviceManager, int width, int height)
        {
            _deviceManager = deviceManager;
            Width = width;
            Height = height;

            SampleCount = 4;
            SampleQuality = 4;
        }
Beispiel #11
0
        public SettingsDialog(DeviceManager manager, Settings settings)
        {
            InitializeComponent();

            tabControl.Selected += tabControl_Selected;

            _deviceManager = manager;
            _settings = settings;
        }
        public virtual void Initialize(DeviceManager deviceManager)
        {

            sceneColorBrush = new SolidColorBrush(deviceManager.ContextDirect2D, SharpDX.Color.Red);
            sceneColorBrush1 = new SolidColorBrush(deviceManager.ContextDirect2D, SharpDX.Color.GreenYellow);
            sceneColorBrush2 = new SolidColorBrush(deviceManager.ContextDirect2D, SharpDX.Color.White);
            sceneColorBrush3 = new SolidColorBrush(deviceManager.ContextDirect2D, SharpDX.Color.Transparent);

            clock = Stopwatch.StartNew();
        }
 public SessionData(LoginComposite inParm, String sessionID, int securityLevel)
 {
   SmartCardParams sParams = new SmartCardParams(inParm.PinCode, inParm.CredID, inParm.GroupID, inParm.ProverID);
   _securityLevel = securityLevel;
   _parameterSet = SecurityLevelUtils.getRecommendedSet(securityLevel);
   deviceManager = new DeviceManager(sParams, parameterSet, inParm.UseVirtualDevice);
   
   lastAccessed = DateTime.Now;
   this.sessionID = sessionID;
 }
        public WindowTextureBuffer(DeviceManager deviceManager, IntPtr windowHandle, int width, int height)
        {
            _deviceManager = deviceManager;
            _windowHandle = windowHandle;
            Width = width;
            Height = height;

            SampleCount = 4;
            SampleQuality = 4;
        }
		/// <summary>
		/// 创建指定类型的拼图渲染器。
		/// </summary>
		/// <param name="rendererType">拼图渲染器的类型。</param>
		/// <param name="deviceManager">设备管理器。</param>
		public static JigsawRenderer CreateRenderer(JigsawRendererType rendererType, DeviceManager deviceManager)
		{
			switch (rendererType)
			{
				case JigsawRendererType.Effect:
					return new JigsawEffectRenderer(deviceManager);
				default:
					return new JigsawSimpleRenderer(deviceManager);
			}
		}
Beispiel #16
0
        public StagingPipeline(DeviceManager deviceManager, RenderTarget presentationTarget, StagingPipelineSettings settings)
        {
            if (deviceManager == null) throw new ArgumentNullException("deviceManager");
            if (presentationTarget == null) throw new ArgumentNullException("presentationTarget");
            if (settings == null) throw new ArgumentNullException("settings");

            _settings = settings;
            _deviceManager = deviceManager;
            _presentationTarget = presentationTarget;
        }
        public DeviceDialogViewModel()
        {
            DeviceManager dm = new DeviceManager();

            var infos = dm.DeviceInfos;

            foreach(DeviceInfo i in infos)
            {
                if (i.Type == WiaDeviceType.ScannerDeviceType)
                    Devices.Add(i);
            }
        }
        public frmDigitalizacao_2(frmPrincipal form)
        {
            InitializeComponent();
            formPrincipal = form;
            lblIdCliente.Text = formPrincipal.lblIdCliente.Text;
            lblNomeCliente.Text = formPrincipal.lblCliente.Text;
            TwainGlobalSettings tgs = new TwainGlobalSettings();

            tgs.Register("Afranio de Carvalho Freire Filho", "*****@*****.**", "MKhP0tHkOo03FOTYCC/vNUjr9wmoknf4+479sZoIPV5JIEuUkpfv1Ou8Vz+jblAxAzzqG+s8za1oMuTn9Pql6QcSHb92gzJNPu5joE4URLT4BfBw/R1M6WpwfuTtsPDqfhVfX2O2btRsKlDYK77WfU6+bkImymve8Xm7KHPeGtyw");

            _deviceManager = new DeviceManager(this);

            openDeviceManager();
        }
Beispiel #19
0
        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            _deviceManager = new DeviceManager();
            _gameEngine = new GameEngine(_deviceManager);

            await _deviceManager.SetupSensors();

            while (true)
            {
                await _gameEngine.Run();
            }
        }
Beispiel #20
0
 public ScanDevice(string deviceId)
 {
     var manager = new DeviceManager();
     this.device = null;
     foreach (DeviceInfo info in manager.DeviceInfos)
     {
         if (info.DeviceID == deviceId)
         {
             this.device = info.Connect();
             this.item = device.Items[1];
             break;
         }
     }
 }
Beispiel #21
0
 private void MainForm_Load(object sender, EventArgs e)
 {
     mgr = DeviceManager.Instance;
     if (mgr.Count == 0)
     {
         MessageBox.Show("Diese Anwendung funktioniert nur, wenn Sie einen Novint Falcon an Ihren Computer angeschlossen haben. Stellen Sie sicher das dem so ist und die benötigten Treiber installiert sind! Starten Sie dann die Anwendung erneut", "Falcon nicht gefunden", MessageBoxButtons.OK);
         Close();
     }
     else
     {
         dev = mgr[0];
         UpdateDeviceDisplay();
     }
 }
Beispiel #22
0
        internal HapticDevice(DeviceManager mgr, int deviceId)
        {
            this.deviceId = deviceId;
            this.deviceHandle = NativeMethods.hdlInitIndexedDevice(deviceId);
            if (this.deviceHandle == -1)
                throw new DeviceInitializationFailedException(deviceId, NativeMethods.hdlGetError());

            double[] wsValues = new double[6];
            NativeMethods.hdlMakeCurrent(deviceHandle);
            NativeMethods.hdlDeviceWorkspace(wsValues);
            IntPtr modelPtr;
            modelPtr = NativeMethods.hdlDeviceModel();
            this.model = Marshal.PtrToStringAnsi(modelPtr);
            workspace = new DeviceWorkspace(wsValues);
            this.force = new DeviceForce(this);
            this.loopOps = new HashSet<DeviceLoopOperation>();
        }
        public void TestSwitchOnCoolingWhilstReceivingData()
        {
            // Create an instance of a faked external hardware device
            FakeExternalDevice device = new FakeExternalDevice();
            device.Open();

            DeviceManager manager = new DeviceManager(new[] { device });

            // Force a data received from the device.
            // Locks external device lock then try to lock on syncObject in manager.
            device.TriggerDataReceived();

            // This should lock on Manager syncObject, try to lock on the external device lock.
            manager.EnableCooling();

            // Either the TriggerDataReceived call should fail to lock on the managers syncObject
            // or EnableCooling should fail to lock on the external Device's hardware lock as the other thread should
            // already have acquired the lock.
        }
        private IEnumerable<GetScannerListResponse.Scanner> GetScanners()
        {
            DeviceManager manager = new DeviceManager();
            foreach (DeviceInfo info in manager.DeviceInfos)
            {
                if (info.Type == WiaDeviceType.ScannerDeviceType)
                {
                    string deviceId = info.DeviceID;
                    string deviceName = null;
                    foreach (Property item in info.Properties)
                    {
                        if (item.Name == "Description")
                            deviceName = item.get_Value();
                    }

                    if (deviceName != null)
                        yield return new GetScannerListResponse.Scanner() {DeviceId = deviceId, DeviceName = deviceName};
                }
            }
        }
        public CameraDeviceManager()
        {
            UseExperimentalDrivers = true;
            SelectedCameraDevice = new NotConnectedCameraDevice();
            ConnectedDevices = new AsyncObservableCollection<ICameraDevice>();
            _deviceEnumerator = new DeviceDescriptorEnumerator();
            LiveViewImage = new Dictionary<ICameraDevice, byte[]>();

            // prevent program crash in something wrong with wia
            try
            {
                WiaDeviceManager = new DeviceManager();
                WiaDeviceManager.RegisterEvent(Conts.wiaEventDeviceConnected, "*");
                WiaDeviceManager.RegisterEvent(Conts.wiaEventDeviceDisconnected, "*");
                WiaDeviceManager.OnEvent += DeviceManager_OnEvent;
            }
            catch (Exception exception)
            {
                Log.Error("Error initialize WIA", exception);
            }
        }
Beispiel #26
0
        /// <summary>
        /// Gets the list of available WIA devices.
        /// </summary>
        /// <returns></returns>
        public static Hashtable GetDevices()
        {
            Hashtable devices = new Hashtable();
            DeviceManager manager = null;
            try
            {
                manager = new DeviceManager();
            }
            catch (Exception)
            {
                throw new Exception("Cannot initialize WIA device manager.\nMake sure wiaaut.dll is present in your system32 directory and that it is registered (run 'regsvr32 wiaaut.dll').");
            }

            foreach (DeviceInfo info in manager.DeviceInfos)
            {
                String name = info.Properties["Name"].get_Value().ToString();
                devices.Add(info.DeviceID, name);
            }

            return devices;
        }
Beispiel #27
0
        protected override void CreateDeviceDependentResources(DeviceManager deviceManager)
        {
            base.CreateDeviceDependentResources(deviceManager);

            // Release all resources
            RemoveAndDispose(ref vertexShader);

            RemoveAndDispose(ref pixelShader);
            RemoveAndDispose(ref depthPixelShader);
            RemoveAndDispose(ref lambertShader);
            RemoveAndDispose(ref blinnPhongShader);
            RemoveAndDispose(ref phongShader);

            RemoveAndDispose(ref vertexLayout);
            RemoveAndDispose(ref perObjectBuffer);
            RemoveAndDispose(ref perFrameBuffer);
            RemoveAndDispose(ref perMaterialBuffer);
            RemoveAndDispose(ref perArmatureBuffer);

            RemoveAndDispose(ref depthStencilState);

            // Get a reference to the Device1 instance and immediate context
            var device  = deviceManager.Direct3DDevice;
            var context = deviceManager.Direct3DContext;

            // Compile and create the vertex shader and input layout
            using (var vertexShaderBytecode = HLSLCompiler.CompileFromFile(@"Shaders\VS.hlsl", "VSMain", "vs_5_0"))
            {
                vertexShader = ToDispose(new VertexShader(device, vertexShaderBytecode));
                // Layout from VertexShader input signature
                vertexLayout = ToDispose(new InputLayout(device,
                                                         vertexShaderBytecode.GetPart(ShaderBytecodePart.InputSignatureBlob),
                                                         new[]
                {
                    // "SV_Position" = vertex coordinate in object space
                    new InputElement("SV_Position", 0, Format.R32G32B32_Float, 0, 0),
                    // "NORMAL" = the vertex normal
                    new InputElement("NORMAL", 0, Format.R32G32B32_Float, 12, 0),
                    // "COLOR"
                    new InputElement("COLOR", 0, Format.R8G8B8A8_UNorm, 24, 0),
                    // "UV"
                    new InputElement("TEXCOORD", 0, Format.R32G32_Float, 28, 0),
                    // "SkinIndices"
                    new InputElement("BLENDINDICES", 0, Format.R32G32B32A32_UInt, 36, 0),
                    // "SkinWeights"
                    new InputElement("BLENDWEIGHT", 0, Format.R32G32B32A32_Float, 52, 0),
                }));
            }

            // Compile and create the pixel shader
            using (var bytecode = HLSLCompiler.CompileFromFile(@"Shaders\SimplePS.hlsl", "PSMain", "ps_5_0"))
                pixelShader = ToDispose(new PixelShader(device, bytecode));

            // Compile and create the depth vertex and pixel shaders
            // This shader is for checking what the depth buffer would look like
            using (var bytecode = HLSLCompiler.CompileFromFile(@"Shaders\DepthPS.hlsl", "PSMain", "ps_5_0"))
                depthPixelShader = ToDispose(new PixelShader(device, bytecode));

            // Compile and create the Lambert pixel shader
            using (var bytecode = HLSLCompiler.CompileFromFile(@"Shaders\DiffusePS.hlsl", "PSMain", "ps_5_0"))
                lambertShader = ToDispose(new PixelShader(device, bytecode));

            // Compile and create the Lambert pixel shader
            using (var bytecode = HLSLCompiler.CompileFromFile(@"Shaders\BlinnPhongPS.hlsl", "PSMain", "ps_5_0"))
                blinnPhongShader = ToDispose(new PixelShader(device, bytecode));

            // Compile and create the Lambert pixel shader
            using (var bytecode = HLSLCompiler.CompileFromFile(@"Shaders\PhongPS.hlsl", "PSMain", "ps_5_0"))
                phongShader = ToDispose(new PixelShader(device, bytecode));

            // IMPORTANT: A constant buffer's size must be a multiple of 16-bytes
            // use LayoutKind.Explicit and an explicit Size= to force this for structures
            // or alternatively add padding fields and use a LayoutKind.Sequential and Pack=1

            // Create the constant buffer that will
            // store our worldViewProjection matrix
            perObjectBuffer = ToDispose(new SharpDX.Direct3D11.Buffer(device, Utilities.SizeOf <ConstantBuffers.PerObject>(), ResourceUsage.Default, BindFlags.ConstantBuffer, CpuAccessFlags.None, ResourceOptionFlags.None, 0));

            // Create the per frame constant buffer
            // lighting / camera position
            perFrameBuffer = ToDispose(new Buffer(device, Utilities.SizeOf <ConstantBuffers.PerFrame>(), ResourceUsage.Default, BindFlags.ConstantBuffer, CpuAccessFlags.None, ResourceOptionFlags.None, 0));

            // Create the per material constant buffer
            perMaterialBuffer = ToDispose(new Buffer(device, Utilities.SizeOf <ConstantBuffers.PerMaterial>(), ResourceUsage.Default, BindFlags.ConstantBuffer, CpuAccessFlags.None, ResourceOptionFlags.None, 0));

            // Create the per armature/skeletong constant buffer
            perArmatureBuffer = ToDispose(new Buffer(device, ConstantBuffers.PerArmature.Size(), ResourceUsage.Default, BindFlags.ConstantBuffer, CpuAccessFlags.None, ResourceOptionFlags.None, 0));

            // Configure the depth buffer to discard pixels that are
            // further than the current pixel.
            depthStencilState = ToDispose(new DepthStencilState(device,
                                                                new DepthStencilStateDescription()
            {
                IsDepthEnabled   = true,   // enable depth?
                DepthComparison  = Comparison.Less,
                DepthWriteMask   = SharpDX.Direct3D11.DepthWriteMask.All,
                IsStencilEnabled = false,   // enable stencil?
                StencilReadMask  = 0xff,    // 0xff (no mask)
                StencilWriteMask = 0xff,    // 0xff (no mask)
                // Configure FrontFace depth/stencil operations
                FrontFace = new DepthStencilOperationDescription()
                {
                    Comparison         = Comparison.Always,
                    PassOperation      = StencilOperation.Keep,
                    FailOperation      = StencilOperation.Keep,
                    DepthFailOperation = StencilOperation.Increment
                },
                // Configure BackFace depth/stencil operations
                BackFace = new DepthStencilOperationDescription()
                {
                    Comparison         = Comparison.Always,
                    PassOperation      = StencilOperation.Keep,
                    FailOperation      = StencilOperation.Keep,
                    DepthFailOperation = StencilOperation.Decrement
                },
            }));

            // Tell the IA what the vertices will look like
            // in this case two 4-component 32bit floats
            // (32 bytes in total)
            context.InputAssembler.InputLayout = vertexLayout;

            // Set our constant buffer (to store worldViewProjection)
            context.VertexShader.SetConstantBuffer(0, perObjectBuffer);
            context.VertexShader.SetConstantBuffer(1, perFrameBuffer);
            context.VertexShader.SetConstantBuffer(2, perMaterialBuffer);
            context.VertexShader.SetConstantBuffer(3, perArmatureBuffer);

            // Set the vertex shader to run
            context.VertexShader.Set(vertexShader);

            // Set our pixel constant buffers
            context.PixelShader.SetConstantBuffer(1, perFrameBuffer);
            context.PixelShader.SetConstantBuffer(2, perMaterialBuffer);

            // Set the pixel shader to run
            context.PixelShader.Set(blinnPhongShader);

            // Set our depth stencil state
            context.OutputMerger.DepthStencilState = depthStencilState;

            // Back-face culling
            context.Rasterizer.State = ToDispose(new RasterizerState(device, new RasterizerStateDescription()
            {
                FillMode = FillMode.Solid,
                CullMode = CullMode.Back,
            }));
        }
Beispiel #28
0
    public TrayApplicationContext()
    {
        _components = new System.ComponentModel.Container();

        // Clean old files if they exist
        if (File.Exists("settings.dat"))
        {
            File.Delete("settings.dat");
            MessageBox.Show("All stored preferences were cleared during the update.\nPlease set your preferences again by right-clicking the tray icon and selecting settings.");
        }
        if (File.Exists("devices.dat"))
        {
            File.Delete("devices.dat");
        }

        // Load settings
        Boolean first_time = false;

        if (File.Exists("settings.json"))
        {
            try {
                _settings = JsonConvert.DeserializeObject <Settings>(File.ReadAllText("settings.json"));
            } catch (Exception e) {
                MessageBox.Show("Could not load settings. Default values will be used.");

                _settings = new Settings();
                File.WriteAllText("settings.json", JsonConvert.SerializeObject(_settings));
            }
        }
        else
        {
            _settings = new Settings();
            _settings.Save();
            first_time = true;
        }

        // Create history directory if needed
        if (!Directory.Exists("History"))
        {
            Directory.CreateDirectory("History");
        }

        // Load devices
        _deviceManager = new DeviceManager(_settings);
        _deviceManager.SaveData();

        // Prepare notification system
        _notificationManager = new NotificationManager(_settings.ComputerName);

        // Create the icon
        _notifyIcon              = new NotifyIcon(this._components);
        _notifyIcon.Icon         = Resources.icon_app;
        _notifyIcon.Text         = "Icy Monitor Server";
        _notifyIcon.DoubleClick += mSettings_Click;
        _notifyIcon.Visible      = true;

        // Prepare context menu
        PrepareContextMenu();

        // Create computer object for data
        _computer = new Computer();
        _visitor  = new UpdateVisitor();

        _computer.CPUEnabled           = true;
        _computer.FanControllerEnabled = true;
        _computer.GPUEnabled           = true;
        _computer.MainboardEnabled     = true;
        _computer.HDDEnabled           = true;

        _computer.Open();
        _computer.Accept(_visitor);

        // Collect sensors (for history and notifications)
        CollectSensors();

        // Create notifications timer
        StartNotificationsTimer();

        // Create history timer
        if (_settings.History)
        {
            StartHistoryTimer();
        }

        // Create server
        CreateServer();

        // Create the multicast timer
        if (_settings.Multicast)
        {
            try {
                StartMulticasting();
            } catch (SocketException e) {
                MessageBox.Show("Could not open socket for multicasting. Autodetection will be disabled.\n(Is another copy of Icy Monitor running?)");
            }
        }

        if (first_time)
        {
            DialogResult dialogResult = MessageBox.Show("It is essential that you open a port for the server to use, would you want to open the preferences window?\n\nYou can do this at any moment by double-clicking the tray icon.",
                                                        "Icy Monitor Server", MessageBoxButtons.YesNo);
            if (dialogResult == DialogResult.Yes)
            {
                mSettings_Click(null, null);
            }
        }

        // Start the server
        if (_server.Start() == false)
        {
            if (_multicastSocket != null)
            {
                _multicastSocket.Close();
            }
            base.ExitThreadCore();
        }
    }
Beispiel #29
0
        public override void AddDevice(IRunDevice dev)
        {
            if (dev == null)
            {
                throw new ArgumentNullException("设备驱动", "参数为空");
            }

            if (dev.DeviceParameter.DeviceID != dev.DeviceDynamic.DeviceID)
            {
                throw new NotEqualException("参数和动态数据的设备ID不相等");
            }

            int devid = -1;

            if (dev.DeviceParameter.DeviceID == -1 || dev.DeviceDynamic.DeviceID == -1)
            {
                devid = this.DeviceManager.BuildDeviceID();
                dev.DeviceParameter.DeviceID = devid;
                dev.DeviceDynamic.DeviceID   = devid;
                try
                {
                    dev.Initialize(devid);
                }
                catch { throw; }
            }

            if (DeviceManager.ContainDevice(devid))
            {
                throw new ArgumentException("已经有相同的设备ID存在");
            }

            if (Config.ControlMode == ControlMode.Singleton)
            {
                IRunDevice[] netDevices = DeviceManager.GetDevices(CommunicateType.NET);
                if (dev.CommunicateType == CommunicateType.NET && netDevices.Length >= 1)//如果是Singleton模式只能有一个网络设备驱动
                {
                    throw new IndexOutOfRangeException("当为Singleton模式时,不能增加多个网络设备驱动");
                }
            }

            string desc = String.Empty;

            if (this.DeviceManager.AddDevice(dev.DeviceParameter.DeviceID, dev))
            {
                this.BindDeviceHandler(dev, dev.DeviceType, true);

                if (dev.DeviceType == DeviceType.Virtual)
                {
                    desc = "增加虚拟设备";
                }
                else
                {
                    IController controller = null;
                    if (dev.CommunicateType == CommunicateType.COM)
                    {
                        #region 串口
                        string   key     = ComUtils.PortToString(dev.DeviceParameter.COM.Port);
                        IChannel channel = ChannelManager.GetChannel(key);
                        if (channel == null)
                        {
                            IComSession comChannel = new ComSession(dev.DeviceParameter.COM.Port, dev.DeviceParameter.COM.Baud);
                            comChannel.Setup(this);
                            comChannel.Initialize();
                            comChannel.COMOpen  += ComChannel_COMOpen;
                            comChannel.COMClose += ComChannel_COMClose;
                            comChannel.COMError += ComChannel_COMError;
                            comChannel.Open();
                            channel = (IChannel)comChannel;

                            ChannelManager.AddChannel(key, channel);
                        }

                        controller = ControllerManager.GetController(key);
                        if (controller == null)
                        {
                            controller = new ComController((IComSession)channel);
                            controller.Setup(this);
                            if (ControllerManager.AddController(controller.Key, controller))
                            {
                                controller.StartController();
                            }
                        }
                        else
                        {
                            IComController comController = (IComController)controller;
                            if (comController.ComChannel.GetHashCode() != channel.GetHashCode())
                            {
                                comController.ComChannel = (IComSession)channel;
                            }
                        }

                        desc = String.Format("增加'{0}'串口设备,串口:{1} 波特率:{2}", dev.DeviceParameter.DeviceName, dev.DeviceParameter.COM.Port.ToString(), dev.DeviceParameter.COM.Baud.ToString());
                        #endregion
                    }
                    else if (dev.CommunicateType == CommunicateType.NET)
                    {
                        #region 网络
                        controller = ControllerManager.GetController(SocketController.ConstantKey);
                        if (controller == null)
                        {
                            controller = new SocketController();
                            controller.Setup(this);
                            if (ControllerManager.AddController(controller.Key, controller))
                            {
                                controller.StartController();
                            }
                        }

                        desc = String.Format("增加'{0}'网络设备,IP地址:{1} 端口:{2}", dev.DeviceParameter.DeviceName, dev.DeviceParameter.NET.RemoteIP, dev.DeviceParameter.NET.RemotePort.ToString());
                        #endregion
                    }
                    else
                    {
                        desc = "无法识别设备的通讯类型";
                    }
                }

                desc += ",成功";
                OnAddDeviceCompleted(dev.DeviceParameter.DeviceID, dev.DeviceParameter.DeviceName, true);
            }
            else
            {
                desc += ",失败";
                OnAddDeviceCompleted(dev.DeviceParameter.DeviceID, dev.DeviceParameter.DeviceName, false);
            }

            this.Logger.Info(true, desc);
        }
Beispiel #30
0
 public DebugViewModel(DeviceManager deviceManager)
 {
     _deviceManager = deviceManager;
 }
Beispiel #31
0
        public override void Issue(DeviceManager manager)
        {
            RenderTrace.ImmediateMarker(Text);

            base.Issue(manager);
        }
Beispiel #32
0
 private void clearDevicesToolStripMenuItem_Click(object sender, EventArgs e)
 {
     DeviceManager.Clear();
     RefreshUsbDevices();
 }
Beispiel #33
0
 private void AddDeviceFromEvent(UsbEvent e)
 {
     DeviceManager.AddDeviceFromEvent(e);
 }
Beispiel #34
0
        //-----------------------------------------------------------
        private static void ListScanners()
        {
            var deviceManager = new DeviceManager();

            var devices = deviceManager.DeviceInfos !
                          .Cast <DeviceInfo>()
                          .Where(d => d != null && d.Type == WiaDeviceType.ScannerDeviceType)
                          .ToArray();

            foreach (var d in devices)
            {
                Console.WriteLine(d.Properties["Name"].get_Value());
            }

            Device device = devices[0].Connect();


            var pHandlingCaps = device.Properties[WIAConst.DPS_DOCUMENT_HANDLING_CAPABILITIES_STR];
//             pHandlingCaps.SetValue( WIADocumentHandlingCaps.FEED );
            var pHandlingSelect = device.Properties[WIAConst.IPS_DOCUMENT_HANDLING_SELECT_STR];

            pHandlingSelect.SetValue(WIAIPSHandlingSelect.FEEDER);

            var scanner = device.Items[1] !;


            //             var dpsPages = device.Properties.Get( WIAPropID.DPS_PAGE_SIZE );
            var pPageSize   = device.Properties.Get(WIAPropID.IPS_PAGE_SIZE);
            var pPages      = device.Properties.Get(WIAPropID.IPS_PAGES);
            var pPageWidth  = device.Properties.Get(WIAPropID.IPS_PAGE_WIDTH);
            var pPageHeight = device.Properties.Get(WIAPropID.IPS_PAGE_HEIGHT);

            int iPages = pPages.GetValue <int>();

            pPageSize.SetValue(WIAPageSize.LETTER);

            Console.WriteLine($"Page Size  : {pPageSize  .GetValue<int>()}");
            Console.WriteLine($"Page Width : {pPageWidth .GetValue<int>()}");
            Console.WriteLine($"Page Height: {pPageHeight.GetValue<int>()}");

            //             if( handlingSelect != null )
            //             {
            //                 Console.WriteLine( "Handling Selected:" );
            //                 Console.WriteLine( handlingSelect.PropertyID );
            //
            //                 var mode = (WIAIPSHandlingSelect)handlingSelect.get_Value();
            //                 Console.WriteLine( $"MOde: {mode} | {mode:X}" );
            //
            // //                 mode = WIAIPSHandlingSelect.FEEDER;
            // //                 object value = mode;
            // //                 handlingSelect.set_Value( ref value );
            //                 handlingSelect.SetValue( WIAIPSHandlingSelect.FEEDER );
            //
            //                 mode = (WIAIPSHandlingSelect)handlingSelect.get_Value();
            //                 Console.WriteLine( $"Mode now: {mode} | {mode:X}" );
            //             }

            //             foreach( WIA.Property prop in scanner.Properties )
            //             {
            //                 int id = prop.PropertyID;
            //                 Console.WriteLine( $"PROP: {id} | 0x{id:X} = '{WIAPropMap.TryGetName(id)}'" );
            //             }
            //             return;


            // Get props
            var pDataType = scanner.Properties.Get(WIAPropID.IPA_DATATYPE);
//             var pPages          = scanner.Properties.Get( WIAPropID.IPS_PAGES       );
//             var pPageSize       = scanner.Properties.Get( WIAPropID.IPS_PAGE_SIZE   );
            var pIntent      = scanner.Properties.Get(WIAPropID.IPS_CUR_INTENT);
            var pDepth       = scanner.Properties.Get(WIAPropID.IPA_DEPTH);
            var pChansPerPix = scanner.Properties.Get(WIAPropID.IPA_CHANNELS_PER_PIXEL);
            var pBitsPerChan = scanner.Properties.Get(WIAPropID.IPA_BITS_PER_CHANNEL);
            var pFormat      = scanner.Properties.Get(WIAPropID.IPA_FORMAT);
            var pResX        = scanner.Properties.Get(WIAPropID.IPS_XRES);
            var pResY        = scanner.Properties.Get(WIAPropID.IPS_YRES);
//             var pRawBitsPerChan = scanner.Properties[WIAConst.IPA_RAW_BITS_PER_CHANNEL_STR];


            var dataType = pDataType.GetValue <WIADataType>();
//             var pageSize        = pPageSize       ?.GetValue<WIAPageSize>();
            var intent      = pIntent.GetValue <WIAIntent>();
            var depth       = pDepth.GetValue <int>();
            var chansPerPix = pChansPerPix.GetValue <int>();
            var bitsPerChan = pBitsPerChan.GetValue <int>();
//             var rawBitsPerChan  = pRawBitsPerChan .get_Value();
            var format = pFormat.GetValue <string>();
            var resX   = pResX.GetValue <int>();
            var resY   = pResY.GetValue <int>();

            pFormat.SetValue(FormatID.wiaFormatPNG);
            pPageSize.SetValue(WIAPageSize.LETTER);
//             pIntent.SetValue( WIAIntent.IMAGE_TYPE_GRAYSCALE );
//             pDataType.SetValue( (int)WIADataType.GRAYSCALE );


//             pDepth.SetValue( 8 );
//             pDataType.SetValue( WIADataType.GRAYSCALE );
//
//             var pIntent = scanner.Properties[WIAConst.IPS_CUR_INTENT_STR];
//             var intent = pIntent.GetValue<WIACurrentIntent>();
//             pIntent.SetValue(
//                 WIACurrentIntent.MAXIMIZE_QUALITY |
//                 WIACurrentIntent.IMAGE_TYPE_GRAYSCALE
//             );

            // Configure Props
            pResX.SetValue(300);
            pResY.SetValue(300);

            //             var resolutions = pResX.SubTypeValues;
            //             foreach( var res in resolutions )
            //             {
            //                 Console.WriteLine( res );
            //             }

            //             device.Properties!.Cast<Property>()
            //                 .FirstOrDefault( p => p.PropertyID == WIAConst.DPS_DOCUMENT_HANDLING_CAPABILITIES );

            //             foreach( WIA.Property prop in device.Properties )
            //             {
            //                 int id = prop.PropertyID;
            //                 Console.WriteLine( id );
            //             }

            //             scanner.Properties["WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES"];

            string scanFolder = Path.Combine(Path.GetTempPath(), "scan-" + Guid.NewGuid());

            int imgCount = 1;

            Console.WriteLine($"Scanning image #{imgCount}...");

            ImageFile img = null !;

            try
            {
                img = (ImageFile)scanner.Transfer(FormatID.wiaFormatBMP);
            }
            catch (COMException ex)
            {
                var code = (WIAComErrorCode)ex.ErrorCode;
//                 if( code == WIAComErrorCode.)
//                 Environment.Exit( 0 );
                ErrorExit($"Error while scanning page (0x{code:X}) : {code.ToMessage()}");
            }


            Console.WriteLine("Saving File...");
            string name = $"img_{imgCount:D4}.bmp";
            string path = Path.Combine(scanFolder, name);

            imgCount++;

            img.SaveFile(path);
        }
Beispiel #35
0
 public RenderController(DeviceManager deviceManager)
 {
     _deviceManager = deviceManager;
 }
Beispiel #36
0
        public async Task Run(Target target)
        {
            Devices = new List <Device> {
            };
            var logger = Logger.Instance();


            if (target == Target.stm32)
            {
                var deviceFactory = new FilterDeviceDefinition(0x0483, 0xDF11) // STM32 Bootloader
                                    .CreateWindowsUsbDeviceFactory(classGuid: WindowsDeviceConstants.GUID_DEVINTERFACE_USB_DEVICE);
                var devices = await deviceFactory.GetConnectedDeviceDefinitionsAsync();

                var device = devices.FirstOrDefault();

                if (device != null)
                {
                    Devices.Add(new Device(device));
                }
            }

            if (target == Target.teensy)
            {
                var deviceFactory = new FilterDeviceDefinition(0x16C0, 0x0478) // Teensy Bootloader
                                    .CreateWindowsHidDeviceFactory(classGuid: WindowsDeviceConstants.GUID_DEVINTERFACE_HID);
                var devices = await deviceFactory.GetConnectedDeviceDefinitionsAsync();

                var device = devices.FirstOrDefault();

                if (device != null)
                {
                    Devices.Add(new Device(device));
                }
            }

            if (target == Target.all)
            {
                var hidGuid         = WindowsDeviceConstants.GUID_DEVINTERFACE_HID;
                var usbGuid         = WindowsDeviceConstants.GUID_DEVINTERFACE_USB_DEVICE;
                var deviceFactories = new List <IDeviceFactory>
                {
                    new FilterDeviceDefinition(0x16C0, 0x0478)              // Teensy Bootloader
                    .CreateWindowsHidDeviceFactory(classGuid: hidGuid),
                    new FilterDeviceDefinition(0x0483, 0xDF11)              // STM32 Bootloader
                    .CreateWindowsUsbDeviceFactory(classGuid: usbGuid),
                    new FilterDeviceDefinition(0xFEED, 0x1307)              // Legacy Ids Ergodox EZ
                    .CreateWindowsHidDeviceFactory(classGuid: hidGuid),
                    new FilterDeviceDefinition(0xFEED, 0x6060)              // Legacy Ids Planck EZ
                    .CreateWindowsHidDeviceFactory(classGuid: hidGuid),
                    new FilterDeviceDefinition(0x3297, 0x1969)              // Moonlander MK1
                    .CreateWindowsHidDeviceFactory(classGuid: hidGuid),
                    new FilterDeviceDefinition(0x3297, 0x4974)              // Ergodox EZ Standard
                    .CreateWindowsHidDeviceFactory(classGuid: hidGuid),
                    new FilterDeviceDefinition(0x3297, 0x4975)              // Ergodox EZ Shine
                    .CreateWindowsHidDeviceFactory(classGuid: hidGuid),
                    new FilterDeviceDefinition(0x3297, 0x4976)              // Ergodox EZ Glow
                    .CreateWindowsHidDeviceFactory(classGuid: hidGuid),
                    new FilterDeviceDefinition(0x3297, 0xC6CE)              // Planck EZ Standard
                    .CreateWindowsHidDeviceFactory(classGuid: hidGuid),
                    new FilterDeviceDefinition(0x3297, 0xC6CF)              // Planck EZ Glow
                    .CreateWindowsHidDeviceFactory(classGuid: hidGuid),
                };

                var deviceManager = new DeviceManager(deviceFactories, null);
                var devices       = await deviceManager.GetConnectedDeviceDefinitionsAsync();

                // The device manager returns an entry for each endpoints
                // as a result duplicates are removed by checking against
                // the pid / vid of previously enumerated devices.
                foreach (var device in devices)
                {
                    var match = Devices.FindIndex((_dev) => _dev.Info.VendorId == device.VendorId && _dev.Info.ProductId == device.ProductId);
                    if (match == -1)
                    {
                        Devices.Add(new Device(device));
                    }
                }
            }
        }
Beispiel #37
0
 public TestUtil()
 {
     DeviceManager  = new DeviceManager();
     ServiceManager = new ServiceManager();
 }
Beispiel #38
0
    // Use this for initialization
    private void Awake()
    {
        Application.runInBackground = true;

        deviceManager = DeviceManager.getInstance();
    }
Beispiel #39
0
 /// <summary>
 /// Initializes the element.
 /// </summary>
 /// <param name="deviceManager">The device manager.</param>
 public virtual void Initialize(DeviceManager deviceManager)
 {
 }
Beispiel #40
0
        public static IKeyed GetUiDevice(DeviceConfig config)
        {
            var comm = CommFactory.GetControlPropertiesConfig(config);

            var typeName = config.Type.ToLower();

            EssentialsTouchpanelController panelController = null;

            var props = JsonConvert.DeserializeObject <CrestronTouchpanelPropertiesConfig>(config.Properties.ToString());

            if (typeName.Contains("dge"))
            {
                Dge100 dgeDevice = null;
                if (typeName == "dge100")
                {
                    dgeDevice = new Dge100(comm.IpIdInt, Global.ControlSystem);
                }
                else if (typeName == "dmdge200c")
                {
                    dgeDevice = new DmDge200C(comm.IpIdInt, Global.ControlSystem);
                }

                if (dgeDevice == null)
                {
                    Debug.Console(1, "Unable to create DGE device");
                    return(null);
                }

                var dgeController = new DgeController(config.Key + "-comPorts", config.Name, dgeDevice, config, props);

                DeviceManager.AddDevice(dgeController);

                panelController = new EssentialsTouchpanelController(config.Key, config.Name, dgeController.DigitalGraphicsEngine,
                                                                     props.ProjectName, props.SgdFile);
            }
            else
            {
                panelController = new EssentialsTouchpanelController(config.Key, config.Name, config.Type, props, comm.IpIdInt);
            }

            panelController.AddPostActivationAction(() =>
            {
                var mainDriver = new EssentialsPanelMainInterfaceDriver(panelController.Panel, props);
                // Then the sub drivers

                // spin up different room drivers depending on room type
                var room = DeviceManager.GetDeviceForKey(props.DefaultRoomKey);
                if (room is EssentialsHuddleSpaceRoom)
                {
                    // Header Driver
                    Debug.Console(0, panelController, "Adding header driver");
                    mainDriver.HeaderDriver = new EssentialsHeaderDriver(mainDriver, props);

                    // AV Driver
                    Debug.Console(0, panelController, "Adding huddle space AV driver");
                    var avDriver            = new EssentialsHuddlePanelAvFunctionsDriver(mainDriver, props);
                    avDriver.DefaultRoomKey = props.DefaultRoomKey;
                    mainDriver.AvDriver     = avDriver;
                    avDriver.CurrentRoom    = room as EssentialsHuddleSpaceRoom;

                    // Environment Driver
                    if (avDriver.CurrentRoom.PropertiesConfig.Environment != null && avDriver.CurrentRoom.PropertiesConfig.Environment.DeviceKeys.Count > 0)
                    {
                        Debug.Console(0, panelController, "Adding environment driver");
                        mainDriver.EnvironmentDriver = new EssentialsEnvironmentDriver(mainDriver, props);

                        mainDriver.EnvironmentDriver.GetDevicesFromConfig(avDriver.CurrentRoom.PropertiesConfig.Environment);
                    }

                    mainDriver.HeaderDriver.SetupHeaderButtons(avDriver, avDriver.CurrentRoom);

                    panelController.LoadAndShowDriver(mainDriver);      // This is a little convoluted.

                    if (panelController.Panel is TswFt5ButtonSystem)
                    {
                        var tsw = panelController.Panel as TswFt5ButtonSystem;
                        // Wire up hard keys
                        tsw.Power.UserObject = new Action <bool>(b => { if (!b)
                                                                        {
                                                                            avDriver.PowerButtonPressed();
                                                                        }
                                                                 });
                        //tsw.Home.UserObject = new Action<bool>(b => { if (!b) HomePressed(); });
                        if (mainDriver.EnvironmentDriver != null)
                        {
                            tsw.Lights.UserObject = new Action <bool>(b =>
                            {
                                if (!b)
                                {
                                    //mainDriver.AvDriver.PopupInterlock.ShowInterlockedWithToggle(mainDriver.EnvironmentDriver.BackgroundSubpageJoin);
                                    mainDriver.EnvironmentDriver.Toggle();
                                }
                            });
                        }
                        tsw.Up.UserObject   = new Action <bool>(avDriver.VolumeUpPress);
                        tsw.Down.UserObject = new Action <bool>(avDriver.VolumeDownPress);
                    }
                }
                //else if (room is EssentialsPresentationRoom)
                //{
                //    Debug.Console(0, panelController, "Adding presentation room driver");
                //    var avDriver = new EssentialsPresentationPanelAvFunctionsDriver(mainDriver, props);
                //    avDriver.CurrentRoom = room as EssentialsPresentationRoom;
                //    avDriver.DefaultRoomKey = props.DefaultRoomKey;
                //    mainDriver.AvDriver = avDriver ;
                //    mainDriver.HeaderDriver = new EssentialsHeaderDriver(mainDriver, props);
                //    panelController.LoadAndShowDriver(mainDriver);

                //    if (panelController.Panel is TswFt5ButtonSystem)
                //    {
                //        var tsw = panelController.Panel as TswFt5ButtonSystem;
                //        // Wire up hard keys
                //        tsw.Power.UserObject = new Action<bool>(b => { if (!b) avDriver.PowerButtonPressed(); });
                //        //tsw.Home.UserObject = new Action<bool>(b => { if (!b) HomePressed(); });
                //        tsw.Up.UserObject = new Action<bool>(avDriver.VolumeUpPress);
                //        tsw.Down.UserObject = new Action<bool>(avDriver.VolumeDownPress);
                //    }
                //}
                else if (room is EssentialsHuddleVtc1Room)
                {
                    Debug.Console(0, panelController, "Adding huddle space VTC AV driver");

                    // Header Driver
                    mainDriver.HeaderDriver = new EssentialsHeaderDriver(mainDriver, props);

                    // AV Driver
                    var avDriver = new EssentialsHuddleVtc1PanelAvFunctionsDriver(mainDriver, props);

                    var codecDriver = new PepperDash.Essentials.UIDrivers.VC.EssentialsVideoCodecUiDriver(panelController.Panel, avDriver,
                                                                                                          (room as EssentialsHuddleVtc1Room).VideoCodec, mainDriver.HeaderDriver);
                    avDriver.SetVideoCodecDriver(codecDriver);
                    avDriver.DefaultRoomKey = props.DefaultRoomKey;
                    mainDriver.AvDriver     = avDriver;
                    avDriver.CurrentRoom    = room as EssentialsHuddleVtc1Room;

                    // Environment Driver
                    if (avDriver.CurrentRoom.PropertiesConfig.Environment != null && avDriver.CurrentRoom.PropertiesConfig.Environment.DeviceKeys.Count > 0)
                    {
                        Debug.Console(0, panelController, "Adding environment driver");
                        mainDriver.EnvironmentDriver = new EssentialsEnvironmentDriver(mainDriver, props);

                        mainDriver.EnvironmentDriver.GetDevicesFromConfig(avDriver.CurrentRoom.PropertiesConfig.Environment);
                    }

                    mainDriver.HeaderDriver.SetupHeaderButtons(avDriver, avDriver.CurrentRoom);

                    panelController.LoadAndShowDriver(mainDriver);      // This is a little convoluted.

                    if (panelController.Panel is TswFt5ButtonSystem)
                    {
                        var tsw = panelController.Panel as TswFt5ButtonSystem;
                        // Wire up hard keys
                        tsw.Power.UserObject = new Action <bool>(b => { if (!b)
                                                                        {
                                                                            avDriver.EndMeetingPress();
                                                                        }
                                                                 });
                        //tsw.Home.UserObject = new Action<bool>(b => { if (!b) HomePressed(); });
                        if (mainDriver.EnvironmentDriver != null)
                        {
                            tsw.Lights.UserObject = new Action <bool>(b =>
                            {
                                if (!b)
                                {
                                    //mainDriver.AvDriver.PopupInterlock.ShowInterlockedWithToggle(mainDriver.EnvironmentDriver.BackgroundSubpageJoin);
                                    mainDriver.EnvironmentDriver.Toggle();
                                }
                            });
                        }
                        tsw.Up.UserObject   = new Action <bool>(avDriver.VolumeUpPress);
                        tsw.Down.UserObject = new Action <bool>(avDriver.VolumeDownPress);
                    }
                }
                else
                {
                    Debug.Console(0, panelController, "ERROR: Cannot load AvFunctionsDriver for room '{0}'", props.DefaultRoomKey);
                }
            });

            return(panelController);
        }
Beispiel #41
0
 public Monitor(DeviceManager deviceManager)
 {
     _deviceManager = deviceManager;
 }
Beispiel #42
0
        //-----------------------------------------------------------
        private void Run(Options opts)
        {
//             ListScanners();

            // For now just assume there's 1 scanner
            var deviceManager = new DeviceManager();

            var devices = deviceManager.DeviceInfos !
                          .Cast <DeviceInfo>()
                          .Where(d => d != null && d.Type == WiaDeviceType.ScannerDeviceType)
                          .ToArray();

            Device device = devices[0].Connect();

            // Use the feeder
            var pHandlingCaps   = device.Properties.Get(WIAPropID.DPS_DOCUMENT_HANDLING_CAPABILITIES);
            var pHandlingSelect = device.Properties.Get(WIAPropID.DPS_DOCUMENT_HANDLING_SELECT);
            var pPageSize       = device.Properties.Get(WIAPropID.IPS_PAGE_SIZE);

            pHandlingSelect.SetValue(WIAIPSHandlingSelect.FEEDER);
            pPageSize.SetValue(WIAPageSize.LETTER);

            // Grab the scanner item
            var scanner = device.Items[1] !;

//             DumpDeviceProps( device );
//             DumpScannerProps( scanner );

            // Start scanning
            string scanFolder = Path.Combine(Path.GetTempPath(), "scan-" + Guid.NewGuid());

            new DirectoryInfo(scanFolder).Create();

            int     imgCount = 1;
            StrList imgPaths = new();

            Log($"Scan path: {scanFolder}");

            for ( ;;)
            {
                ConfigScanner(device, scanner, opts.Resolution);

                Log($"Scanning image #{imgCount}...");
                string path = Path.Combine(scanFolder, $"img_{imgCount:D4}.png");
                imgCount++;

                if (!ScanNextImage(scanner, path))
                {
                    break;
                }

                imgPaths.Add(path);
            }

            if (imgPaths.Count < 1)
            {
                ErrorExit("No images to scan.");
            }

            // Load images and convert to PDF
            Log("Generating PDF...");
            ToPdf(imgPaths, Path.Combine(scanFolder, "scan.pdf"), opts);

            Log("Done.");
            Log($"PDF file at: {opts.OutPath}");
        }
Beispiel #43
0
 private void reloadDevicesToolStripMenuItem_Click(object sender, EventArgs e)
 {
     DeviceManager.LoadDevicesFromFile();
     RefreshUsbDevices();
 }
Beispiel #44
0
 /// <summary>
 /// Get all Devices of current Frame-Grabber
 /// </summary>
 /// <returns></returns>
 public static DeviceInformations[] GetAttachedDevices(DeviceIdentity id)
 {
     return(DeviceManager.GetAttachedDevices(id));
 }
Beispiel #45
0
        public virtual JObject Login(HttpContext context)
        {
            YZRequest request             = new YZRequest(context);
            string    lang                = request.GetString("lang", "zh-chs");
            string    uid                 = request.GetString("uid");
            string    pwd                 = request.GetString("pwd", null);
            bool      isapp               = request.GetBool("isapp");
            string    cordova             = request.GetString("cordova");
            string    model               = request.GetString("model");
            string    name                = request.GetString("name", model);
            string    platform            = request.GetString("platform");
            string    uuid                = request.GetString("uuid");
            string    version             = request.GetString("version");
            string    manufacturer        = request.GetString("manufacturer");
            bool      isVirtual           = request.GetBool("isVirtual", false);
            string    serial              = request.GetString("serial");
            bool      validationPanelShow = request.GetBool("validationPanelShow");
            string    smsGuid             = request.GetString("smsGuid", null);
            string    vcode               = request.GetString("vcode", null);
            string    keystore            = request.GetString("keystore", null);

            //用私钥解密
            if (!String.IsNullOrEmpty(keystore))
            {
                string privateKey = (string)YZTempStorageManager.CurrentStore.Load(keystore);

                RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(1024);
                rsaProvider.FromXmlString(privateKey);

                uid = System.Text.Encoding.UTF8.GetString(rsaProvider.Decrypt(Convert.FromBase64String(uid), false));
                pwd = System.Text.Encoding.UTF8.GetString(rsaProvider.Decrypt(Convert.FromBase64String(pwd), false));
            }

            Device  device = null;
            SMS     sms    = null;
            JObject rv;

            if (isapp)
            {
                using (IYZDbProvider provider = YZDbProviderManager.DefaultProvider)
                {
                    using (IDbConnection cn = provider.OpenConnection())
                    {
                        device = DeviceManager.TryGetDevice(provider, cn, uid, uuid);
                    }
                }

                //设备禁用
                if (device != null && device.Disabled)
                {
                    rv = new JObject();
                    rv[YZJsonProperty.success] = false;
                    rv["prompt"] = true;
                    rv[YZJsonProperty.errorMessage] = Resources.YZMobile.Aspx_Auth_DeviceDisabled;
                    return(rv);
                }

                //账号保护
                if (device == null)
                {
                    bool IsAppLoginProtected;
                    using (BPMConnection cn = new BPMConnection())
                    {
                        cn.WebOpenAnonymous();
                        IsAppLoginProtected = User.IsAppLoginProtected(cn, uid);
                    }

                    if (IsAppLoginProtected)
                    {
                        if (!validationPanelShow)
                        {
                            rv = new JObject();
                            rv[YZJsonProperty.success]      = false;
                            rv["needSmsValidation"]         = true;
                            rv[YZJsonProperty.errorMessage] = Resources.YZMobile.Aspx_Auth_StrangerDevice;
                            return(rv);
                        }

                        if (String.IsNullOrEmpty(smsGuid))
                        {
                            throw new Exception(Resources.YZMobile.Aspx_Auth_GetValidationCodeFirst);
                        }

                        using (IYZDbProvider provider = YZDbProviderManager.DefaultProvider)
                        {
                            using (IDbConnection cn = provider.OpenConnection())
                            {
                                sms = SMSManager.TryGetSMS(provider, cn, smsGuid);
                            }
                        }

                        if (sms == null)
                        {
                            throw new Exception(Resources.YZMobile.Aspx_Auth_GetValidationCodeAgain);
                        }

                        if (sms.ValidationCode != vcode)
                        {
                            throw new Exception(Resources.YZMobile.Aspx_Auth_IncorrectValidationCode);
                        }

                        if (sms.ExpireDate < DateTime.Now)
                        {
                            throw new Exception(Resources.YZMobile.Aspx_Auth_GetValidationCodeAgain);
                        }
                    }
                }
            }

            if (String.IsNullOrEmpty(uid) /*|| String.IsNullOrEmpty(password)*/)
            {
                throw new Exception(Resources.YZStrings.Aspx_Login_EnterAccountTip);
            }

            string realAccount = null;
            string token       = null;

            if (!BPMConnection.Authenticate(YZAuthHelper.BPMServerName, YZAuthHelper.BPMServerPort, uid, pwd, out realAccount, out token))
            {
                throw new Exception(Resources.YZStrings.Aspx_Login_Fail);
            }

            YZAuthHelper.SetAuthCookie(realAccount, token);
            YZAuthHelper.SetLangSession(YZCultureInfoParse.Parse(lang, YZCultureInfoParse.DefauleCultureInfo).LCID);
            YZAuthHelper.ClearLogoutFlag();

            rv = this.GenLoginResult(realAccount, false);

            //登录成功后处理
            if (isapp)
            {
                using (IYZDbProvider provider = YZDbProviderManager.DefaultProvider)
                {
                    using (IDbConnection cn = provider.OpenConnection())
                    {
                        if (device != null)
                        {
                            device.LastLogin = DateTime.Now;
                            DeviceManager.Update(provider, cn, device);
                        }
                        else
                        {
                            device             = new Device();
                            device.Account     = realAccount;
                            device.UUID        = uuid;
                            device.Name        = name;
                            device.Model       = model;
                            device.Description = String.Format("{0} {1} {2} {3}", manufacturer, model, platform, version);
                            device.Disabled    = false;
                            device.RegisterAt  = DateTime.Now;
                            device.LastLogin   = device.RegisterAt;
                            DeviceManager.Insert(provider, cn, device);
                        }

                        if (sms != null)
                        {
                            SMSManager.DeleteSMS(provider, cn, sms.ItemGUID);
                        }
                    }
                }
            }

            return(rv);
        }
Beispiel #46
0
        public override void ChangeDeviceComInfo(int devid, int oldCom, int oldBaud, int newCom, int newBaud)
        {
            IRunDevice dev = DeviceManager.GetDevice(devid);

            if (dev == null)
            {
                Logger.Info(true, String.Format("{0}号设备,改变串口信息不存在", devid.ToString()));
            }
            else
            {
                int  oldComPort = oldCom;
                int  oldComBaud = oldBaud;
                int  newComPort = newCom;
                int  newComBaud = newBaud;
                bool success    = true;
                if (dev.CommunicateType == CommunicateType.COM)
                {
                    if (oldComPort != newComPort)
                    {
                        #region 对旧串口进行处理

                        //--------------对旧串口进行处理----------------//
                        IRunDevice[] oldComDevList = DeviceManager.GetDevices(oldComPort.ToString(), CommunicateType.COM);

                        int oldComDevCount = oldComDevList.Count((d) => d.GetHashCode() != dev.GetHashCode()); //当前串口不等于当前设备的设备数

                        if (oldComDevCount <= 0)                                                               //先修改设备的串口参数,该串口没有可用的设备
                        {
                            string      oldKey           = ComUtils.PortToString(oldComPort);
                            IController oldComController = ControllerManager.GetController(oldKey);
                            if (oldComController != null)
                            {
                                if (ControllerManager.RemoveController(oldComController.Key))
                                {
                                    oldComController.StopController();
                                    oldComController.Dispose();

                                    IComSession comChannel = (IComSession)((IComController)oldComController).ComChannel;
                                    comChannel.Close();
                                    comChannel.COMOpen  -= ComChannel_COMOpen;
                                    comChannel.COMClose -= ComChannel_COMClose;
                                    comChannel.COMError -= ComChannel_COMError;
                                    if (ChannelManager.RemoveChannel(comChannel.Key))
                                    {
                                        comChannel.Close();
                                        comChannel.Dispose();
                                    }
                                }
                                else
                                {
                                    success = false;
                                }
                            }
                            else
                            {
                                Logger.Info(true, "该设备的串口控制器为空");
                            }
                        }
                        #endregion

                        #region 对新串口进行处理
                        string newKey = ComUtils.PortToString(newComPort);
                        //--------------对新串口进行处理----------------//
                        bool newComControllerExist = ControllerManager.ContainController(newKey);
                        if (!newComControllerExist)
                        {
                            IChannel channel = ChannelManager.GetChannel(newKey);
                            if (channel == null)
                            {
                                IComSession comChannel = new ComSession(newComPort, newComBaud);
                                comChannel.Setup(this);
                                comChannel.Initialize();
                                comChannel.COMOpen  += ComChannel_COMOpen;
                                comChannel.COMClose += ComChannel_COMClose;
                                comChannel.COMError += ComChannel_COMError;
                                comChannel.Open();
                                channel = (IChannel)comChannel;

                                ChannelManager.AddChannel(comChannel.Key, channel);
                            }

                            IController controller = ControllerManager.GetController(newKey);
                            if (controller == null)
                            {
                                controller = new ComController((IComSession)channel);
                                controller.Setup(this);
                                if (ControllerManager.AddController(controller.Key, controller))
                                {
                                    controller.StartController();
                                }
                            }
                            else
                            {
                                IComController comController = (IComController)controller;
                                if (comController.ComChannel.GetHashCode() != channel.GetHashCode())
                                {
                                    comController.ComChannel = (IComSession)channel;
                                }
                            }
                        }

                        if (success)
                        {
                            dev.DeviceParameter.COM.Port = newComPort;
                            Logger.Info(true, String.Format("{0},串口从{1}改为{2},成功", dev.DeviceParameter.DeviceName, oldComPort.ToString(), newComPort.ToString()));
                        }
                        else
                        {
                            Logger.Info(true, String.Format("{0},串口从{1}改为{2},失败", dev.DeviceParameter.DeviceName, oldComPort.ToString(), newComPort.ToString()));
                        }
                        #endregion
                    }
                    else
                    {
                        #region 波特率
                        if (oldComBaud != newComBaud)
                        {
                            IComSession comIO = (IComSession)ChannelManager.GetChannel(ComUtils.PortToString(oldComPort));
                            if (comIO != null)
                            {
                                success = comIO.Settings(newComBaud);
                                if (success)
                                {
                                    dev.DeviceParameter.COM.Baud = newComBaud;
                                    Logger.Info(true, String.Format("{0},串口{1}的波特率从{2}改为{3},成功", dev.DeviceParameter.DeviceName, oldComPort.ToString(), oldComBaud.ToString(), newComBaud.ToString()));
                                }
                                else
                                {
                                    Logger.Info(true, String.Format("{0},串口{1}的波特率从{2}改为{3},失败", dev.DeviceParameter.DeviceName, oldComPort.ToString(), oldComBaud.ToString(), newComBaud.ToString()));
                                }
                            }
                        }
                        #endregion
                    }
                }
                else
                {
                    Logger.Info(true, String.Format("{0},不是串口类型的设备", dev.DeviceParameter.DeviceName));
                }
            }
        }
Beispiel #47
0
        public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
        {
            var joinMap = new DmBladeChassisControllerJoinMap(joinStart);

            var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey);

            if (!string.IsNullOrEmpty(joinMapSerialized))
            {
                joinMap = JsonConvert.DeserializeObject <DmBladeChassisControllerJoinMap>(joinMapSerialized);
            }

            bridge.AddJoinMap(Key, joinMap);

            Debug.Console(1, this, "Linking to Trilist '{0}'", trilist.ID.ToString("X"));

            IsOnline.LinkInputSig(trilist.BooleanInput[joinMap.IsOnline.JoinNumber]);

            // Link up outputs
            for (uint i = 1; i <= Chassis.NumberOfOutputs; i++)
            {
                var ioSlot     = i;
                var ioSlotJoin = ioSlot - 1;

                // Control
                trilist.SetUShortSigAction(joinMap.OutputVideo.JoinNumber + ioSlotJoin, o => ExecuteSwitch(o, ioSlot, eRoutingSignalType.Video));

                if (TxDictionary.ContainsKey(ioSlot))
                {
                    Debug.Console(2, "Creating Tx Feedbacks {0}", ioSlot);
                    var txKey         = TxDictionary[ioSlot];
                    var basicTxDevice = DeviceManager.GetDeviceForKey(txKey) as BasicDmTxControllerBase;

                    var advancedTxDevice = basicTxDevice as DmTxControllerBase;

                    if (Chassis is DmMd128x128 || Chassis is DmMd64x64)
                    {
                        InputEndpointOnlineFeedbacks[ioSlot].LinkInputSig(trilist.BooleanInput[joinMap.InputEndpointOnline.JoinNumber + ioSlotJoin]);
                    }
                    else
                    {
                        if (advancedTxDevice != null)
                        {
                            advancedTxDevice.IsOnline.LinkInputSig(trilist.BooleanInput[joinMap.InputEndpointOnline.JoinNumber + ioSlotJoin]);
                            Debug.Console(2, "Linking Tx Online Feedback from Advanced Transmitter at input {0}", ioSlot);
                        }
                        else if (InputEndpointOnlineFeedbacks[ioSlot] != null)
                        {
                            Debug.Console(2, "Linking Tx Online Feedback from Input Card {0}", ioSlot);
                            InputEndpointOnlineFeedbacks[ioSlot].LinkInputSig(trilist.BooleanInput[joinMap.InputEndpointOnline.JoinNumber + ioSlotJoin]);
                        }
                    }

                    if (basicTxDevice != null && advancedTxDevice == null)
                    {
                        trilist.BooleanInput[joinMap.TxAdvancedIsPresent.JoinNumber + ioSlotJoin].BoolValue = true;
                    }

                    if (advancedTxDevice != null)
                    {
                        advancedTxDevice.AnyVideoInput.VideoStatus.VideoSyncFeedback.LinkInputSig(trilist.BooleanInput[joinMap.VideoSyncStatus.JoinNumber + ioSlotJoin]);
                    }
                    else
                    {
                        Debug.Console(1, "Setting up actions and feedbacks on input card {0}", ioSlot);
                        VideoInputSyncFeedbacks[ioSlot].LinkInputSig(trilist.BooleanInput[joinMap.VideoSyncStatus.JoinNumber + ioSlotJoin]);

                        var inputPort = InputPorts[string.Format("inputCard{0}--hdmiIn", ioSlot)];
                        if (inputPort != null)
                        {
                            Debug.Console(1, "Port value for input card {0} is set", ioSlot);
                            var port = inputPort.Port;

                            if (port != null)
                            {
                                if (port is HdmiInputWithCEC)
                                {
                                    Debug.Console(1, "Port is HdmiInputWithCec");

                                    var hdmiInPortWCec = port as HdmiInputWithCEC;

                                    if (hdmiInPortWCec.HdcpSupportedLevel != eHdcpSupportedLevel.Unknown)
                                    {
                                        SetHdcpStateAction(true, hdmiInPortWCec, joinMap.HdcpSupportState.JoinNumber + ioSlotJoin, trilist);
                                    }

                                    InputCardHdcpCapabilityFeedbacks[ioSlot].LinkInputSig(trilist.UShortInput[joinMap.HdcpSupportState.JoinNumber + ioSlotJoin]);

                                    if (InputCardHdcpCapabilityTypes.ContainsKey(ioSlot))
                                    {
                                        trilist.UShortInput[joinMap.HdcpSupportCapability.JoinNumber + ioSlotJoin].UShortValue = (ushort)InputCardHdcpCapabilityTypes[ioSlot];
                                    }
                                    else
                                    {
                                        trilist.UShortInput[joinMap.HdcpSupportCapability.JoinNumber + ioSlotJoin].UShortValue = 1;
                                    }
                                }
                            }
                        }
                        else
                        {
                            inputPort = InputPorts[string.Format("inputCard{0}--dmIn", ioSlot)];

                            if (inputPort != null)
                            {
                                var port = inputPort.Port;

                                if (port is DMInputPortWithCec)
                                {
                                    Debug.Console(1, "Port is DMInputPortWithCec");

                                    var dmInPortWCec = port as DMInputPortWithCec;

                                    SetHdcpStateAction(PropertiesConfig.InputSlotSupportsHdcp2[ioSlot], dmInPortWCec, joinMap.HdcpSupportState.JoinNumber + ioSlotJoin, trilist);

                                    InputCardHdcpCapabilityFeedbacks[ioSlot].LinkInputSig(trilist.UShortInput[joinMap.HdcpSupportState.JoinNumber + ioSlotJoin]);

                                    if (InputCardHdcpCapabilityTypes.ContainsKey(ioSlot))
                                    {
                                        trilist.UShortInput[joinMap.HdcpSupportCapability.JoinNumber + ioSlotJoin].UShortValue = (ushort)InputCardHdcpCapabilityTypes[ioSlot];
                                    }
                                    else
                                    {
                                        trilist.UShortInput[joinMap.HdcpSupportCapability.JoinNumber + ioSlotJoin].UShortValue = 1;
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    VideoInputSyncFeedbacks[ioSlot].LinkInputSig(trilist.BooleanInput[joinMap.VideoSyncStatus.JoinNumber + ioSlotJoin]);

                    var inputPort = InputPorts[string.Format("inputCard{0}--hdmiIn", ioSlot)];
                    if (inputPort != null)
                    {
                        var hdmiPort = inputPort.Port as EndpointHdmiInput;

                        if (hdmiPort != null)
                        {
                            SetHdcpStateAction(true, hdmiPort, joinMap.HdcpSupportState.JoinNumber + ioSlotJoin, trilist);
                            InputCardHdcpCapabilityFeedbacks[ioSlot].LinkInputSig(trilist.UShortInput[joinMap.HdcpSupportState.JoinNumber + ioSlotJoin]);
                        }
                    }
                }
                if (RxDictionary.ContainsKey(ioSlot))
                {
                    Debug.Console(2, "Creating Rx Feedbacks {0}", ioSlot);
                    //var rxKey = RxDictionary[ioSlot];
                    //var rxDevice = DeviceManager.GetDeviceForKey(rxKey) as DmRmcControllerBase;
                    //var hdBaseTDevice = DeviceManager.GetDeviceForKey(rxKey) as DmHdBaseTControllerBase;
                    //if (hdBaseTDevice != null) {
                    OutputEndpointOnlineFeedbacks[ioSlot].LinkInputSig(trilist.BooleanInput[joinMap.OutputEndpointOnline.JoinNumber + ioSlotJoin]);
                    //}
                    //else if (rxDevice != null) {
                    //    rxDevice.IsOnline.LinkInputSig(trilist.BooleanInput[joinMap.OutputEndpointOnline + ioSlot]);
                    //}
                }

                // Feedback
                VideoOutputFeedbacks[ioSlot].LinkInputSig(trilist.UShortInput[joinMap.OutputVideo.JoinNumber + ioSlotJoin]);


                OutputNameFeedbacks[ioSlot].LinkInputSig(trilist.StringInput[joinMap.OutputNames.JoinNumber + ioSlotJoin]);
                InputNameFeedbacks[ioSlot].LinkInputSig(trilist.StringInput[joinMap.InputNames.JoinNumber + ioSlotJoin]);
                OutputVideoRouteNameFeedbacks[ioSlot].LinkInputSig(trilist.StringInput[joinMap.OutputCurrentVideoInputNames.JoinNumber + ioSlotJoin]);
            }
        }
Beispiel #48
0
        /// <summary>
        /// Neutral Language Processing
        /// </summary>
        private async void NLP(string sentence, bool speech = false)
        {
            if (sentence != null && sentence != "")
            {
                #region Pre-Processing
                if (IsDone)
                {
                    textBox1.Document.Blocks.Clear(); image.Source = null;
                }
                StopCommandWaiting.Invoke(this, new EventArgs());
                textBox1.AppendText(sentence + "\n"); this.textBox1.ScrollToEnd();

                var Received = lus.TextRequest(sentence);
                #endregion
                if (Received.Result.ActionIncomplete)
                {
                    #region ActionIncomplete
                    await HistoryWrite(Received.Result.Fulfillment.Speech, speech);

                    if (speech)
                    {
                        StartSpeak.RaiseEvent(new RoutedEventArgs(ButtonBase.ClickEvent));
                    }
                    return;
                }
                #endregion
                else
                {
                    #region ActionComplete
                    DeviceManager devman = new DeviceManager();
                    switch (Received.Result.Action)
                    {
                        #region WebSearch
                    case "web.search":
                        if (Received.Result.Parameters.ContainsKey("q"))
                        {
                            Process.Start(String.Concat("https://www.google.com/search?q=" + Received.Result.Parameters["q"]));
                        }
                        break;

                        #endregion
                        #region Smarthome
                    case "smarthome.appliances_on":
                        if (Received.Result.Parameters["all"].ToString() == "true")
                        {
                            string dev;
                            dev = Received.Result.Parameters["appliance_name"].ToString();
                            if (devman.IsTypeExist(dev))
                            {
                                HistoryWrite("I will turn on all " + dev, speech);
                                devman.SetAll(dev, 1);
                            }
                            else
                            {
                                HistoryWrite("I can't find any " + dev, speech);
                            }
                        }
                        else
                        {
                            string dev;
                            dev = Received.Result.Parameters["appliance_name"].ToString() + Received.Result.Parameters["number"];
                            if (devman.IsExist(dev))
                            {
                                HistoryWrite("I will turn on the " + dev, speech);
                                devman.Set(dev, 1);
                            }
                            else
                            {
                                HistoryWrite("I can't find the " + dev, speech);
                            }
                        }
                        break;

                    case "smarthome.appliances_off":

                        if (Received.Result.Parameters["all"].ToString() == "true")
                        {
                            string dev;
                            dev = Received.Result.Parameters["appliance_name"].ToString();
                            if (devman.IsTypeExist(dev))
                            {
                                HistoryWrite("I will turn off all " + dev, speech);
                                devman.SetAll(dev, 0);
                            }
                            else
                            {
                                HistoryWrite("I can't find any " + dev, speech);
                            }
                        }
                        else
                        {
                            string dev;
                            dev = Received.Result.Parameters["appliance_name"].ToString() + Received.Result.Parameters["number"];
                            if (devman.IsExist(dev))
                            {
                                HistoryWrite("I will turn off the " + dev, speech);
                                devman.Set(dev, 0);
                            }
                            else
                            {
                                HistoryWrite("I can't find the " + dev, speech);
                            }
                        }
                        break;

                        #endregion
                        #region Clock
                    case "clock.date":
                        if (Received.Result.Parameters["date"].ToString() != null)
                        {
                            HistoryWrite("It's " + Received.Result.Parameters["date"], speech);
                        }
                        else
                        {
                            HistoryWrite("It's " + DateTime.Now.ToShortDateString(), speech);
                        }
                        break;

                    case "clock.time":
                        HistoryWrite("It's " + DateTime.Now.ToShortTimeString(), speech);
                        break;

                        #endregion
                        #region Weather
                    case "weather.search":
                        var      WE        = new Weather();
                        DateTime Now       = DateTime.Now;
                        DateTime Converted = DateTime.Now;
                        string   location  = "autoip";
                        if (Received.Result.Parameters.ContainsKey("geo-city") && Received.Result.Parameters["geo-city"].ToString() != "")
                        {
                            location = Received.Result.Parameters["geo-city"].ToString();
                        }
                        else
                        {
                            location = "autoip";
                        }
                        string time = "present";
                        if (Received.Result.Parameters.ContainsKey("date"))
                        {
                            DateTime.TryParseExact(Received.Result.Parameters["date"].ToString(), "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out Converted);
                            if (Now < Converted)
                            {
                                time = "future";
                            }
                        }
                        if (time == "present")
                        {
                            var data = WE.GetCurrentWeather(location);
                            if (data == null)
                            {
                                HistoryWrite(Received.Result.Fulfillment.Speech);
                            }
                            else
                            {
                                if (location == "autoip")
                                {
                                    HistoryWrite("The current weather at current location is " + data["weather"].ToString().ToLower() + " with the temperature of " + data["temp_c"].ToString() + " C.", speech);
                                }
                                else
                                {
                                    HistoryWrite("The current weather in " + location + " is " + data["weather"].ToString().ToLower() + " with the temperature of " + data["temp_c"].ToString() + " C.", speech);
                                }
                                BitmapImage bi3 = new BitmapImage();
                                bi3.BeginInit();
                                bi3.UriSource = new Uri(data["icon_url"].ToString(), UriKind.Absolute);
                                bi3.EndInit();
                                image.Stretch = Stretch.Uniform;
                                image.Source  = bi3;
                            }
                        }
                        if (time == "future")
                        {
                            var data = WE.GetForecastWeather(Converted, location);
                            if (data == null)
                            {
                                HistoryWrite(Received.Result.Fulfillment.Speech);
                            }
                            else
                            {
                                if (location == "autoip")
                                {
                                    HistoryWrite("The weather at current location on " + data["date"].ToString() + " will be " + data["conditions"].ToString().ToLower() + " with the temperature of " + data["low_c"].ToString() + " C at lowest and " + data["high_c"] + " C at highest.", speech);
                                }
                                else
                                {
                                    HistoryWrite("The weather in " + location + " on " + data["date"].ToString() + " will be " + data["conditions"].ToString().ToLower() + " with the temperature of " + data["low_c"].ToString() + " C at lowest and " + data["high_c"] + " C at highest.", speech);
                                }
                                BitmapImage bi3 = new BitmapImage();
                                bi3.BeginInit();
                                bi3.UriSource = new Uri(data["icon_url"].ToString(), UriKind.Absolute);
                                bi3.EndInit();
                                image.Stretch = Stretch.Uniform;
                                image.Source  = bi3;
                            }
                        }
                        break;

                        #endregion
                        #region Easteregg
                    case "easteregg.singing":
                        int         Choice = Choices.Next() % 3;
                        var         path   = System.IO.Path.Combine("Singing", Convert.ToString(Choice) + ".wav");
                        SoundPlayer player = new SoundPlayer(path);
                        player.Play();
                        if (Choice == 1)
                        {
                            HistoryWrite("You are my sunshine, my only sunshine. You make me happy, when skies are gray.");
                        }

                        else if (Choice == 2)
                        {
                            HistoryWrite("Oh he floats through the air with the greatest of ease, this daring young man on the flying trapeze.");
                        }
                        else
                        {
                            HistoryWrite("Twinkle twinkle little star, how I wonder what you are!");
                        }
                        break;

                        #endregion
                        #region Reminder
                    case "reminder.add":
                        BitmapImage bir = new BitmapImage();
                        bir.BeginInit();
                        bir.UriSource = new Uri(@"\Assets\Reminder.png", UriKind.Relative);
                        bir.EndInit();
                        image.Stretch = Stretch.Uniform;
                        image.Source  = bir;
                        string summary = Received.Result.Parameters["summary"].ToString();
                        time = Received.Result.Parameters["time"].ToString();
                        DateTime converted = new DateTime();

                        if (time.Contains("/"))
                        {
                            /*if (!time.Contains("T"))
                             *  time = time.Substring(time.IndexOf('/') + 1);
                             * else */
                            time = time.Remove(time.IndexOf('/'));
                            time = time.Trim('/');
                        }
                        if (time.Contains("T"))
                        {
                            DateTime.TryParseExact(time, "yyyy-MM-dd\\THH:mm:ss\\Z", CultureInfo.InvariantCulture, DateTimeStyles.None, out converted);
                        }
                        else
                        {
                            if (time.Contains("-"))
                            {
                                DateTime.TryParseExact(time, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out converted);
                            }
                            else
                            {
                                DateTime.TryParseExact(time, "HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out converted);
                            }
                        }
                        while (converted < DateTime.Now)
                        {
                            converted = converted.AddDays(1);
                        }
                        summary       = summary.Trim();
                        item.reminder = summary;
                        item.datetime = converted;
                        item.Notified = false;
                        string cvt;
                        if (converted.Date > DateTime.Now.Date)
                        {
                            cvt = converted.ToString("dddd, MMMM dd, yyyy h:mm tt");
                        }
                        else
                        {
                            cvt = converted.ToShortTimeString();
                        }

                        await HistoryWrite("I'll remind you to " + summary + " on " + cvt + ". Ready to confirm?", speech);

                        if (speech)
                        {
                            Dispatcher.Invoke((Action)(() =>
                            {
                                StartSpeak_Click(this, new RoutedEventArgs());
                            }));
                        }
                        IsDone = false;
                        return;

                    case "reminder.confirm":
                        if (item != new Reminder())
                        {
                            ReminderManager.SaveReminder(item);
                            HistoryWrite(Received.Result.Fulfillment.Speech, speech);
                            item = new Reminder();
                        }
                        else
                        {
                            HistoryWrite("I'm not sure what you said.", speech);
                        }
                        IsDone = true;
                        break;

                    case "reminder.cancel":
                        item = new Reminder();
                        HistoryWrite(Received.Result.Fulfillment.Speech, speech);
                        break;

                        #endregion
                        #region Location
                    case "location.current":
                        string loc = Location.GetCurrentAddress();
                        if (loc != null)
                        {
                            HistoryWrite("We are at " + loc + " .", speech);
                        }
                        else
                        {
                            HistoryWrite(Received.Result.Fulfillment.Speech, speech);
                        }
                        break;

                        #endregion
                        #region History
                    case "history.event":
                        List <Dictionary <string, object> > result = null;
                        DateTime ChosenDate = new DateTime();
                        bool     IsToday    = true;
                        if (Received.Result.Parameters["date"].ToString() == "")
                        {
                            result = History.GetHistory(DateTime.Now);
                        }
                        else
                        {
                            DateTime.TryParseExact(Received.Result.Parameters["date"].ToString(), "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out ChosenDate);
                            result  = History.GetHistory(ChosenDate);
                            IsToday = false;
                        }
                        if (result == null)
                        {
                            HistoryWrite(Received.Result.Fulfillment.Speech, speech);
                        }
                        else
                        {
                            Choice = Choices.Next() % result.Count - 1;
                            var picked = result[Choice];
                            if (IsToday)
                            {
                                HistoryWrite("On this day in " + picked["year"].ToString() + ", " + AccentsRemover.RemoveAccents(picked["text"].ToString()), speech);
                            }
                            else
                            {
                                HistoryWrite("On " + ChosenDate.ToShortDateString() + " in " + picked["year"].ToString() + ", " + AccentsRemover.RemoveAccents(picked["text"].ToString()), speech);
                            }
                        }
                        break;

                        #endregion
                        #region Knowledge & Dictionary
                    case "dictionary.search":
                        string q          = Received.Result.Parameters["q"].ToString();
                        var    definition = Dictionary.Define(q);
                        if (definition == null)
                        {
                            HistoryWrite(Received.Result.Fulfillment.Speech, speech);
                        }
                        else
                        {
                            var First = definition[0];
                            HistoryWrite(q + " has a " + First.lexicalCategory + " meaning, " + First.entries[0].senses[0].definitions[0], speech, false);
                            HistoryWrite(q, false, true, true);
                            foreach (var entry in definition)
                            {
                                HistoryWrite(entry.lexicalCategory, false, true, true);
                                foreach (var def in entry.entries[0].senses)
                                {
                                    HistoryWrite("-" + def.definitions[0], false, true, true);
                                }
                            }
                        }
                        break;

                    case "knowledge.search":

                        var knowledgeresult = Knowledge.GetKnowledge(Received.Result.Parameters["questionword"].ToString() + " " + Received.Result.Parameters["q"].ToString());
                        if (knowledgeresult != null)
                        {
                            //BitmapImage bitmap = new BitmapImage(new Uri(@"Assets\simple.jpg", UriKind.Relative));
                            BitmapImage bitmap = new BitmapImage();
                            BitmapImage bik    = new BitmapImage();
                            try
                            {
                                bitmap = new BitmapImage(new Uri(knowledgeresult["simpleurl"], UriKind.Absolute));
                            }
                            catch { }
                            try
                            {
                                bik = new BitmapImage(new Uri(knowledgeresult["imageurl"], UriKind.Absolute));
                            }
                            catch { }
                            image.Source = bik;
                            Image simpleImage = new Image();
                            simpleImage.Source  = bitmap;
                            simpleImage.Stretch = Stretch.Uniform;
                            InlineUIContainer container = new InlineUIContainer(simpleImage);
                            Paragraph         paragraph = new Paragraph(container);
                            HistoryWrite(knowledgeresult["response"], speech);
                            textBox1.Document.Blocks.Add(paragraph);
                        }
                        else
                        {
                            Process.Start(String.Concat("https://www.google.com/search?q=" + Received.Result.Parameters["q"]));
                        }

                        break;

                        #endregion
                    default:
                        HistoryWrite(Received.Result.Fulfillment.Speech, speech);
                        break;
                    }
                    #endregion
                }
                StartCommandWaiting.Invoke(this, new EventArgs());
                IsDone = true;
            }
        }
Beispiel #49
0
        public static IKeyed GetDevice(DeviceConfig dc)
        {
            var key        = dc.Key;
            var name       = dc.Name;
            var type       = dc.Type;
            var properties = dc.Properties;
            var propAnon   = new {};

            JsonConvert.DeserializeAnonymousType(dc.Properties.ToString(), propAnon);

            var typeName  = dc.Type.ToLower();
            var groupName = dc.Group.ToLower();

            if (typeName == "appletv")
            {
                var irCont = IRPortHelper.GetIrOutputPortController(dc);
                return(new AppleTV(key, name, irCont));
            }
            else if (typeName == "analogwaylivecore")
            {
                var comm  = CommFactory.CreateCommForDevice(dc);
                var props = JsonConvert.DeserializeObject <AnalogWayLiveCorePropertiesConfig>(
                    properties.ToString());
                return(new AnalogWayLiveCore(key, name, comm, props));
            }
            else if (typeName == "basicirdisplay")
            {
                var ir = IRPortHelper.GetIrPort(properties);
                if (ir != null)
                {
                    var display = new BasicIrDisplay(key, name, ir.Port, ir.FileName);
                    display.IrPulseTime = 200;       // Set default pulse time for IR commands.
                    return(display);
                }
            }

            else if (typeName == "biamptesira")
            {
                var comm  = CommFactory.CreateCommForDevice(dc);
                var props = JsonConvert.DeserializeObject <BiampTesiraFortePropertiesConfig>(
                    properties.ToString());
                return(new BiampTesiraForteDsp(key, name, comm, props));
            }


            else if (typeName == "cameravisca")
            {
                var comm  = CommFactory.CreateCommForDevice(dc);
                var props = JsonConvert.DeserializeObject <Cameras.CameraPropertiesConfig>(
                    properties.ToString());
                return(new Cameras.CameraVisca(key, name, comm, props));
            }

            else if (typeName == "cenrfgwex")
            {
                return(CenRfgwController.GetNewExGatewayController(key, name,
                                                                   properties.Value <string>("id"), properties.Value <string>("gatewayType")));
            }

            else if (typeName == "cenerfgwpoe")
            {
                return(CenRfgwController.GetNewErGatewayController(key, name,
                                                                   properties.Value <string>("id"), properties.Value <string>("gatewayType")));
            }

            else if (groupName == "discplayer")             // (typeName == "irbluray")
            {
                if (properties["control"]["method"].Value <string>() == "ir")
                {
                    var irCont = IRPortHelper.GetIrOutputPortController(dc);
                    return(new IRBlurayBase(key, name, irCont));
                }
                else if (properties["control"]["method"].Value <string>() == "com")
                {
                    Debug.Console(0, "[{0}] COM Device type not implemented YET!", key);
                }
            }
            else if (typeName == "digitallogger")
            {
                // var comm = CommFactory.CreateCommForDevice(dc);
                var props = JsonConvert.DeserializeObject <DigitalLoggerPropertiesConfig>(
                    properties.ToString());
                return(new DigitalLogger(key, name, props));
            }
            else if (typeName == "genericaudiooutwithvolume")
            {
                var zone = dc.Properties.Value <uint>("zone");
                return(new GenericAudioOutWithVolume(key, name,
                                                     dc.Properties.Value <string>("volumeDeviceKey"), zone));
            }

            else if (groupName == "genericsource")
            {
                return(new GenericSource(key, name));
            }

            else if (typeName == "inroompc")
            {
                return(new Core.Devices.InRoomPc(key, name));
            }

            else if (typeName == "laptop")
            {
                return(new Core.Devices.Laptop(key, name));
            }

            else if (typeName == "mockvc")
            {
                return(new VideoCodec.MockVC(dc));
            }

            else if (typeName == "mockac")
            {
                var props = JsonConvert.DeserializeObject <AudioCodec.MockAcPropertiesConfig>(properties.ToString());
                return(new AudioCodec.MockAC(key, name, props));
            }

            else if (typeName.StartsWith("ciscospark"))
            {
                var comm = CommFactory.CreateCommForDevice(dc);
                return(new VideoCodec.Cisco.CiscoSparkCodec(dc, comm));
            }

            else if (typeName == "zoomroom")
            {
                var comm = CommFactory.CreateCommForDevice(dc);
                return(new VideoCodec.ZoomRoom.ZoomRoom(dc, comm));
            }

            else if (typeName == "digitalinput")
            {
                var props = JsonConvert.DeserializeObject <IOPortConfig>(properties.ToString());

                IDigitalInputPorts portDevice;

                if (props.PortDeviceKey == "processor")
                {
                    portDevice = Global.ControlSystem as IDigitalInputPorts;
                }
                else
                {
                    portDevice = DeviceManager.GetDeviceForKey(props.PortDeviceKey) as IDigitalInputPorts;
                }

                if (portDevice == null)
                {
                    Debug.Console(0, "ERROR: Unable to add digital input device with key '{0}'. Port Device does not support digital inputs", key);
                }
                else
                {
                    var cs = (portDevice as CrestronControlSystem);
                    if (cs == null)
                    {
                        Debug.Console(0, "ERROR: Port device for [{0}] is not control system", props.PortDeviceKey);
                        return(null);
                    }

                    if (cs.SupportsVersiport)
                    {
                        Debug.Console(1, "Attempting to add Digital Input device to Versiport port '{0}'", props.PortNumber);

                        if (props.PortNumber > cs.NumberOfVersiPorts)
                        {
                            Debug.Console(0, "WARNING: Cannot add Vesiport {0} on {1}. Out of range",
                                          props.PortNumber, props.PortDeviceKey);
                            return(null);
                        }

                        Versiport vp = cs.VersiPorts[props.PortNumber];

                        if (!vp.Registered)
                        {
                            var regSuccess = vp.Register();
                            if (regSuccess == eDeviceRegistrationUnRegistrationResponse.Success)
                            {
                                Debug.Console(1, "Successfully Created Digital Input Device on Versiport");
                                return(new GenericVersiportDigitalInputDevice(key, vp, props));
                            }
                            else
                            {
                                Debug.Console(0, "WARNING: Attempt to register versiport {0} on device with key '{1}' failed: {2}",
                                              props.PortNumber, props.PortDeviceKey, regSuccess);
                                return(null);
                            }
                        }
                    }
                    else if (cs.SupportsDigitalInput)
                    {
                        Debug.Console(1, "Attempting to add Digital Input device to Digital Input port '{0}'", props.PortNumber);

                        if (props.PortNumber > cs.NumberOfDigitalInputPorts)
                        {
                            Debug.Console(0, "WARNING: Cannot register DIO port {0} on {1}. Out of range",
                                          props.PortNumber, props.PortDeviceKey);
                            return(null);
                        }

                        DigitalInput digitalInput = cs.DigitalInputPorts[props.PortNumber];

                        if (!digitalInput.Registered)
                        {
                            if (digitalInput.Register() == eDeviceRegistrationUnRegistrationResponse.Success)
                            {
                                Debug.Console(1, "Successfully Created Digital Input Device on Digital Input");
                                return(new GenericDigitalInputDevice(key, digitalInput));
                            }
                            else
                            {
                                Debug.Console(0, "WARNING: Attempt to register digital input {0} on device with key '{1}' failed.",
                                              props.PortNumber, props.PortDeviceKey);
                            }
                        }
                    }
                }
            }

            else if (typeName == "relayoutput")
            {
                var props = JsonConvert.DeserializeObject <IOPortConfig>(properties.ToString());

                IRelayPorts portDevice;

                if (props.PortDeviceKey == "processor")
                {
                    portDevice = Global.ControlSystem as IRelayPorts;
                }
                else
                {
                    portDevice = DeviceManager.GetDeviceForKey(props.PortDeviceKey) as IRelayPorts;
                }

                if (portDevice == null)
                {
                    Debug.Console(0, "Unable to add relay device with key '{0}'. Port Device does not support relays", key);
                }
                else
                {
                    var cs = (portDevice as CrestronControlSystem);

                    if (cs != null)
                    {
                        // The relay is on a control system processor
                        if (!cs.SupportsRelay || props.PortNumber > cs.NumberOfRelayPorts)
                        {
                            Debug.Console(0, "Port Device: {0} does not support relays or does not have enough relays");
                            return(null);
                        }
                    }
                    else
                    {
                        // The relay is on another device type

                        if (props.PortNumber > portDevice.NumberOfRelayPorts)
                        {
                            Debug.Console(0, "Port Device: {0} does not have enough relays");
                            return(null);
                        }
                    }

                    Relay relay = portDevice.RelayPorts[props.PortNumber];

                    if (!relay.Registered)
                    {
                        if (relay.Register() == eDeviceRegistrationUnRegistrationResponse.Success)
                        {
                            return(new GenericRelayDevice(key, relay));
                        }
                        else
                        {
                            Debug.Console(0, "Attempt to register relay {0} on device with key '{1}' failed.", props.PortNumber, props.PortDeviceKey);
                        }
                    }
                    else
                    {
                        return(new GenericRelayDevice(key, relay));
                    }

                    // Future: Check if portDevice is 3-series card or other non control system that supports versiports
                }
            }

            else if (typeName == "microphoneprivacycontroller")
            {
                var props = JsonConvert.DeserializeObject <Core.Privacy.MicrophonePrivacyControllerConfig>(properties.ToString());

                return(new Core.Privacy.MicrophonePrivacyController(key, props));
            }
            else if (typeName == "roku")
            {
                var irCont = IRPortHelper.GetIrOutputPortController(dc);
                return(new Roku2(key, name, irCont));
            }

            else if (groupName == "settopbox") //(typeName == "irstbbase")
            {
                var irCont = IRPortHelper.GetIrOutputPortController(dc);
                var config = dc.Properties.ToObject <SetTopBoxPropertiesConfig>();
                var stb    = new IRSetTopBoxBase(key, name, irCont, config);

                //stb.HasDvr = properties.Value<bool>("hasDvr");
                var listName = properties.Value <string>("presetsList");
                if (listName != null)
                {
                    stb.LoadPresets(listName);
                }
                return(stb);
            }
            else if (typeName == "tvonecorio")
            {
                var comm  = CommFactory.CreateCommForDevice(dc);
                var props = JsonConvert.DeserializeObject <TVOneCorioPropertiesConfig>(
                    properties.ToString());
                return(new TVOneCorio(key, name, comm, props));
            }


            else if (typeName == "glsoirccn")
            {
                var comm = CommFactory.GetControlPropertiesConfig(dc);

                GlsOccupancySensorBase occSensor = null;

                occSensor = new GlsOirCCn(comm.CresnetIdInt, Global.ControlSystem);

                if (occSensor != null)
                {
                    return(new GlsOccupancySensorBaseController(key, name, occSensor));
                }
                else
                {
                    Debug.Console(0, "ERROR: Unable to create Occupancy Sensor Device. Key: '{0}'", key);
                }
            }

            else if (typeName == "glsodtccn")
            {
                var comm = CommFactory.GetControlPropertiesConfig(dc);

                var occSensor = new GlsOdtCCn(comm.CresnetIdInt, Global.ControlSystem);

                if (occSensor != null)
                {
                    return(new GlsOdtOccupancySensorController(key, name, occSensor));
                }
                else
                {
                    Debug.Console(0, "ERROR: Unable to create Occupancy Sensor Device. Key: '{0}'", key);
                }
            }

            else if (groupName == "lighting")
            {
                if (typeName == "lutronqs")
                {
                    var comm = CommFactory.CreateCommForDevice(dc);

                    var props = JsonConvert.DeserializeObject <Environment.Lutron.LutronQuantumPropertiesConfig>(properties.ToString());

                    return(new Environment.Lutron.LutronQuantumArea(key, name, comm, props));
                }
                else if (typeName == "din8sw8")
                {
                    var comm = CommFactory.GetControlPropertiesConfig(dc);

                    return(new Environment.Lighting.Din8sw8Controller(key, comm.CresnetIdInt));
                }
            }

            else if (groupName == "environment")
            {
                if (typeName == "shadecontroller")
                {
                    var props = JsonConvert.DeserializeObject <Core.Shades.ShadeControllerConfigProperties>(properties.ToString());

                    return(new Core.Shades.ShadeController(key, name, props));
                }
                else if (typeName == "relaycontrolledshade")
                {
                    var props = JsonConvert.DeserializeObject <Environment.Somfy.RelayControlledShadeConfigProperties>(properties.ToString());

                    return(new Environment.Somfy.RelayControlledShade(key, name, props));
                }
            }

            return(null);
        }
Beispiel #50
0
        public override void Run()
        {
            #region Create renderers

            // Note: the renderers take care of creating their own
            // device resources and listen for DeviceManager.OnInitialize

            // Create a axis-grid renderer
            var axisGrid = ToDispose(new AxisGridRenderer());
            axisGrid.Initialize(this);

            // Create and initialize the mesh renderer
            var loadedMesh             = Common.Mesh.LoadFromFile("Character.cmo");
            List <MeshRenderer> meshes = new List <MeshRenderer>();
            meshes.AddRange((from mesh in loadedMesh
                             select ToDispose(new MeshRenderer(mesh))));
            foreach (var m in meshes)
            {
                m.Initialize(this);
                m.World = Matrix.Identity;
            }


            // Set the first animation as the current animation and start clock
            foreach (var m in meshes)
            {
                if (m.Mesh.Animations != null && m.Mesh.Animations.Any())
                {
                    m.CurrentAnimation = m.Mesh.Animations.First().Value;
                }
                m.Clock.Start();
            }

            // Create and initialize a Direct2D FPS text renderer
            var fps = ToDispose(new Common.FpsRenderer("Calibri", Color.CornflowerBlue, new Point(8, 8), 16));
            fps.Initialize(this);

            // Create and initialize a general purpose Direct2D text renderer
            // This will display some instructions and the current view and rotation offsets
            var textRenderer = ToDispose(new Common.TextRenderer("Calibri", Color.CornflowerBlue, new Point(8, 40), 12));
            textRenderer.Initialize(this);

            #endregion

            // Initialize the world matrix
            var worldMatrix = Matrix.Identity;

            // Set the camera position
            var cameraPosition = new Vector3(1, 1, 2);
            var cameraTarget   = Vector3.Zero;  // Looking at the origin 0,0,0
            var cameraUp       = Vector3.UnitY; // Y+ is Up

            // Prepare matrices
            // Create the view matrix from our camera position, look target and up direction
            var viewMatrix = Matrix.LookAtRH(cameraPosition, cameraTarget, cameraUp);
            viewMatrix.TranslationVector += new Vector3(0, -0.98f, 0);

            // Create the projection matrix
            /* FoV 60degrees = Pi/3 radians */
            // Aspect ratio (based on window size), Near clip, Far clip
            var projectionMatrix = Matrix.PerspectiveFovRH((float)Math.PI / 3f, Width / (float)Height, 0.5f, 100f);

            // Maintain the correct aspect ratio on resize
            Window.Resize += (s, e) =>
            {
                projectionMatrix = Matrix.PerspectiveFovRH((float)Math.PI / 3f, Width / (float)Height, 0.5f, 100f);
            };

            #region Rotation and window event handlers

            // Create a rotation vector to keep track of the rotation
            // around each of the axes
            var rotation = new Vector3(0.0f, 0.0f, 0.0f);

            // We will call this action to update text
            // for the text renderer
            Action updateText = () =>
            {
                textRenderer.Text =
                    String.Format("Rotation ({0}) (Up/Down Left/Right Wheel+-)\nView ({1}) (A/D, W/S, Shift+Wheel+-)"
                                  + "\nPress X to reinitialize the device and resources (device ptr: {2})"
                                  + "\nPress Z to show/hide depth buffer - Press F to toggle wireframe"
                                  + "\nPress 1,2,3,4 to switch shaders",
                                  rotation,
                                  viewMatrix.TranslationVector,
                                  DeviceManager.Direct3DDevice.NativePointer);
            };

            Dictionary <Keys, bool> keyToggles = new Dictionary <Keys, bool>();
            keyToggles[Keys.Z] = false;
            keyToggles[Keys.F] = false;

            // Support keyboard/mouse input to rotate or move camera view
            var moveFactor = 0.02f; // how much to change on each keypress
            var shiftKey   = false;
            var ctrlKey    = false;
            var background = Color.White;
            Window.KeyDown += (s, e) =>
            {
                var context = DeviceManager.Direct3DContext;

                shiftKey = e.Shift;
                ctrlKey  = e.Control;

                switch (e.KeyCode)
                {
                // WASD -> pans view
                case Keys.A:
                    viewMatrix.TranslationVector += new Vector3(moveFactor * 2, 0f, 0f);
                    break;

                case Keys.D:
                    viewMatrix.TranslationVector -= new Vector3(moveFactor * 2, 0f, 0f);
                    break;

                case Keys.S:
                    if (shiftKey)
                    {
                        viewMatrix.TranslationVector += new Vector3(0f, moveFactor * 2, 0f);
                    }
                    else
                    {
                        viewMatrix.TranslationVector -= new Vector3(0f, 0f, 1) * moveFactor * 2;
                    }
                    break;

                case Keys.W:
                    if (shiftKey)
                    {
                        viewMatrix.TranslationVector -= new Vector3(0f, moveFactor * 2, 0f);
                    }
                    else
                    {
                        viewMatrix.TranslationVector += new Vector3(0f, 0f, 1) * moveFactor * 2;
                    }
                    break;

                // Up/Down and Left/Right - rotates around X / Y respectively
                // (Mouse wheel rotates around Z)
                case Keys.Down:
                    worldMatrix *= Matrix.RotationX(moveFactor);
                    rotation    += new Vector3(moveFactor, 0f, 0f);
                    break;

                case Keys.Up:
                    worldMatrix *= Matrix.RotationX(-moveFactor);
                    rotation    -= new Vector3(moveFactor, 0f, 0f);
                    break;

                case Keys.Left:
                    worldMatrix *= Matrix.RotationY(moveFactor);
                    rotation    += new Vector3(0f, moveFactor, 0f);
                    break;

                case Keys.Right:
                    worldMatrix *= Matrix.RotationY(-moveFactor);
                    rotation    -= new Vector3(0f, moveFactor, 0f);
                    break;

                case Keys.T:
                    fps.Show          = !fps.Show;
                    textRenderer.Show = !textRenderer.Show;
                    break;

                case Keys.B:
                    if (background == Color.White)
                    {
                        background = new Color(30, 30, 34);
                    }
                    else
                    {
                        background = Color.White;
                    }
                    break;

                case Keys.G:
                    axisGrid.Show = !axisGrid.Show;
                    break;

                case Keys.P:
                    // Pause or resume mesh animation
                    meshes.ForEach(m => {
                        if (m.Clock.IsRunning)
                        {
                            m.Clock.Stop();
                        }
                        else
                        {
                            m.Clock.Start();
                        }
                    });
                    break;

                case Keys.X:
                    // To test for correct resource recreation
                    // Simulate device reset or lost.
                    System.Diagnostics.Debug.WriteLine(SharpDX.Diagnostics.ObjectTracker.ReportActiveObjects());
                    DeviceManager.Initialize(DeviceManager.Dpi);
                    System.Diagnostics.Debug.WriteLine(SharpDX.Diagnostics.ObjectTracker.ReportActiveObjects());
                    break;

                case Keys.Z:
                    keyToggles[Keys.Z] = !keyToggles[Keys.Z];
                    if (keyToggles[Keys.Z])
                    {
                        context.PixelShader.Set(depthPixelShader);
                    }
                    else
                    {
                        context.PixelShader.Set(pixelShader);
                    }
                    break;

                case Keys.F:
                    keyToggles[Keys.F] = !keyToggles[Keys.F];
                    RasterizerStateDescription rasterDesc;
                    if (context.Rasterizer.State != null)
                    {
                        rasterDesc = context.Rasterizer.State.Description;
                    }
                    else
                    {
                        rasterDesc = new RasterizerStateDescription()
                        {
                            CullMode = CullMode.Back,
                            FillMode = FillMode.Solid
                        }
                    };
                    if (keyToggles[Keys.F])
                    {
                        rasterDesc.FillMode      = FillMode.Wireframe;
                        context.Rasterizer.State = ToDispose(new RasterizerState(context.Device, rasterDesc));
                    }
                    else
                    {
                        rasterDesc.FillMode      = FillMode.Solid;
                        context.Rasterizer.State = ToDispose(new RasterizerState(context.Device, rasterDesc));
                    }
                    break;

                case Keys.D1:
                    context.PixelShader.Set(pixelShader);
                    break;

                case Keys.D2:
                    context.PixelShader.Set(lambertShader);
                    break;

                case Keys.D3:
                    context.PixelShader.Set(phongShader);
                    break;

                case Keys.D4:
                    context.PixelShader.Set(blinnPhongShader);
                    break;
                }

                updateText();
            };
            Window.KeyUp += (s, e) =>
            {
                // Clear the shift/ctrl keys so they aren't sticky
                if (e.KeyCode == Keys.ShiftKey)
                {
                    shiftKey = false;
                }
                if (e.KeyCode == Keys.ControlKey)
                {
                    ctrlKey = false;
                }
            };
            Window.MouseWheel += (s, e) =>
            {
                if (shiftKey)
                {
                    // Zoom in/out
                    viewMatrix.TranslationVector += new Vector3(0f, 0f, (e.Delta / 120f) * moveFactor * 2);
                }
                else
                {
                    // rotate around Z-axis
                    viewMatrix *= Matrix.RotationZ((e.Delta / 120f) * moveFactor);
                    rotation   += new Vector3(0f, 0f, (e.Delta / 120f) * moveFactor);
                }
                updateText();
            };

            var lastX = 0;
            var lastY = 0;

            Window.MouseDown += (s, e) =>
            {
                if (e.Button == MouseButtons.Left)
                {
                    lastX = e.X;
                    lastY = e.Y;
                }
            };

            Window.MouseMove += (s, e) =>
            {
                if (e.Button == MouseButtons.Left)
                {
                    var yRotate = lastX - e.X;
                    var xRotate = lastY - e.Y;
                    lastY = e.Y;
                    lastX = e.X;

                    // Mouse move changes
                    // Rotate view (i.e. camera)
                    //viewMatrix *= Matrix.RotationX(xRotate * moveFactor);
                    //viewMatrix *= Matrix.RotationY(yRotate * moveFactor);

                    // Rotate around origin
                    var backup = viewMatrix.TranslationVector;
                    viewMatrix.TranslationVector = Vector3.Zero;
                    viewMatrix *= Matrix.RotationX(xRotate * moveFactor);
                    viewMatrix.TranslationVector = backup;
                    worldMatrix *= Matrix.RotationY(yRotate * moveFactor);

                    updateText();
                }
            };

            // Display instructions with initial values
            updateText();

            #endregion

            var clock = new System.Diagnostics.Stopwatch();
            clock.Start();

            #region Render loop

            // Create and run the render loop
            RenderLoop.Run(Window, () =>
            {
                // Start of frame:

                // Retrieve immediate context
                var context = DeviceManager.Direct3DContext;

                // Clear depth stencil view
                context.ClearDepthStencilView(DepthStencilView, DepthStencilClearFlags.Depth | DepthStencilClearFlags.Stencil, 1.0f, 0);
                // Clear render target view
                context.ClearRenderTargetView(RenderTargetView, background);

                // Create viewProjection matrix
                var viewProjection = Matrix.Multiply(viewMatrix, projectionMatrix);

                // Extract camera position from view
                var camPosition = Matrix.Transpose(Matrix.Invert(viewMatrix)).Column4;
                cameraPosition  = new Vector3(camPosition.X, camPosition.Y, camPosition.Z);

                // If Keys.CtrlKey is down, auto rotate viewProjection based on time
                var time = clock.ElapsedMilliseconds / 1000.0f;
                if (ctrlKey)
                {
                    viewProjection = Matrix.RotationY(time * 1.8f) * Matrix.RotationX(time * 1f) * Matrix.RotationZ(time * 0.6f) * viewProjection;
                }
                var worldRotation = Matrix.RotationAxis(Vector3.UnitY, time);

                var perFrame             = new ConstantBuffers.PerFrame();
                perFrame.Light.Color     = new Color(0.8f, 0.8f, 0.8f, 1.0f);
                var lightDir             = Vector3.Transform(new Vector3(1f, -1f, -1f), worldMatrix);
                perFrame.Light.Direction = new Vector3(lightDir.X, lightDir.Y, lightDir.Z);// new Vector3(Vector3.Transform(new Vector3(1f, -1f, 1f), worldMatrix * worldRotation).ToArray().Take(3).ToArray());
                perFrame.CameraPosition  = cameraPosition;
                context.UpdateSubresource(ref perFrame, perFrameBuffer);

                // Render each object

                var perMaterial           = new ConstantBuffers.PerMaterial();
                perMaterial.Ambient       = new Color4(0.2f);
                perMaterial.Diffuse       = Color.White;
                perMaterial.Emissive      = new Color4(0);
                perMaterial.Specular      = Color.White;
                perMaterial.SpecularPower = 20f;
                perMaterial.HasTexture    = 0;
                perMaterial.UVTransform   = Matrix.Identity;
                context.UpdateSubresource(ref perMaterial, perMaterialBuffer);

                var perObject = new ConstantBuffers.PerObject();

                foreach (var m in meshes)
                {
                    // MESH
                    perObject.World = m.World * worldMatrix;
                    perObject.WorldInverseTranspose = Matrix.Transpose(Matrix.Invert(perObject.World));
                    perObject.WorldViewProjection   = perObject.World * viewProjection;
                    perObject.Transpose();
                    context.UpdateSubresource(ref perObject, perObjectBuffer);

                    // Provide the material constant buffer to the mesh renderer
                    m.PerMaterialBuffer = perMaterialBuffer;
                    m.PerArmatureBuffer = perArmatureBuffer;
                    m.Render();
                }

                // AXIS GRID
                using (var prevPixelShader = context.PixelShader.Get())
                {
                    perMaterial.HasTexture  = 0;
                    perMaterial.UVTransform = Matrix.Identity;
                    context.UpdateSubresource(ref perMaterial, perMaterialBuffer);
                    context.PixelShader.Set(pixelShader);
                    perObject.World = worldMatrix;
                    perObject.WorldInverseTranspose = Matrix.Transpose(Matrix.Invert(perObject.World));
                    perObject.WorldViewProjection   = perObject.World * viewProjection;
                    perObject.Transpose();
                    context.UpdateSubresource(ref perObject, perObjectBuffer);
                    axisGrid.Render();
                    context.PixelShader.Set(prevPixelShader);
                }

                // Render FPS
                fps.Render();

                // Render instructions + position changes
                textRenderer.Render();

                // Present the frame
                Present();
            });
            #endregion
        }
Beispiel #51
0
        private static bool DebugMenu()
        {
            if (!LogManager.Configuration.LoggingRules.Any(r => r.IsLoggingEnabledForLevel(LogLevel.Trace)))
            {
                LogManager.DisableLogging();
            }

            void WriteHeader(string header)
            {
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine(header);
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine("-------------------------------");
                Console.ForegroundColor = ConsoleColor.Gray;
            }

            void WriteFooter()
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine("-------------------------------");
                Console.ForegroundColor = ConsoleColor.White;
                Console.ResetColor();
            }

            void WriteProperty(int indent, string propertyName, object value = null)
            {
                Console.ForegroundColor = ConsoleColor.DarkGray;
                Console.Write($"» {new string('\t', indent)} ");
                Console.ForegroundColor = ConsoleColor.Gray;
                Console.Write($"{propertyName}");
                if (value != null)
                {
                    Console.ForegroundColor = ConsoleColor.Cyan;
                    Console.Write($"{value}");
                }
                Console.WriteLine();
                Console.ResetColor();
            }

            void WaitForInput()
            {
                Console.WriteLine("Press any key to continue...");
                Console.ReadKey();
            }

            void ListInfo()
            {
                WriteHeader("Info");
                WriteProperty(0, "");

                var osName      = Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName", null)?.ToString() ?? string.Empty;
                var osReleaseId = Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ReleaseId", null)?.ToString() ?? string.Empty;
                var osBuild     = Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "BuildLabEx", null)?.ToString() ?? string.Empty;
                var appVersion  = FileVersionInfo.GetVersionInfo(Assembly.GetCallingAssembly().Location)?.ProductVersion;

                WriteProperty(1, "OS: ", $"{osName} {osReleaseId} [{osBuild}]");
                WriteProperty(1, "Build: ", appVersion);

                WriteProperty(0, "");
                WriteFooter();
            }

            void ListControllers()
            {
                WriteHeader("Controllers");
                WriteProperty(0, "");

                PluginLoader.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Plugins"), typeof(IControllerDefinition));
                using (var deviceManager = new DeviceManager())
                {
                    foreach (var controller in deviceManager.Controllers)
                    {
                        WriteProperty(0, "Name: ", controller.Name);
                        WriteProperty(1, "VendorId: ", controller.VendorId);
                        WriteProperty(1, "ProductId: ", controller.ProductId);
                        WriteProperty(1, "Ports: ");

                        foreach (var port in controller.Ports)
                        {
                            var data = controller.GetPortData(port.Id);
                            WriteProperty(2, $"{port.Id}: ");
                            WriteProperty(3, "Data: ", data);
                            WriteProperty(3, "Identifier: ", port);
                        }

                        WriteProperty(1, "Available effect types: ", string.Join(", ", controller.EffectTypes));
                    }
                }

                WriteProperty(0, "");
                WriteFooter();
            }

            void ListSensors(params SensorType[] types)
            {
                WriteHeader("Sensors");
                WriteProperty(0, "");

                string FormatValue(SensorType type, float value)
                {
                    switch (type)
                    {
                    case SensorType.Voltage:     return($"{value:F2} V");

                    case SensorType.Clock:       return($"{value:F0} MHz");

                    case SensorType.Load:        return($"{value:F1} %");

                    case SensorType.Temperature: return($"{value:F1} °C");

                    case SensorType.Fan:         return($"{value:F0} RPM");

                    case SensorType.Flow:        return($"{value:F0} L/h");

                    case SensorType.Control:     return($"{value:F1} %");

                    case SensorType.Level:       return($"{value:F1} %");

                    case SensorType.Power:       return($"{value:F0} W");

                    case SensorType.Data:        return($"{value:F0} GB");

                    case SensorType.SmallData:   return($"{value:F1} MB");

                    case SensorType.Factor:      return($"{value:F3}");

                    case SensorType.Frequency:   return($"{value:F1} Hz");

                    case SensorType.Throughput:  return($"{value:F1} B/s");
                    }

                    return($"{value}");
                }

                using (var _libreHardwareMonitorFacade = new LibreHardwareMonitorFacade())
                {
                    var availableSensors = _libreHardwareMonitorFacade.Sensors.Where(s => types.Length > 0 ? types.Contains(s.SensorType) : true);
                    foreach (var(hardware, sensors) in availableSensors.GroupBy(s => s.Hardware))
                    {
                        WriteProperty(0, $"{hardware.Name}:");
                        hardware.Update();

                        foreach (var(type, group) in sensors.GroupBy(s => s.SensorType))
                        {
                            WriteProperty(1, $"{type}:");
                            foreach (var sensor in group)
                            {
                                WriteProperty(2, $"{ sensor.Name} ({ sensor.Identifier}): ", FormatValue(type, sensor.Value ?? float.NaN));
                            }
                        }

                        WriteProperty(0, "");
                    }
                }

                WriteFooter();
            }

            void ListPlugins()
            {
                WriteHeader("Plugins");
                WriteProperty(0, "");

                var pluginAssemblies = PluginLoader.SearchAll(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Plugins"));

                WriteProperty(0, "Detected plugins:");
                foreach (var assembly in pluginAssemblies)
                {
                    WriteProperty(1, Path.GetFileName(assembly.Location));
                }

                WriteProperty(0, "");
                WriteFooter();
            }

            var enabled = Service != null && Service.Status != ServiceControllerStatus.Running;
            var menu    = new MenuPage("Main Menu > Debug");

            menu.Add("Report", () => {
                Console.Clear();
                ListInfo();
                ListControllers();
                ListSensors(SensorType.Temperature);
                WaitForInput();
                return(false);
            }, () => enabled);
            menu.Add("Controllers", () => {
                Console.Clear();
                ListControllers();
                WaitForInput();
                return(false);
            }, () => enabled);
            menu.Add("Sensors", () => {
                Console.Clear();
                ListSensors();
                WaitForInput();
                return(false);
            }, () => enabled);
            menu.Add("Plugins", () => {
                Console.Clear();
                ListPlugins();
                WaitForInput();
                return(false);
            }, () => enabled);
            menu.Add("Back", () => {
                LogManager.EnableLogging();
                return(true);
            }, () => true, '0');

            while (true)
            {
                Console.Clear();
                var selected = menu.Show();
                if (selected.Callback())
                {
                    return(false);
                }
            }
        }
Beispiel #52
0
 protected override ServerQueue <StateRequest> GetQueue(string serialNumber)
 {
     return(DeviceManager.GetController(serialNumber)?.StateRequestQueue);
 }
Beispiel #53
0
        public static unsafe void Main()
        {
            try
            {
                ManagedMemory.InitializeGCMemory();

                // Initialize static fields
                StartUp.InitializeAssembly();

                KMath.Init();

                BootInfo.SetupStage1();

                // Write protect all possible pages and disallow execution on all non-code pages.
                Memory.InitialKernelProtect();

                ApiContext.Current = new ApiHost();
                Assert.Setup(AssertError);

                // Setup some pseudo devices
                DeviceManager.InitStage1();

                //Setup Output and Debug devices
                DeviceManager.InitStage2();

                // Write first output
                KernelMessage.WriteLine("<KERNEL:CONSOLE:BEGIN>");
                PerformanceCounter.Setup(BootInfo.Header->KernelBootStartCycles);
                KernelMessage.WriteLine("Starting Abanu Kernel...");

                KernelMessage.WriteLine("KConfig.UseKernelMemoryProtection: {0}", KConfig.UseKernelMemoryProtection);
                KernelMessage.WriteLine("KConfig.UsePAE: {0}", KConfig.UsePAE);
                KernelMessage.WriteLine("Apply PageTableType: {0}", (uint)BootInfo.Header->PageTableType);
                KernelMessage.WriteLine("GCInitialMemory: {0:X8}-{1:X8}", Address.GCInitialMemory, Address.GCInitialMemory + Address.GCInitialMemorySize - 1);

                CodeTests.Run();

                // Detect environment (Memory Maps, Video Mode, etc.)
                BootInfo.SetupStage2();

                KernelMemoryMapManager.Setup();
                //KernelMemoryMapManager.Allocate(0x1000 * 1000, BootInfoMemoryType.PageDirectory);

                // Read own ELF-Headers and Sections
                KernelElf.Setup();

                // Initialize the embedded code (actually only a little proof of concept code)
                NativeCalls.Setup();

                PhysicalPageManager.Setup();

                NonThreadTests.TestPhysicalPageAllocation();

                VirtualPageManager.Setup();

                // Setup final Memory Allocator
                Memory.Setup();

                // Now Memory Sub System is working. At this point it's valid
                // to allocate memory dynamically

                // If we have a Framebuffer, lets try to initialize it.
                DeviceManager.InitFrameBuffer();

                // Setup Programmable Interrupt Table
                PIC.Setup();

                // Setup Interrupt Descriptor Table
                // Important Note: IDT depends on GDT. Never setup IDT before GDT.
                IDTManager.Setup();

                InitializeUserMode();
                SysCallManager.Setup();

                KernelMessage.WriteLine("Initialize Runtime Metadata");
                StartUp.InitializeRuntimeMetadata();

                KernelMessage.WriteLine("Performing some Non-Thread Tests");
                NonThreadTests.RunTests();
            }
            catch (Exception ex)
            {
                Panic.Error(ex.Message);
            }

            if (KConfig.SingleThread)
            {
                StartupStage2();
            }
            else
            {
                ProcessManager.Setup(StartupStage2);
            }
        }
Beispiel #54
0
 private void CheckForDBUpdate(bool verbose = false)
 {
     StartCoroutine(DeviceManager.AssignMappings(true, verbose));
 }
Beispiel #55
0
        public override void Initialize(DeviceManager deviceManager)
        {
            base.Initialize(deviceManager);

            // Remove previous buffer
            if (this.constantBuffer != null)
            {
                this.constantBuffer.Dispose();
            }
            // RemoveAndDispose(ref constantBuffer);

            // Setup local variables
            var d3dDevice  = deviceManager.DeviceDirect3D;
            var d3dContext = deviceManager.ContextDirect3D;

            var path = Path.Combine(Windows.ApplicationModel.Package.Current.InstalledLocation.Path, "HelixToolkit.UWP");

            // Loads vertex shader bytecode
            var vertexShaderByteCode = global::SharpDX.IO.NativeFile.ReadAllBytes(path + "\\MiniCube_VS.fxo");

            this.vertexShader = new global::SharpDX.Direct3D11.VertexShader(d3dDevice, vertexShaderByteCode);

            // Loads pixel shader bytecode
            this.pixelShader = new global::SharpDX.Direct3D11.PixelShader(d3dDevice, global::SharpDX.IO.NativeFile.ReadAllBytes(path + "\\MiniCube_PS.fxo"));

            // Layout from VertexShader input signature
            this.layout = new global::SharpDX.Direct3D11.InputLayout(
                d3dDevice,
                vertexShaderByteCode,
                new[]
            {
                new global::SharpDX.Direct3D11.InputElement("POSITION", 0, global::SharpDX.DXGI.Format.R32G32B32A32_Float, 0, 0),
                new global::SharpDX.Direct3D11.InputElement("COLOR", 0, global::SharpDX.DXGI.Format.R32G32B32A32_Float, 16, 0)
            });

            // Instantiate Vertex buffer from vertex data
            var vertices = global::SharpDX.Direct3D11.Buffer.Create(
                d3dDevice,
                global::SharpDX.Direct3D11.BindFlags.VertexBuffer,
                new[]
            {
                new global::SharpDX.Vector4(-1.0f, -1.0f, -1.0f, 1.0f), new global::SharpDX.Vector4(1.0f, 0.0f, 0.0f, 1.0f),         // Front
                new global::SharpDX.Vector4(-1.0f, 1.0f, -1.0f, 1.0f), new global::SharpDX.Vector4(1.0f, 0.0f, 0.0f, 1.0f),
                new global::SharpDX.Vector4(1.0f, 1.0f, -1.0f, 1.0f), new global::SharpDX.Vector4(1.0f, 0.0f, 0.0f, 1.0f),
                new global::SharpDX.Vector4(-1.0f, -1.0f, -1.0f, 1.0f), new global::SharpDX.Vector4(1.0f, 0.0f, 0.0f, 1.0f),
                new global::SharpDX.Vector4(1.0f, 1.0f, -1.0f, 1.0f), new global::SharpDX.Vector4(1.0f, 0.0f, 0.0f, 1.0f),
                new global::SharpDX.Vector4(1.0f, -1.0f, -1.0f, 1.0f), new global::SharpDX.Vector4(1.0f, 0.0f, 0.0f, 1.0f),
                new global::SharpDX.Vector4(-1.0f, -1.0f, 1.0f, 1.0f), new global::SharpDX.Vector4(0.0f, 1.0f, 0.0f, 1.0f),         // BACK
                new global::SharpDX.Vector4(1.0f, 1.0f, 1.0f, 1.0f), new global::SharpDX.Vector4(0.0f, 1.0f, 0.0f, 1.0f),
                new global::SharpDX.Vector4(-1.0f, 1.0f, 1.0f, 1.0f), new global::SharpDX.Vector4(0.0f, 1.0f, 0.0f, 1.0f),
                new global::SharpDX.Vector4(-1.0f, -1.0f, 1.0f, 1.0f), new global::SharpDX.Vector4(0.0f, 1.0f, 0.0f, 1.0f),
                new global::SharpDX.Vector4(1.0f, -1.0f, 1.0f, 1.0f), new global::SharpDX.Vector4(0.0f, 1.0f, 0.0f, 1.0f),
                new global::SharpDX.Vector4(1.0f, 1.0f, 1.0f, 1.0f), new global::SharpDX.Vector4(0.0f, 1.0f, 0.0f, 1.0f),
                new global::SharpDX.Vector4(-1.0f, 1.0f, -1.0f, 1.0f), new global::SharpDX.Vector4(0.0f, 0.0f, 1.0f, 1.0f),         // Top
                new global::SharpDX.Vector4(-1.0f, 1.0f, 1.0f, 1.0f), new global::SharpDX.Vector4(0.0f, 0.0f, 1.0f, 1.0f),
                new global::SharpDX.Vector4(1.0f, 1.0f, 1.0f, 1.0f), new global::SharpDX.Vector4(0.0f, 0.0f, 1.0f, 1.0f),
                new global::SharpDX.Vector4(-1.0f, 1.0f, -1.0f, 1.0f), new global::SharpDX.Vector4(0.0f, 0.0f, 1.0f, 1.0f),
                new global::SharpDX.Vector4(1.0f, 1.0f, 1.0f, 1.0f), new global::SharpDX.Vector4(0.0f, 0.0f, 1.0f, 1.0f),
                new global::SharpDX.Vector4(1.0f, 1.0f, -1.0f, 1.0f), new global::SharpDX.Vector4(0.0f, 0.0f, 1.0f, 1.0f),
                new global::SharpDX.Vector4(-1.0f, -1.0f, -1.0f, 1.0f), new global::SharpDX.Vector4(1.0f, 1.0f, 0.0f, 1.0f),         // Bottom
                new global::SharpDX.Vector4(1.0f, -1.0f, 1.0f, 1.0f), new global::SharpDX.Vector4(1.0f, 1.0f, 0.0f, 1.0f),
                new global::SharpDX.Vector4(-1.0f, -1.0f, 1.0f, 1.0f), new global::SharpDX.Vector4(1.0f, 1.0f, 0.0f, 1.0f),
                new global::SharpDX.Vector4(-1.0f, -1.0f, -1.0f, 1.0f), new global::SharpDX.Vector4(1.0f, 1.0f, 0.0f, 1.0f),
                new global::SharpDX.Vector4(1.0f, -1.0f, -1.0f, 1.0f), new global::SharpDX.Vector4(1.0f, 1.0f, 0.0f, 1.0f),
                new global::SharpDX.Vector4(1.0f, -1.0f, 1.0f, 1.0f), new global::SharpDX.Vector4(1.0f, 1.0f, 0.0f, 1.0f),
                new global::SharpDX.Vector4(-1.0f, -1.0f, -1.0f, 1.0f), new global::SharpDX.Vector4(1.0f, 0.0f, 1.0f, 1.0f),         // Left
                new global::SharpDX.Vector4(-1.0f, -1.0f, 1.0f, 1.0f), new global::SharpDX.Vector4(1.0f, 0.0f, 1.0f, 1.0f),
                new global::SharpDX.Vector4(-1.0f, 1.0f, 1.0f, 1.0f), new global::SharpDX.Vector4(1.0f, 0.0f, 1.0f, 1.0f),
                new global::SharpDX.Vector4(-1.0f, -1.0f, -1.0f, 1.0f), new global::SharpDX.Vector4(1.0f, 0.0f, 1.0f, 1.0f),
                new global::SharpDX.Vector4(-1.0f, 1.0f, 1.0f, 1.0f), new global::SharpDX.Vector4(1.0f, 0.0f, 1.0f, 1.0f),
                new global::SharpDX.Vector4(-1.0f, 1.0f, -1.0f, 1.0f), new global::SharpDX.Vector4(1.0f, 0.0f, 1.0f, 1.0f),
                new global::SharpDX.Vector4(1.0f, -1.0f, -1.0f, 1.0f), new global::SharpDX.Vector4(0.0f, 1.0f, 1.0f, 1.0f),         // Right
                new global::SharpDX.Vector4(1.0f, 1.0f, 1.0f, 1.0f), new global::SharpDX.Vector4(0.0f, 1.0f, 1.0f, 1.0f),
                new global::SharpDX.Vector4(1.0f, -1.0f, 1.0f, 1.0f), new global::SharpDX.Vector4(0.0f, 1.0f, 1.0f, 1.0f),
                new global::SharpDX.Vector4(1.0f, -1.0f, -1.0f, 1.0f), new global::SharpDX.Vector4(0.0f, 1.0f, 1.0f, 1.0f),
                new global::SharpDX.Vector4(1.0f, 1.0f, -1.0f, 1.0f), new global::SharpDX.Vector4(0.0f, 1.0f, 1.0f, 1.0f),
                new global::SharpDX.Vector4(1.0f, 1.0f, 1.0f, 1.0f), new global::SharpDX.Vector4(0.0f, 1.0f, 1.0f, 1.0f),
            });

            this.vertexBufferBinding = new global::SharpDX.Direct3D11.VertexBufferBinding(vertices, global::SharpDX.Utilities.SizeOf <global::SharpDX.Vector4>() * 2, 0);

            // Create Constant Buffer
            this.constantBuffer = new global::SharpDX.Direct3D11.Buffer(
                d3dDevice,
                global::SharpDX.Utilities.SizeOf <global::SharpDX.Matrix>(),
                global::SharpDX.Direct3D11.ResourceUsage.Default,
                global::SharpDX.Direct3D11.BindFlags.ConstantBuffer,
                global::SharpDX.Direct3D11.CpuAccessFlags.None,
                global::SharpDX.Direct3D11.ResourceOptionFlags.None,
                0);

            this.clock = new Stopwatch();
            this.clock.Start();
        }
Beispiel #56
0
        public override void RemoveDevice(int devid)
        {
            IRunDevice dev = DeviceManager.GetDevice(devid);

            if (dev != null)
            {
                string desc    = String.Empty;
                string devname = dev.DeviceParameter.DeviceName;
                if (DeviceManager.RemoveDevice(dev.DeviceParameter.DeviceID))
                {
                    if (dev.DeviceType == DeviceType.Virtual)
                    {
                        desc = "删除虚拟设备";
                    }
                    else
                    {
                        #region
                        if (dev.CommunicateType == CommunicateType.COM)
                        {
                            IRunDevice[] comDevices = DeviceManager.GetDevices(dev.DeviceParameter.COM.Port.ToString(), CommunicateType.COM);

                            if (comDevices.Length == 0)
                            {
                                string      key        = ComUtils.PortToString(dev.DeviceParameter.COM.Port);
                                IController controller = ControllerManager.GetController(key);
                                if (controller != null)
                                {
                                    controller.IsWorking = false;
                                    if (ControllerManager.RemoveController(controller.Key))
                                    {
                                        controller.StopController();
                                        controller.Dispose();

                                        IComSession comChannel = (IComSession)((IComController)controller).ComChannel;
                                        comChannel.Close();
                                        comChannel.COMOpen  -= ComChannel_COMOpen;
                                        comChannel.COMClose -= ComChannel_COMClose;
                                        comChannel.COMError -= ComChannel_COMError;

                                        if (ChannelManager.RemoveChannel(comChannel.Key))
                                        {
                                            comChannel.Close();
                                            comChannel.Dispose();
                                        }
                                    }
                                }
                            }

                            desc = String.Format("{0},从串口'{1}'删除", dev.DeviceParameter.DeviceName, dev.DeviceParameter.COM.Port.ToString());
                        }
                        else if (dev.CommunicateType == CommunicateType.NET)
                        {
                            desc = String.Format("{0}-{1},从网络中删除成功", dev.DeviceParameter.DeviceName, dev.DeviceParameter.NET.RemoteIP);
                        }
                        #endregion
                    }

                    //--------------删除动态显示的实时数据----------------------//
                    foreach (IGraphicsShow show in this._Shows.Values)
                    {
                        show.RemoveDevice(dev.DeviceParameter.DeviceID);
                    }

                    //---------------------删除服务数据-----------------------//
                    foreach (IAppService service in this._Services.Values)
                    {
                        service.RemoveDevice(dev.DeviceParameter.DeviceID);
                    }

                    dev.DeviceParameter.Delete();
                    dev.DeviceDynamic.Delete();
                    dev.Delete();
                    dev.Dispose();

                    BindDeviceHandler(dev, dev.DeviceType, false);

                    desc += ",成功";
                    OnDeleteDeviceCompleted(dev.DeviceParameter.DeviceID, dev.DeviceParameter.DeviceName, true);
                }
                else
                {
                    desc += ",失败";
                    OnDeleteDeviceCompleted(dev.DeviceParameter.DeviceID, dev.DeviceParameter.DeviceName, false);
                }

                Logger.Info(true, desc);
            }
        }
Beispiel #57
-1
		private void RefreshSources()
		{
			_sources.Clear();

			var devices = new List<WiaSource>();
			var manager = new DeviceManager();

			var i = 0;
			foreach (DeviceInfo info in manager.DeviceInfos)
			{
				if (info.Type == WiaDeviceType.ScannerDeviceType)
				{
					try
					{
						var name = FindProperty(info.Properties, WiaProperty.Name);
						devices.Add(new WiaSource(i, (string)name.get_Value(), info.DeviceID));
						i++;
					}
					catch (Exception e)
					{
						_log.WarnFormat("Ошибка при добавлении источника: {0}", e);
					}			
				}
		
			}
			_sources = devices;
		}
 public MaterialResource(DeviceManager deviceManager, ITextureResourceManager textureManager, ITextureSamplerManager samplerManager, string id)
     : base(id)
 {
     _deviceManager = deviceManager;
     _textureManager = textureManager;
     _samplerManager = samplerManager;
 }
        public void TestManualThreadLockTest()
        {
            FakeExternalDevice device = new FakeExternalDevice();
            device.Open();

            DeviceManager manager = new DeviceManager(new[] { device });

            ThreadStart start1 = device.TriggerDataReceived;
            ThreadStart start2 = manager.EnableCooling;

            Thread thread1 = new Thread(start1);
            thread1.Name = "Thread 1";

            Thread thread2 = new Thread(start2);
            thread2.Name = "Thread 2";

            // Start both the threads.
            // Expect thread blocking as external device locks internally then calls manager which locks internally
            // call to manager locks internally then calles external device which tries to lock internally.
            thread2.Start();
            thread1.Start();

            if (!thread1.Join(5000))
            {
                Debug.WriteLine("t1 join");
                Assert.Fail("Thread 1 timeout");
            }

            if (!thread2.Join(5000))
            {
                Debug.WriteLine("t2 join");
                Assert.Fail("Thread 2 timeout");
            }
        }
Beispiel #60
-1
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            //code for YT Mobile redirections
            string redirctMobileUrl = string.Empty;

            DeviceManager deviceManager = new DeviceManager
            {
                UserAgent = Request.UserAgent,
                IsMobileBrowser = Request.Browser.IsMobileDevice
            };

            // Added by Varun Goel on 25 Jan 2013 for NoRedirection functionality
            TributesPortal.Utilities.StateManager stateManager = StateManager.Instance;

            objSessionValue = (SessionValue)stateManager.Get("objSessionvalue", StateManager.State.Session);
            if (objSessionValue == null || objSessionValue.NoRedirection == null || objSessionValue.NoRedirection == false)
            {
                if (deviceManager.IsMobileDevice())
                {
                    // Redirection URL
                    redirctMobileUrl = string.Format("{0}{1}{2}", "https://www.", WebConfig.TopLevelDomain, "/mobile/Tour.html");
                    Response.Redirect(redirctMobileUrl, false);
                }
            }

        }
        if (ConfigurationManager.AppSettings["ApplicationType"].ToString().ToLower() == "yourmoments")
        {
            yourtribute.Visible = false;
            yourmoments.Visible = true;
            tourTitle.InnerHtml=@"Tour - See how to create a Website for your significant event";
        }
        else if (ConfigurationManager.AppSettings["ApplicationType"].ToString().ToLower() == "yourtribute")
        {
            yourtribute.Visible = true;
            yourmoments.Visible = false;
        }
    }