コード例 #1
0
 private void mgr_CardRemoved(object sender, CardRemovedEventArgs e)
 {
     try
     {
         Dispatcher.Invoke(() =>
         {
             MyInfo       = new PersonalCardInfo();
             OldCode.Text = "";
             //this.QRVM = null;
             //this.ResultVM = null;
             PanelOne.Children.Clear();
             (this.TabControl1.Items[2] as TabItem).DataContext = null;
         });
     }
     catch (Exception ex)
     {
     }
 }
コード例 #2
0
        private async void DoReadCard(System.Threading.CancellationToken token)
        {
            //acr33u    "ACS ACR33U-A1 3SAM ICC Reader ICC 0"
            //acr38     "ACS CCID USB Reader 0"

            //using (var mgr = new SmartCardReaderManager(new TheS.SmartCard.ACOSx86.AcosNoCardDetectionFactory("ACS ACR33U-A1 3SAM ICC Reader ICC 0")))
            //using (var mgr = new SmartCardReaderManager(new TheS.SmartCard.ACOSx86.AcosNoCardDetectionFactory("ACS CCID USB Reader 0")))
            using (var mgr = new SmartCardReaderManager(new TheS.SmartCard.ACOSx86.AcosCardReaderFactory()))
            {
                mgr.CardRemoved += mgr_CardRemoved;
                while (!token.IsCancellationRequested)
                {
                    try
                    {
                        var cardReader = await mgr.ConnectToReaderWhenNextCardInserted(token);

                        if (cardReader == null)
                        {
                            continue;
                        }

                        var res = TheS.SmartCard.Formatters.ThaiIdCardFormatter.IsThaiIdCard(cardReader);
                        if (!res)
                        {
                            if (TheS.SmartCard.Formatters.SimpleMemoryCardFormatter.IsMemoryCard(cardReader))
                            {
                                using (var fmt = new TheS.SmartCard.Formatters.SimpleMemoryCardFormatter(cardReader))
                                {
                                    if (MyInfo == null)
                                    {
                                        MyInfo = new PersonalCardInfo();
                                    }
                                    MyInfo.PID = fmt.ReadString();
                                }
                            }
                            else
                            {
                                using (var fmt = new TheS.SmartCard.Formatters.SimpleCardBinaryFileFormatter(cardReader))
                                {
                                    if (MyInfo == null)
                                    {
                                        MyInfo = new PersonalCardInfo();
                                    }
                                    MyInfo.PID = fmt.ReadString();
                                }
                            }
                        }
                        else
                        {
                            using (var thaiCard = new TheS.SmartCard.Formatters.ThaiIdCardFormatter(cardReader))
                            {
                                MyInfo = await thaiCard.GetPersonalInfo();

                                if (MyInfo == null)
                                {
                                    MyInfo = new PersonalCardInfo();
                                }

                                //var imgData = await thaiCard.GetPictureData();
                                //using (var ms = new System.IO.MemoryStream(imgData))
                                //{
                                //    //var decoder = new JpegBitmapDecoder(ms,
                                //    //                                BitmapCreateOptions.PreservePixelFormat,
                                //    //                                BitmapCacheOption.OnLoad);

                                //    //WriteableBitmap writable = new WriteableBitmap(decoder.Frames.Single());
                                //    //writable.Freeze();
                                //}
                            }
                        }
                        OldCode.Text = MyInfo.PID;
                        this.LoadTab2(MyInfo.PID);
                        this.LoadTab3(MyInfo.PID);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.ToString());
                    }
                }
                //mgr.CardRemoved -= mgr_CardRemoved;
            }
        }