/// <summary> /// Sets an attribute on the scanner given a ScannerAttribute object. /// </summary> /// <param name="attribute">ScannerAttribute object containing identification info and the value of the attribute to set.</param> protected void SetAttribute(ScannerAttribute attribute) { var xml = string.Format(_setAttributeXml, attribute.Id, (char)attribute.DataType, attribute.Value); string outXml; int status; _scannerDriver.ExecCommand((int)ScannerCommand.AttrStore, ref xml, out outXml, out status); var s = (StatusCode)status; if (s != StatusCode.Success) { throw new ScannerException(s); } _scannerDriver.ExecCommand((int)ScannerCommand.SetParameterPersistence, ref xml, out outXml, out status); s = (StatusCode)status; if (s != StatusCode.Success) { throw new ScannerException(s); } }
/// <summary> /// Get an attribute from the scanner given it's ID. /// </summary> /// <param name="id">Attribute ID</param> /// <returns>ScannerAttribute object holding identification info and the value of the attribute.</returns> protected ScannerAttribute GetAttribute(ushort id) { var xml = string.Format(_getAttributesXml, id); string outXml; int status; _scannerDriver.ExecCommand((int)ScannerCommand.AttrGet, ref xml, out outXml, out status); var s = (StatusCode)status; if (s != StatusCode.Success) { throw new ScannerException(s); } if (outXml == null) { return(null); } var doc = XDocument.Parse(outXml); var xmlAttribute = doc.Descendants("attribute").Single(); var name = xmlAttribute.Descendants("name").Single().Value; var dataType = (DataType)xmlAttribute.Descendants("datatype").Single().Value[0]; var permission = xmlAttribute.Descendants("permission").Single().Value[0]; var stringValue = xmlAttribute.Descendants("value").Single().Value; var value = ValueConverters.StringToActualType(dataType, stringValue); var retval = new ScannerAttribute { Id = id, Name = name, DataType = dataType, Permission = permission, Value = value }; return(retval); }