示例#1
0
 private void SelectNextProperty()
 {
     if (++currentIndex == mainLayout.Controls.Count)
     {
         currentIndex = 0;
     }
     if (currentProperty != null)
     {
         currentProperty.SelectItem(false);
     }
     currentProperty = (PropertyControl)mainLayout.Controls[currentIndex];
     currentProperty.SelectItem(true);
 }
示例#2
0
 private void InitHID()
 {
     if (INI.KeyExists("HID", webcam.DevicePath))
     {
         string hidPath = INI.ReadINI(webcam.DevicePath, "HID");
         if (hid != null)
         {
             hid.CloseDevice();
         }
         hid = HidDevices.GetDevice(hidPath);
         if (hid != null)
         {
             hid.OpenDevice();
             mulTimer = new System.Timers.Timer
             {
                 Interval  = 600,
                 AutoReset = true,
                 Enabled   = true,
             };
             mulTimer.Elapsed += HIDTimedEvent;
             if (currentProperty == null)
             {
                 SelectNextProperty();
             }
             else
             {
                 currentProperty.SelectItem(true);
             }
             hid.ReadReport(OnReport);
             Globals._USBControl.HIDDisconnected += HIDDisconnectEvent;
         }
         else
         {
             Globals._USBControl.HIDConnected -= HIDConnectEvent;
         }
     }
 }
示例#3
0
        private void OnReport(HidReport report)
        {
            if (report.ReportId != 4)
            {
                return;
            }
            switch (report.Data[0])
            {
            case 1:
                currentProperty.AutoMode(false);
                bool dir = report.Data[1] != 0;
                Debug.WriteLine(dir);
                if (oldDir != dir)
                {
                    oldDir = dir;
                    mul    = 1;
                }
                else
                {
                    mul++;
                }
                currentProperty.UpdateValue(mul, dir ? 1 : -1);
                break;

            case 2:
                currentProperty.AutoMode(true);
                Debug.WriteLine("Button auto");
                break;

            case 3:
                Debug.WriteLine("Button 1");
                if (PropertyHIDButton1Index < 0)
                {
                    break;
                }
                currentProperty.SelectItem(false);
                currentIndex    = PropertyHIDButton1Index;
                currentProperty = (PropertyControl)mainLayout.Controls[currentIndex];
                currentProperty.SelectItem(true);
                break;

            case 4:
                Debug.WriteLine("Button 2");
                if (PropertyHIDButton2Index < 0)
                {
                    break;
                }
                currentProperty.SelectItem(false);
                currentIndex    = PropertyHIDButton2Index;
                currentProperty = (PropertyControl)mainLayout.Controls[currentIndex];
                currentProperty.SelectItem(true);
                break;

            case 5:
                Debug.WriteLine("Button next");
                if (report.Data[1] == 0)
                {
                    break;
                }
                SelectNextProperty();
                break;
            }
            // we need to start listening again for more data
            hid.ReadReport(OnReport);
        }