public override object ConvertFrom ( System.ComponentModel.ITypeDescriptorContext context, System.Globalization.CultureInfo culture, Object value ) { if (String.IsNullOrEmpty(value as string)) { return(null); // TODO : supply err msg } String[] antennaData = (value as String).Split(new Char[] { ',' }); if (null == antennaData) { return(null); // TODO : supply err msg ~ improper arg } if (7 != antennaData.Length) // 8 with threshold value { return(null); // TODO : supply err msg ~ improper arg count } try { // TODO : split out parsing ? to better define which parms bad... Source_Antenna antenna = new Source_Antenna(byte.Parse(antennaData[0])); rfid.Constants.AntennaPortState state = (rfid.Constants.AntennaPortState)Enum.Parse ( typeof(rfid.Constants.AntennaPortState), antennaData[1].ToUpper( ) ); antenna.State = state; antenna.PowerLevel = UInt16.Parse(antennaData[2]); antenna.DwellTime = UInt16.Parse(antennaData[3]); antenna.NumberInventoryCycles = UInt16.Parse(antennaData[4]); antenna.PhysicalPort = byte.Parse(antennaData[5]); // Currently Rx is explicitly tied to Tx so cannot be set - ignore val // antenna.PhysicalRxPort = UInt32.Parse( antennaData[ 6 ] ); // now using global threshold not per antenna... // antenna.AntennaSenseThreshold = UInt32.Parse( antennaData[ 7 ] ); antenna.AntennaSenseThreshold = 0; // if using Source_Antenna to store, uses glob var return(antenna); } catch (Exception) { // TODO : supply err msg ~ bad arg return(null); } }
public Source_Antenna ( byte port, rfid.Constants.AntennaPortState state, UInt16 powerLevel, UInt16 dwellTime, UInt16 numberInventoryCycles, byte physicalPort, UInt32 antennaSenseThreshold ) : base( ) { this.port = port; this.antennaResult = new Source_AntennaResult(port); this.antennaConfig = new Source_AntennaConfig(port); this.State = state; this.PowerLevel = powerLevel; this.DwellTime = dwellTime; this.NumberInventoryCycles = numberInventoryCycles; this.PhysicalPort = physicalPort; this.AntennaSenseThreshold = antennaSenseThreshold; }