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) { } }
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; } }