Ejemplo n.º 1
0
        public async Task <WcfResultInfo> ControlDevice(ProjectorControlServiceData serviceData)
        {
            var task = await DispatcherHelper.UIDispatcher.InvokeAsync(async() =>
            {
                var mainViewModel  = (MainViewModel)DataContext;
                var serialPortInfo = mainViewModel.ProjectorSerialPortInfos.FirstOrDefault(s => s.PortSignName == serviceData.PortSignName);
                if ((serialPortInfo != null) && !serialPortInfo.IsOpenSerialPort)
                {
                    return(new WcfResultInfo {
                        ErrorMsg = SendWcfCommandHelper.ErrorInfoForNotOpenSerialPort
                    });
                }
                var projector = serialPortInfo?.ProjectorInfos.FirstOrDefault(s => s.DeviceNumber == serviceData.DeviceNumber);
                if (projector != null)
                {
                    bool result;
                    if (serviceData.PowerOnOrOff)
                    {
                        result = await projector.PowerOn();
                    }
                    else
                    {
                        result = await projector.PowerOff();
                    }
                    return(new WcfResultInfo {
                        Data = new[] { result.ToByte() }
                    });
                }
                return(new WcfResultInfo {
                    ErrorMsg = SendWcfCommandHelper.ErrorInfoForNoDevices
                });
            });

            return(task.Result);
        }
Ejemplo n.º 2
0
        public static async Task <WcfResultInfo> Send(ProjectorControlServiceData serviceData)
        {
            var sendWcfCommand = new SendWcfCommandEx(ProjectorDeviceService.GetProjectorDeviceService().WcfServiceAddress);

            sendWcfCommand.Error += SendWcfCommand_Error;
            sendWcfCommand.CommunicationError += SendWcfCommand_CommunicationError;
            sendWcfCommand.TimeoutError       += SendWcfCommand_TimeoutError;
            var result = await sendWcfCommand.SendEx(ProjectorDeviceService.Key, serviceData.ToBytes());

            sendWcfCommand.Error -= SendWcfCommand_Error;
            sendWcfCommand.CommunicationError -= SendWcfCommand_CommunicationError;
            sendWcfCommand.TimeoutError       -= SendWcfCommand_TimeoutError;
            return(result);
        }