internal void Init(bool enableDebug) { isDebug = enableDebug; contextSwitch = new ContextSwitchService(jsContext, syncHandle); ServiceNode.PushService <IContextSwitchService>(contextSwitch); ServiceNode.PushService <IGCSyncService>(new GCSyncService()); Enter(); promiseContinuationCallback = delegate(JavaScriptValue task, IntPtr callbackState) { promiseTaskQueue.Add(task); }; if (Native.JsSetPromiseContinuationCallback(promiseContinuationCallback, IntPtr.Zero) != JavaScriptErrorCode.NoError) { throw new InvalidOperationException("failed to setup callback for ES6 Promise"); } StartPromiseTaskLoop(shutdownCTS.Token); JSGlobalObject = JavaScriptValue.GlobalObject; GlobalObject = new JSValue(ServiceNode, JSGlobalObject); Leave(); contextService = new ContextService(shutdownCTS); ServiceNode.PushService <IContextService>(contextService); timerService = GlobalObject.InitTimer(); }
//Arun Geo Thomas private void btnStartOperation_Click(object sender, EventArgs e) { if (File.Exists(logFileName)) { File.Delete(logFileName); } try { serialPortManager = new SerialPortManager(cbCOMPortsSelector.SelectedItem.ToString()); if (serialPortManager.Connect()) { lblSerialportMessages.Text = "Connected"; readSerialPortData = true; serialPortReadThread = new Thread(new ThreadStart(BackendThreadExecute)); serialPortReadThread.Start(); cbCOMPortsSelector.Enabled = false; btnStartOperation.Enabled = false; JSTimer.Start(); } else { lblSerialportMessages.Text = "Already Connected"; } } catch (Exception ex) { lblSerialportMessages.Text = "Error Cant Connect: " + ex.Message; } }
public static JSTimer InitTimer(this JSValue globalObject) { JSTimer result = new JSTimer(globalObject.ServiceNode); globalObject.WriteProperty <JSTimer>("timer", result); return(result); }
//Arun Geo Thomas private void btnStopOpertion_Click(object sender, EventArgs e) { if (serialPortManager != null) { Object thisLock = new Object(); lock (thisLock) { readSerialPortData = false; } if (serialPortManager.CloseConnection()) { JSTimer.Stop(); lblSerialportMessages.Text = "Disconnected"; cbCOMPortsSelector.Enabled = true; btnStartOperation.Enabled = true; serialPortManager = null; } else { lblSerialportMessages.Text = "Already Disconnected"; } } else { lblSerialportMessages.Text = "No valid connection"; } ClearUI(); }
public override void OnInspectorGUI() { _mJsTimer = target as JSTimer; if (_mJsTimer == null) { return; } var coolDownTaskList = _mJsTimer.CdTasks; GUILayout.Label("----------倒计时---------"); _coolDownToggle = EditorGUILayout.Foldout(_coolDownToggle, string.Format("CoolDown:{0}", coolDownTaskList.Count)); GUILayout.Label("-------------------------"); if (_coolDownToggle) { for (int i = 0; i < coolDownTaskList.Count; i++) { DrawCoolDownTask(coolDownTaskList[i]); } } var timerTaskList = _mJsTimer.TimeTasks; GUILayout.Label("----------计时器---------"); _timerToggle = EditorGUILayout.Foldout(_timerToggle, string.Format("CoolDown:{0}", coolDownTaskList.Count)); GUILayout.Label("-------------------------"); if (_timerToggle) { for (int i = 0; i < timerTaskList.Count; i++) { DrawTimerTask(timerTaskList[i]); } } this.Repaint(); }