private static async Task WriteDataForTimeStreamAsync(IQiDataService data, List <AFValue> afValues, string streamId) { var dataList = afValues.Select(val => new PIQiTypes.TimeData() { Timestamp = val.Timestamp, Value = (DateTime)val.Value }).ToList(); await data.UpdateValuesAsync(streamId, dataList); }
private static async Task WriteDataForIntegerStreamAsync(IQiDataService data, List <AFValue> afValues, string streamId) { var dataList = new List <PIQiTypes.IntegerData>(); dataList.AddRange(afValues.Select(val => new PIQiTypes.IntegerData() { Timestamp = val.Timestamp, Value = val.ValueAsInt32() })); await data.UpdateValuesAsync(streamId, dataList); }
private static async Task WriteDataToOcsAsync(PIPoint piPoint, List <AFValue> afValues, IQiDataService data) { var streamId = GetStreamId(piPoint); switch (PIQiTypes.GetDataType(piPoint.PointType)) { case StreamDataType.Integer: await WriteDataForIntegerStreamAsync(data, afValues, streamId); break; case StreamDataType.Float: await WriteDataForFloatStreamAsync(data, afValues, streamId); break; case StreamDataType.String: await WriteDataForStringStreamAsync(data, afValues, streamId); break; case StreamDataType.Blob: await WriteDataForBlobStreamAsync(data, afValues, streamId); break; case StreamDataType.Time: await WriteDataForTimeStreamAsync(data, afValues, streamId); break; default: throw new ArgumentOutOfRangeException(); } Console.WriteLine( $"Writing data for point: {piPoint.Name} to stream {streamId} ({afValues.Count} values written.)"); }