Beispiel #1
0
        private void buttonClickHandler(object sender, EventArgs e)
        {
            if (colorimeter != null)
            {
                var request = new ColorimeterRequest();

                switch (((Button)sender).Name)
                {
                case "SaveUserTestsFileButton":
                    request.ColorimeterRequestActionType = ColorimeterActionType.GetUserTestsFile;
                    break;

                case "SaveTestResultsButton":
                    request.ColorimeterRequestActionType = ColorimeterActionType.GetTestResults;
                    break;

                case "UpdateUserTestsFileButton":
                    request.ColorimeterRequestActionType = ColorimeterActionType.UpdateUserTestsFile;
                    break;

                case "UpdateTaylorTestsFileButton":
                    request.ColorimeterRequestActionType = ColorimeterActionType.UpdateTaylorTestsFile;
                    break;

                case "UpdateFirmwareButton":
                    request.ColorimeterRequestActionType = ColorimeterActionType.UpdateFirmware;
                    break;

                default:
                    break;
                }

                if (!colorimeterConnectedBackgroundWorker.IsBusy)
                {
                    colorimeterConnectedBackgroundWorker.RunWorkerAsync(request);
                }
            }
        }
Beispiel #2
0
        protected override void WndProc(ref Message m)
        {
            base.WndProc(ref m);

            if (m.Msg == WM_DEVICECHANGE)
            {
                if ((m.WParam.ToInt32() == DBT_DEVICEARRIVAL))
                {
                    //// Look for a colorimeter if one isn't already attached
                    if (colorimeter == null)
                    {
                        Guid colorimeterGuid = Guid.Empty;
                        Hid.HidD_GetHidGuid(ref colorimeterGuid);

                        String[] devicePathNames = MyDeviceManagement.FindDevicePathsFromGuid(colorimeterGuid, NUMBER_OF_DEVICE_PATHNAMES);

                        var devicePath = Hid.FindDevicePath(Colorimeter.COLORIMETER_PRODUCT_ID, Colorimeter.COLORIMETER_VENDOR_ID, devicePathNames);
                        var readHandle = FileIO.CreateFile(devicePath, FileIO.GENERIC_READ, FileIO.FILE_SHARE_READ | FileIO.FILE_SHARE_WRITE, IntPtr.Zero, FileIO.OPEN_EXISTING, FileIO.FILE_FLAG_OVERLAPPED, 0);

                        //we have found a viable colorimeter with a working path and handle
                        if (!devicePath.Equals(null) && !readHandle.IsInvalid)
                        {
                            //colorimeterDetected = true;
                            colorimeter = new Colorimeter(readHandle, devicePath);

                            // Start checkColorimeterDeviceStateBackgroundWorker
                            // When the Background Worker completes, a different backgroundworker
                            // is called to get the firmware and test file versions
                            var request = new ColorimeterRequest()
                            {
                                ColorimeterRequestActionType = ColorimeterActionType.FirmwareVersion | ColorimeterActionType.TestFileVersion | ColorimeterActionType.DeviceState
                            };
                            if (!colorimeterConnectedBackgroundWorker.IsBusy)
                            {
                                colorimeterConnectedBackgroundWorker.RunWorkerAsync(request);
                            }
                        }
                    }

                    ////  Find out if it's the device we're communicating with.
                    if (MyDeviceManagement.DeviceNameMatch(m, colorimeter.colorimeterPathName))
                    {
                        listBox1.Items.Add("Colorimeter attached.");
                    }
                }

                //  If WParam contains DBT_DEVICEREMOVAL, a device has been removed.  We only care if the removed device is a colorimeter we are already talking to
                else if ((m.WParam.ToInt32() == DBT_DEVICEREMOVECOMPLETE) && colorimeter != null)
                {
                    if (MyDeviceManagement.DeviceNameMatch(m, colorimeter.colorimeterPathName))
                    {
                        listBox1.Items.Add("Colorimeter removed.");

                        //colorimeterDetected = false;
                        colorimeter = null;
                    }
                }

                listBox1.SelectedIndex = listBox1.Items.Count - 1;
            }
        }