Werte aktualisieren
Zum Aktualisieren der Werte in den Tabellen gibt es die Methoden Marker_NewMarkerValues (aktualisiert die neuen Channelwerte der XMarker), XMarker_PositionChanges (aktualisiert den Positionswert des Markers) und YMarker_PositionChanged (aktualisiert den Positionswert des Markers). Da diese Methoden durch Events aufgerufen werden, wird der jeweilige Marker als Parameter mitgeschickt.
Dadurch kann dieser Marker zunächst in der Tabelle gesucht werden, sodass anschließend die Werte abgeändert werden können.
private void XMarker_PositionChanged(object sender, EventArgs e)
{
Marker tmpMarker = (Marker)sender;
//set new channel value
for (int k = 0; k < axisGroup.SubMember.OfType<MarkerContainer>().First().SubMember.OfType<Marker>().Count(); k++)
{
if (axisGroup.SubMember.OfType<MarkerContainer>().First().SubMember.OfType<Marker>().Where(x => x.Orientation == TwinCAT.Measurement.Scope.API.CursorAlignment.Vertical).ToArray()[k] == tmpMarker)
{
dataGridView1[0, k].Value = tmpMarker.Position;
break;
}
}
}
private void YMarker_PositionChanged(object sender, EventArgs e)
{
Marker tmpMarker = (Marker)sender;
for(int k = 0; k< axisGroup.SubMember.OfType<MarkerContainer>().First().SubMember.OfType<Marker>().Count(); k++)
{
if(axisGroup.SubMember.OfType<MarkerContainer>().First().SubMember.OfType<Marker>().Where(x => x.Orientation == TwinCAT.Measurement.Scope.API.CursorAlignment.Horizontal).ToArray()[k] == tmpMarker)
{
dataGridView2[1, k].Value = tmpMarker.Position;
break;
}
}
}
private void Marker_NewMarkerValues(object sender, EventArgs e)
{
try
{
Marker tmpMarker = (Marker)sender;
//set new channel value
for (int k = 0; k < axisGroup.SubMember.OfType<MarkerContainer>().First().SubMember.OfType<Marker>().Count(); k++)
{
if (axisGroup.SubMember.OfType<MarkerContainer>().First().SubMember.OfType<Marker>().ToArray()[k] == tmpMarker)
{
var dict = tmpMarker.GetAllValues();
for (int j = 0; j < dict.Count; j++)
{
dataGridView1[j + 2, k].Value = dict.ElementAt(j).Value;
}
break;
}
}
}
catch (Exception) { }
}