Я могу вытащить данные.
ItemValueCollection[] values = group.ReadRaw();// ReadProcessed();
В строке выше я не могу прочитать данные.
Если кто-нибудь знает, пожалуйста, помогите мне в этом.
Opc.Hda.Trend group = new Opc.Hda.Trend(_hdaServer);
В строке выше мы получают данные с сервера.
Вот мой код
public DataTable ReadRaw( DateTime startTime, DateTime endTime, int maxValues, bool includeBounds ) {
Opc.Hda.Time hdaStartTime = new Time( startTime );
Opc.Hda.Time hdaEndTime = new Time( endTime );
DataTable dataTable = new DataTable( "Data" );
DataColumn timestamp = new DataColumn( "TimeStamp" );
DataColumn value = new DataColumn( "Value" );
DataColumn quality = new DataColumn( "Quality" );
dataTable.Columns.Add( timestamp );
dataTable.Columns.Add( value );
dataTable.Columns.Add( quality );
ItemIdentifierCollection itemIdentifierCollection = null;
ItemIdentifier[] items = null;
int index = 0;
if ( _hdaServer.Items.Count != 0 ) {
itemIdentifierCollection = _hdaServer.Items;
items = new ItemIdentifier[itemIdentifierCollection.Count];
}
Opc.Hda.Trend group = new Opc.Hda.Trend( _hdaServer );
foreach( ItemIdentifier itemIdentifier in itemIdentifierCollection ) {
items[index] = itemIdentifier;
Opc.IdentifiedResult[] results = group.Server.ValidateItems( new Opc.ItemIdentifier[]{ itemIdentifier
} );
group.AddItem( itemIdentifier );
index++;
}
try {
group.Name = group.Server.Url.HostName + Guid.NewGuid().ToString();
group.EndTime = new Opc.Hda.Time( endTime );
group.StartTime = new Opc.Hda.Time( startTime );
TimeSpan span = endTime.Subtract( startTime );
int Calcinterval = ( (int)span.TotalSeconds ) / 100;
group.ResampleInterval = (decimal)Calcinterval;
group.AggregateID = Opc.Hda.AggregateID.INTERPOLATIVE;
group.MaxValues = 62;
// ItemValueCollection[] values = group.ReadRaw();// ReadProcessed();
ItemValueCollection[] values = _hdaServer.ReadRaw( hdaStartTime, hdaEndTime, maxValues, includeBounds, items );
foreach( ItemValueCollection itemValueCollection in values ) {
foreach( ItemValue itemValue in itemValueCollection ) {
DataRow dataRow = dataTable.NewRow();
dataRow["Timestamp"] = itemValue.Timestamp;
dataRow["Value"] = itemValue.Value;
dataRow["Quality"] = itemValue.Quality;
dataTable.Rows.Add( dataRow );
}
}
} catch ( Exception e ) {
throw;
}
return dataTable;
}
Ниже приведен метод Add Item Method для добавления имен элементов
public void AddItem( string itemName ) {
if ( _hdaServer != null ) {
ItemIdentifier itemIdentifier = new ItemIdentifier( itemName );
ItemIdentifier[] items = { itemIdentifier };
IdentifiedResult[] addItemResults = _hdaServer.CreateItems( items );
IdentifiedResult[] validateItemResults = _hdaServer.ValidateItems( items );
}
}
Ниже одного идентификатора Connect Метод:
public int connect() {
try {
if ( _hdaServer != null )
_hdaServer.Connect();
return 2;
} catch ( Exception e ) {
return 3;
throw;
}
}