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); }
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); } }
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); } }
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(); }
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; } }
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); } }
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) { } }
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); } }
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) { } }
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); }