public DaValue[] SyncRead(int[] serverHandles, int count)
{
// initialize output parameters.
IntPtr pValues = IntPtr.Zero;
IntPtr pErrors = IntPtr.Zero;
if (count > 0)
{
string methodName = "IOPCSyncIO.Read";
try
{
IOPCSyncIO server = BeginComCall<IOPCSyncIO>(methodName, true);
server.Read(
OPCDATASOURCE.OPC_DS_DEVICE,
count,
serverHandles,
out pValues,
out pErrors);
}
catch (Exception e)
{
ComUtils.TraceComError(e, methodName);
return null;
}
finally
{
EndComCall(methodName);
}
}
// unmarshal output parameters.
DaValue[] values = GetItemValues(ref pValues, count, true);
int[] errors = ComUtils.GetInt32s(ref pErrors, count, true);
// save error codes.
for (int ii = 0; ii < count; ii++)
{
values[ii].Error = errors[ii];
}
return values;
}