public void GenerateMessageSetStepsAmplitude(object sender, Int32EventArgs e) { byte[] payload = new byte[4]; payload = e.value.GetBytes(); OnMessageToRespirator((Int16)Commands.SetAmplitudeSteps, 4, payload); }
public void GenerateMessageSetCyclesPerMin(object sender, Int32EventArgs e) { byte[] payload = new byte[1]; payload[0] = Convert.ToByte(e.value); OnMessageToRespirator((Int16)Commands.SetCyclesPerMin, 1, payload); }
public void GenerateMessageSetStepsOffsetDown(object sender, Int32EventArgs e) { byte[] payload = new byte[4]; payload = e.value.GetBytes(); OnMessageToRespirator((Int16)Commands.SetStepsOffsetFromDown, 4, payload); }
//Methode appelée sur evenement (event) provenant du port Serie. //Cette methode est donc appelée depuis le thread du port Serie. Ce qui peut poser des problemes d'acces inter-thread public void ActualizeOffsetDown(object sender, Int32EventArgs e) { //La solution consiste a passer par un delegué qui executera l'action a effectuer depuis le thread concerné. //Ici, l'action a effectuer est la modification d'un bouton. Ce bouton est un objet UI, et donc l'action doit etre executée depuis un thread UI. //Sachant que chaque objet UI (d'interface graphique) dispose d'un dispatcher qui permet d'executer un delegué (une methode) depuis son propre thread. //La difference entre un Invoke et un beginInvoke est le fait que le Invoke attend la fin de l'execution de l'action avant de sortir. labelOffsetDown.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(delegate() { labelOffsetDown.Content = Convert.ToString(e.value); })); }