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);
            }
        }
示例#2
0
        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;
        }