private IObservable <PnpEventArgs> CreateWhenPnp()
 {
     return(Observable.FromEvent(
                (Action <PnpEventArgs> handler) =>
                new _ICoreScannerEvents_PNPEventEventHandler(
                    delegate(Int16 eventType, ref String data)
     {
         handler(PnpEventArgs.Parse(eventType, data));
     }),
                handler => this.coreScanner.PNPEvent += handler,
                handler => this.coreScanner.PNPEvent -= handler));
 }
Пример #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="eventType"></param>
        /// <param name="outXml"></param>
        /// <returns></returns>
        public static PnpEventArgs Parse(Int16 eventType, String outXml)
        {
            PnpEventArgs eventArgs = new PnpEventArgs();
            XElement     argXml    = XDocument
                                     .Parse(outXml)
                                     .Elements("outArgs")
                                     .SelectMany(outArgs => outArgs
                                                 .Elements("arg-xml"))
                                     .FirstOrDefault();
            Int32 statusValue = argXml
                                .Elements("status")
                                .Select(status => status.Value.ToInt32())
                                .FirstOrDefault();
            XElement scannerInfo = argXml
                                   .Elements("scanners")
                                   .SelectMany(scanners => scanners
                                               .Elements("scanner"))
                                   .FirstOrDefault();

            eventArgs.eventType   = (PnpEventType)eventType;
            eventArgs.scannerInfo = ScannerInfo.Parse(scannerInfo.ToString());
            return(eventArgs);
        }