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); } }
private void ShowProperty(PowerDevice device) { if (device != null) { DeviceUtility.ShowProperty(device); } }
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; }
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); } } }
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); }
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); }
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(); }
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)); } }
public BaseObject Create() { DeviceUtility emptyInstance = new DeviceUtility(CreatedWhenConstruct.CWC_NotToCreate); return(emptyInstance); }