コード例 #1
0
        public async Task StartStreamAsync(MainViewModel viewModel, string cameraName)
        {
            try
            {
                if (string.IsNullOrEmpty(cameraName) == true || viewModel == null)
                {
                    return;
                }

                this.ViewModel = viewModel;

                if (this.CaptureManager == null ||
                    this.CaptureManager.CameraStreamState == CameraStreamState.Shutdown ||
                    this.CaptureManager.CameraStreamState == CameraStreamState.NotStreaming)
                {
                    if (this.CaptureManager != null)
                    {
                        this.CaptureManager.Dispose();
                    }

                    this.CaptureManager = new MediaCapture();

                    MediaCaptureInitializationSettings settings = new MediaCaptureInitializationSettings();
                    var allCameras = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture);

                    var selectedCamera = allCameras.FirstOrDefault(c => DeviceUtility.GetCameraName(c, allCameras) == cameraName) ?? allCameras.FirstOrDefault();

                    if (selectedCamera != null)
                    {
                        settings.VideoDeviceId = selectedCamera.Id;
                    }

                    await this.CaptureManager.InitializeAsync(settings);

                    this.webCamCaptureElement.Source = this.CaptureManager;
                }

                if (this.CaptureManager.CameraStreamState == CameraStreamState.NotStreaming)
                {
                    if (this.FrameProcessingTimer != null)
                    {
                        this.FrameProcessingTimer.Cancel();
                        this.FrameProcessingSemaphore.Release();
                    }

                    TimeSpan timerInterval = TimeSpan.FromMilliseconds(66); //15fps
                    this.FrameProcessingTimer = ThreadPoolTimer.CreatePeriodicTimer(new TimerElapsedHandler(ProcessCurrentVideoFrame), timerInterval);

                    this.VideoProperties = this.CaptureManager.VideoDeviceController.GetMediaStreamProperties(MediaStreamType.VideoPreview) as VideoEncodingProperties;

                    await this.CaptureManager.StartPreviewAsync();

                    this.webCamCaptureElement.Visibility = Visibility.Visible;
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Exception with StartStreamAsync: " + ex);
            }
        }
コード例 #2
0
ファイル: MainWindow.xaml.cs プロジェクト: iodes/GoodSleep
 private void ShowProperty(PowerDevice device)
 {
     if (device != null)
     {
         DeviceUtility.ShowProperty(device);
     }
 }
コード例 #3
0
ファイル: MainWindow.xaml.cs プロジェクト: iodes/GoodSleep
        private async Task UpdateViewAsync()
        {
            gridLoading.Visibility = Visibility.Visible;
            var devices = await DeviceUtility.GetPowerDevicesAsync();

            listDevices.ItemsSource = devices;
            textCount.Text          = $"비활성화 가능한 장치 : {devices.Where(x => x.IsWakeEnabled).Count()} / {devices.Count}";
            gridLoading.Visibility  = Visibility.Collapsed;
        }
コード例 #4
0
ファイル: MainWindow.xaml.cs プロジェクト: iodes/GoodSleep
 private async void ContextDisable_Click(object sender, RoutedEventArgs e)
 {
     if (listDevices.SelectedItem != null)
     {
         if (await DeviceUtility.SetDeviceStateAsync((listDevices.SelectedItem as PowerDevice), false))
         {
             await UpdateViewAsync();
         }
         else
         {
             MessageBox.Show("해당 장치는 비활성화 할 수 없습니다.", "오류", MessageBoxButton.OK, MessageBoxImage.Error);
         }
     }
 }
コード例 #5
0
ファイル: Device.cs プロジェクト: KevinKao809/CDS10
        public async Task <Detail> GetIoTDeviceByDeviceId(string deviceId)
        {
            DeviceUtility      deviceHelper = new DeviceUtility();
            SFDatabaseEntities dbEnty       = new SFDatabaseEntities();
            var device = dbEnty.IoTDevice.Find(deviceId);

            if (device == null)
            {
                throw new Exception("404");
            }

            Detail returnDeviceInfo = new Detail()
            {
                DeviceId                 = device.IoTHubDeviceID,
                IoTHubProtocol           = device.IoTHubProtocol,
                IoTHubAuthenticationType = device.AuthenticationType
            };

            //Confirm connectionstring
            if (await deviceHelper.CheckIoTHubConnectionString(device.IoTHub.P_IoTHubConnectionString, device.IoTHubDeviceID))
            {
                returnDeviceInfo.IoTHubName    = device.IoTHub.P_IoTHubConnectionString.Split(';')[0].Split('=')[1];
                returnDeviceInfo.ContainerName = device.IoTHub.P_UploadContainer;
            }
            else if (await deviceHelper.CheckIoTHubConnectionString(device.IoTHub.S_IoTHubConnectionString, device.IoTHubDeviceID))
            {
                returnDeviceInfo.IoTHubName    = device.IoTHub.S_IoTHubConnectionString.Split(';')[0].Split('=')[1];
                returnDeviceInfo.ContainerName = device.IoTHub.S_UploadContainer;
            }
            else
            {
                throw new Exception("None vaild IoT Hub");
            }

            if (returnDeviceInfo.IoTHubAuthenticationType == "Key")
            {
                returnDeviceInfo.DeviceKey = device.IoTHubDeviceKey;
            }
            else if (returnDeviceInfo.IoTHubAuthenticationType == "Certificate")
            {
                returnDeviceInfo.CertificateFileName = device.DeviceCertificate.FileName;
                returnDeviceInfo.CertificatePassword = device.DeviceCertificate.PFXPassword;
            }

            return(returnDeviceInfo);
        }
コード例 #6
0
                public static DeviceUtility FromBaseObject(BaseObject baseObj)
                {
                    if (baseObj == null || baseObj.NativeObject == IntPtr.Zero)
                    {
                        return(null);
                    }
                    DeviceUtility obj = baseObj as  DeviceUtility;

                    if (object.Equals(obj, null))
                    {
                        obj = new DeviceUtility(CreatedWhenConstruct.CWC_NotToCreate);
                        obj.BindNativeObject(baseObj.NativeObject, "CDeviceUtility");
                        obj.IncreaseCast();
                    }

                    return(obj);
                }
コード例 #7
0
        public MainViewModel()
            : base()
        {
            // Initialize models
            this.Models = new List <WinMLModel>()
            {
                new PcbModel(),
            };

            // Initialize cameras
            this.CameraNames = Task.Run(async() => await DeviceUtility.GetAvailableCameraNamesAsync()).Result.ToList();

            // Initialize results
            this.Results = new ObservableCollection <ResultViewModel>();

            // Set the first model as current model
            this.CurrentModel = this.Models.FirstOrDefault();
        }
コード例 #8
0
        public async Task <HttpResponseMessage> UploadPhotoFile(string id)
        {
            try
            {
                DeviceUtility deviceHelper = new DeviceUtility();

                // Check if the request contains multipart/form-data.
                if (!Request.Content.IsMimeMultipartContent())
                {
                    return(Request.CreateResponse(HttpStatusCode.UnsupportedMediaType));
                }

                DeviceModels        deviceModel = new DeviceModels();
                DeviceModels.Detail iotDevice   = await deviceModel.GetIoTDeviceByDeviceId(id);

                FileUtility fileHelper = new FileUtility();
                string      root       = Path.GetTempPath();
                var         provider   = new MultipartFormDataStreamProvider(root);

                // Read the form data.
                string fileAbsoluteUri = "";
                await Request.Content.ReadAsMultipartAsync(provider);

                long logStartTimestamp = 0;

                //FormData
                foreach (var key in provider.FormData.AllKeys)
                {
                    foreach (var val in provider.FormData.GetValues(key))
                    {
                        if (key.ToLower().ToString() == "startts")
                        {
                            logStartTimestamp = long.Parse(val);
                        }
                    }
                }

                //FileData
                foreach (MultipartFileData fileData in provider.FileData)
                {
                    string formColumnName   = fileHelper.LowerAndFilterString(fileData.Headers.ContentDisposition.Name);
                    string fileExtenionName = fileHelper.LowerAndFilterString(fileData.Headers.ContentDisposition.FileName.Split('.')[1]);
                    if (formColumnName.ToLower().Equals("filename"))
                    {
                        DBHelper._IoTDevice dbhelp      = new DBHelper._IoTDevice();
                        IoTDevice           dbIoTDevice = dbhelp.GetByid(id);
                        DateTime            logStartDT  = deviceHelper.GetSpecifyTimeZoneDateTimeByTimeStamp(logStartTimestamp, dbIoTDevice.Factory.TimeZone);

                        string uploadFilePath = logStartDT.ToString("yyyy/MM/dd") + "/" + dbIoTDevice.IoTHubDeviceID + "/" + logStartTimestamp + "." + fileExtenionName;
                        fileAbsoluteUri = fileHelper.SaveFiletoStorage(fileData.LocalFileName, uploadFilePath, "log-device");
                    }
                }

                if (fileAbsoluteUri.Equals(""))
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "File is empty"));
                }

                return(Request.CreateResponse(HttpStatusCode.OK));
            }
            catch (System.Exception ex)
            {
                string logAPI = "[Post] " + Request.RequestUri.ToString();

                switch (ex.Message)
                {
                case "404":
                    return(Request.CreateResponse(HttpStatusCode.NotFound));
                }

                StringBuilder logMessage = LogUtility.BuildExceptionMessage(ex);
                Startup._sfAppLogger.Error(logAPI + logMessage);

                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex));
            }
        }
コード例 #9
0
                public BaseObject Create()
                {
                    DeviceUtility emptyInstance = new DeviceUtility(CreatedWhenConstruct.CWC_NotToCreate);

                    return(emptyInstance);
                }