Ejemplo n.º 1
0
        public bool Excute(CookingMachinePluginsProvider provider)
        {
            _provider = provider;
            SetTemperatureValue(90);
            SetTimeDelay(Delay);
            for (var i = 0; i < _foodValues.Count; i++)
            {
                _foodValues[i] = 0;
                ArduinoHelper.ShowLed2(0, i);
            }
            var speedCallback = new TLAutoDevicePushCallback();
            var foodCallback  = new TLAutoDevicePushCallback();
            var result1       = RegButtonCheckNotification(_wcfService1, _speedButtonItem, speedCallback);
            var result2       = RegButtonCheckNotification(_wcfService2, _foodButtonItems[0], foodCallback);

            _gameTimer.Start();
            _manualResetEvent.Reset();
            if (result1 && result2)
            {
                _manualResetEvent.WaitOne(Delay * 1000);
                _gameTimer.Stop();
            }
            UnregButtonCheckNotification(_wcfService1, _speedButtonItem.DeviceNumber, speedCallback);
            UnregButtonCheckNotification(_wcfService2, _foodButtonItems[0].DeviceNumber, foodCallback);
            return(_isCompleted);
        }
Ejemplo n.º 2
0
 public bool Reg()
 {
     try
     {
         _callback         = new TLAutoDevicePushCallback();
         _callback.Notify += Callback_Notify;
         _wcfClientService = new NetTcpDuplexWcfClientService <ITLAutoDevicePushService>(_callback, _serviceAddress, TimeSpan.FromMilliseconds(_sendTimeout));
         var result = _wcfClientService.Send(proxy =>
         {
             proxy.RegistControlDeviceEx(_regKey,
                                         new ControlInfo
             {
                 ServiceKey = CommonConfigHelper.PLCServiceKey,
                 Data       = new PLCControlServiceData
                 {
                     ControlPLCType = ControlPLCType.QueryDiaitalSwitchWithAutoUpload,
                     DeviceNumber   = _deviceNumber,
                     PortSignName   = _signName
                 }.ToBytes()
             });
         });
         IsReg = result;
         return(result);
     }
     catch (Exception ex)
     {
         IsReg = false;
         return(false);
     }
 }
Ejemplo n.º 3
0
 private bool RegButtonCheckNotification()
 {
     try
     {
         if (_callback != null)
         {
             _callback.Notify -= Callback_Notify;
         }
         _callback         = new TLAutoDevicePushCallback();
         _callback.Notify += Callback_Notify;
         var buttonItem = ButtonItems[0];
         _wcfService = new NetTcpDuplexWcfClientService <ITLAutoDevicePushService>(_callback, buttonItem.ServiceAddress);
         var result = _wcfService.Send(proxy =>
         {
             proxy.RegistControlDeviceEx(SignKey,
                                         new ControlInfo
             {
                 ServiceKey = CommonConfigHelper.PLCServiceKey,
                 Data       = new PLCControlServiceData
                 {
                     ControlPLCType = ControlPLCType.QueryDiaitalSwitchWithAutoUpload,
                     DeviceNumber   = buttonItem.DeviceNumber,
                     PortSignName   = buttonItem.SignName
                 }.ToBytes()
             });
         });
         return(result);
     }
     catch (Exception ex)
     {
         return(false);
     }
 }
Ejemplo n.º 4
0
 private async void GameLogic()
 {
     for (var i = 0; i < RelayItems.Count; i++)
     {
         if (i > 0)
         {
             await RelayItems[i].Control(true);
         }
     }
     while (true)
     {
         try
         {
             var callback = new TLAutoDevicePushCallback();
             callback.Notify += Callback_Notify;
             RegButtonCheckNotification(ButtonItems, callback);
             _manualResetEvent.Reset();
             if (_manualResetEvent.WaitOne(60000))
             {
                 break;
             }
             UnregButtonCheckNotification(ButtonItems[0].DeviceNumber, ButtonItems[1].ServiceAddress, callback);
         }
         catch (Exception ex)
         {
             OnNotification(new NotificationEventArgs(ex.Message));
         }
         await Task.Delay(1000);
     }
     GameCompleted();
 }
Ejemplo n.º 5
0
        public static async Task HitActionForBuffer7(List <HitData> hitDatas, HitMouseMachinePluginsProvider provider, int chargeSpeed = 1)
        {
            var callback = new TLAutoDevicePushCallback();

            RegButtonCheckNotification(provider._pointLightButtonItems, callback);
            callback.Notify += async(sen, eve) =>
            {
                if (eve.IsError)
                {
                    return;
                }
                var switchItem = eve.Data.ToObject <SwitchItem>();
                using (var releaser = await LockAsync.LockAsync())
                {
                    if (_currentHitData != null)
                    {
                        await _currentHitData.Func(switchItem.SwitchNumber);
                    }
                }
            };
            for (var i = 0; i < hitDatas.Count; i++)
            {
                if (i % 2 == 0)
                {
                    var chargeSpeedIndex = 0;
ReHit:
                    using (var releaser = await LockAsync.LockAsync())
                    {
                        _currentHitData = hitDatas[i];
                    }
                    var hitResult = await hitDatas[i].CheckHit(provider._pointLightButtonItems, provider._pointLightRelayItems, provider);
                    if (hitResult)
                    {
                        chargeSpeedIndex++;
                        if (chargeSpeedIndex == chargeSpeed)
                        {
                            await provider._chargeLightRelayItems[i].Control();
                            await provider._chargeLightRelayItems[i + 1].Control();
                        }
                        else
                        {
                            goto ReHit;
                        }
                    }
                    else
                    {
                        //await provider.PlayTextMusicFromFirstItem("踩踏失败,重新来。");
                        goto ReHit;
                    }
                }
            }
            var buttonItem = provider._pointLightButtonItems[0];

            UnregButtonCheckNotification(buttonItem.DeviceNumber, buttonItem.ServiceAddress, callback);
            using (var releaser = await LockAsync.LockAsync())
            {
                _currentHitData = null;
            }
        }
Ejemplo n.º 6
0
 private bool RegButtonCheckNotification(int deviceNumber, string signName)
 {
     try
     {
         var callback = new TLAutoDevicePushCallback();
         callback.Notify += (sen, eve) =>
         {
             if (!eve.IsError)
             {
                 var switchItem = eve.Data.ToObject <SwitchItem>();
                 var main       = (Main)View;
                 main.Dispatcher.BeginInvoke(new Action(() =>
                 {
                     main.TxtInfo.Text += $"{DateTime.Now} 开关号:{switchItem.SwitchNumber} 设备号:{deviceNumber} \r\n";
                     main.TxtInfo.ScrollToEnd();
                 }));
             }
         };
         _wcfService = new NetTcpDuplexWcfClientService <ITLAutoDevicePushService>(callback, _plcServiceAddress, TimeSpan.FromMinutes(99));
         var result = _wcfService.Send(proxy =>
         {
             proxy.RegistControlDeviceEx(SignKey,
                                         new ControlInfo
             {
                 ServiceKey = CommonConfigHelper.PLCServiceKey,
                 Data       = new PLCControlServiceData
                 {
                     ControlPLCType = ControlPLCType.QueryDiaitalSwitchWithAutoUpload,
                     DeviceNumber   = deviceNumber,
                     PortSignName   = signName
                 }.ToBytes()
             });
         });
         return(result);
     }
     catch (Exception ex)
     {
         return(false);
     }
 }
Ejemplo n.º 7
0
 private void UnregButtonCheckNotification(NetTcpDuplexWcfClientService <ITLAutoDevicePushService> wcfService, int deviceNumber, TLAutoDevicePushCallback callback)
 {
     try
     {
         wcfService.Close();
         var service = new NetTcpDuplexWcfClientService <ITLAutoDevicePushService>(callback, _speedButtonItem.ServiceAddress);
         service.Send(proxy => { proxy.UnRegistControlDeviceEx(CookingMachinePluginsProvider.SignKey + deviceNumber, CommonConfigHelper.PLCServiceKey); });
         service.Close();
     }
     catch (Exception ex) { }
 }
Ejemplo n.º 8
0
 private bool RegButtonCheckNotification(NetTcpDuplexWcfClientService <ITLAutoDevicePushService> wcfService, MachineButtonItem buttonItem, TLAutoDevicePushCallback callback)
 {
     callback.Notify += (s, e) => { Callback_Notify(s, e, buttonItem.DeviceNumber); };
     try
     {
         wcfService = new NetTcpDuplexWcfClientService <ITLAutoDevicePushService>(callback, buttonItem.ServiceAddress);
         var result = wcfService.Send(proxy =>
         {
             proxy.RegistControlDeviceEx(CookingMachinePluginsProvider.SignKey + buttonItem.DeviceNumber,
                                         new ControlInfo
             {
                 ServiceKey = CommonConfigHelper.PLCServiceKey,
                 Data       = new PLCControlServiceData
                 {
                     ControlPLCType = ControlPLCType.QueryDiaitalSwitchWithAutoUpload,
                     DeviceNumber   = buttonItem.DeviceNumber,
                     PortSignName   = buttonItem.SignName
                 }.ToBytes()
             });
         });
         return(result);
     }
     catch (Exception ex)
     {
         return(false);
     }
 }
Ejemplo n.º 9
0
 private void UnregButtonCheckNotification(int deviceNumber, string serviceAddress, TLAutoDevicePushCallback callback)
 {
     try
     {
         _wcfService.Close();
         var service = new NetTcpDuplexWcfClientService <ITLAutoDevicePushService>(callback, serviceAddress);
         service.Send(proxy => { proxy.UnRegistControlDeviceEx(SignKey + deviceNumber, CommonConfigHelper.PLCServiceKey); });
         service.Close();
     }
     catch (Exception ex) { }
 }
Ejemplo n.º 10
0
        private bool RegButtonCheckNotification(List <MachineButtonItem> checkButtonItems, TLAutoDevicePushCallback callback)
        {
            _wcfService = new NetTcpDuplexWcfClientService <ITLAutoDevicePushService>(callback, checkButtonItems[0].ServiceAddress);
            var result = _wcfService.Send(proxy =>
            {
                proxy.RegistControlDeviceEx(SignKey + checkButtonItems[0].DeviceNumber,
                                            new ControlInfo
                {
                    ServiceKey = CommonConfigHelper.PLCServiceKey,
                    Data       = new PLCControlServiceData
                    {
                        ControlPLCType = ControlPLCType.QueryDiaitalSwitchWithAutoUpload,
                        DeviceNumber   = checkButtonItems[0].DeviceNumber,
                        PortSignName   = checkButtonItems[0].SignName
                    }.ToBytes()
                });
            });

            return(result);
        }