Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Firemonkey Android ile OCR ve Mifare - NFC - RFID Kütüphaneleri
#1
Merhaba,

Bir projede OCR ve Mifare, NFC ve RFID kart bilgisini okuyabileceğim kütüphanelere ihtiyaç duydum. Konu ile ilgili yaptığım araştırmlar XE5-6-7 zamanında FMXExpress ve birkaç yerde çok az da olsa yapılan çalışmalara götürdü. İşin kötüsü çoğunun referans kaynak linkleri öldüğü için tam bir veri toplayamadım. Elinde bu konu üzerine bilgisi olan varsa yardımcı olabilir mi?

Kütüphaneler, JNI.Bridge, Komponent (ücretli-ücretsiz), her şey olabilir.

Şimdiden teşekkürler.


Dipnot: Winsoft'un kütüphanesini kullanan oldu mu?
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla
#2
Merhaba,
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. tarafından yazılmış ücretli NFC ve OCR bileşen setleri mevcut. 
Not: Her cihazın, NFC desteği olmadığını (yeni çıkan bir çok telefonda da yok) unutmayın.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#3
(11-12-2017, Saat: 17:44)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhaba,
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. tarafından yazılmış ücretli NFC ve OCR bileşen setleri mevcut. 
Not: Her cihazın, NFC desteği olmadığını (yeni çıkan bir çok telefonda da yok) unutmayın.

Hocam hiç deneme fırsatınız oldu mu? OCR açısından stabil midir? NFC tarafında yazma işlemleri yapılabiliyor mu? Kimlik-Pasaport tarzında evraklar için basit ve gelişmiş okuma bilgisi sunuyor mu?
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla
#4
(11-12-2017, Saat: 17:46)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(11-12-2017, Saat: 17:44)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhaba,
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. tarafından yazılmış ücretli NFC ve OCR bileşen setleri mevcut. 
Not: Her cihazın, NFC desteği olmadığını (yeni çıkan bir çok telefonda da yok) unutmayın.

Hocam hiç deneme fırsatınız oldu mu? OCR açısından stabil midir? NFC tarafında yazma işlemleri yapılabiliyor mu? Kimlik-Pasaport tarzında evraklar için basit ve gelişmiş okuma bilgisi sunuyor mu?

Maalesef test etmedim, fakat native Android kodlarını kullandığını biliyorum. Stabilitesi konusunda bir şey söylemem.
NFC işlemleri için ise bir önceki notumda da belirttiğim gibi, sabit NFC desteği olan yalnızca belli modellere yönelik uygulama geliştiriyorsanız sorun yok demektir.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#5
Winsoft'un örneklemesine göre;

Okuma İşlemi


procedure TFormMain.ReadTag(NfcTag: TNfcTag);
var
 NfcA: TNfcA;
 NfcV: TNfcV;
 NdefFormatable: TNdefFormatable;
 Ndef: TNdef;
 MifareClassic: TMifareClassic;
 MifareUltralight: TMifareUltralight;
 TechList: TArray<string>;
 I, PageCount, PageSize, BlockCount, BlockSize: Integer;
 NdefRecords: TArray<TNdefRecord>;
 NdefRecord: TNdefRecord;
 Blocks: TArray<TArray<Byte>>;
 Data: TArray<Byte>;
begin
 ClearLines;
 AddLine('ID: ' + NfcTag.Id);

 // TechList

 AddLine('');
 TechList := NfcTag.TechList;
 for I := Low(TechList) to High(TechList) do
   AddLine('Tech ' + IntToStr(I) + ': ' + TechList[I]);

 // NFC A
 NfcA := NfcTag.NfcA;
 if NfcA <> nil then
 begin
   AddLine('');
   AddLine('NFC-A');
   AddLine('  SAK/SEL_RES: $' + IntToHex(NfcA.Sak, 4));
   AddLine('  ATQA: $' + BytesToHexReverse(NfcA.Atqa));
   AddLine('  Max transceive length: ' + IntToStr(NfcA.MaxTransceiveLength));
   AddLine('  Timeout: ' + IntToStr(NfcA.Timeout));
 end;

 // NFC V

 NfcV := NfcTag.NfcV;
 if NfcV <> nil then
 begin
   AddLine('');
   AddLine('NFC-V');
   AddLine('  DSF ID: $' + IntToHex(NfcV.DsfId, 2));
   AddLine('  Response flags: $' + IntToHex(NfcV.ResponseFlags, 2));
   AddLine('  Max transceive length: ' + IntToStr(NfcV.MaxTransceiveLength));

   BlockCount := NfcV.BlockCount;
   BlockSize := NfcV.BlockSize;

   AddLine('  Block count: ' + IntToStr(BlockCount));
   AddLine('  Block size: ' + IntToStr(BlockSize));

   for I := 0 to BlockCount - 1 do
     AddLine('  Block $' + IntToHex(I, 2) + ': ' + BytesToHex(NfcV.ReadBlock(I)));
 end;

 // NDEF Formatable

 NdefFormatable := NfcTag.NdefFormatable;
 if NdefFormatable <> nil then
 begin
   AddLine('');
   AddLine('NDEF Formatable');
 end;

 // NDEF

 Ndef := NfcTag.Ndef;
 if Ndef <> nil then
 begin
   AddLine('');
   AddLine('NDEF');

   AddLine('  Type: ' + Ndef.&Type);
   AddLine('  Max size: ' + IntToStr(Ndef.MaxSize));
   if Ndef.IsWritable then
     AddLine('  Is writable');
   if Ndef.CanMakeReadOnly then
     AddLine('  Can make read-only');
   NdefRecords := Ndef.Records;
   for I := 0 to Length(NdefRecords) - 1 do
   begin
     NdefRecord := NdefRecords[I];
     AddLine('  Record ' + IntToStr(I));
     AddLine('    Top level type: ' + NdefRecord.TnfDescription);
     if NdefRecord.IsText then
     begin
       AddLine('    Language code: ' + NdefRecord.TextLanguageCode);
       AddLine('    Text: ' + NdefRecord.Text)
     end
     else if NdefRecord.IsUri then
       AddLine('    URI: ' + NdefRecord.Uri)
     else if NdefRecord.IsExternalType then
       AddLine('    External text: ' + NdefRecord.ExternalText)
     else
       AddLine('    Payload: ' + BytesToHex(NdefRecord.Payload));
   end;
 end;

 // MIFARE Classic

 MifareClassic := NfcTag.MifareClassic;
 if MifareClassic <> nil then
 begin
   AddLine('');

   AddLine(MifareClassic.TypeDescription);
   AddLine('  Block size: ' + IntToStr(MifareClassic.BlockSize));
   AddLine('  Block count: ' + IntToStr(MifareClassic.BlockCount));
   AddLine('  Sector count: ' + IntToStr(MifareClassic.SectorCount));
   AddLine('  Size: ' + IntToStr(MifareClassic.Size));
   AddLine('  Max transceive length: ' + IntToStr(MifareClassic.MaxTransceiveLength));
   AddLine('  Timeout: ' + IntToStr(MifareClassic.Timeout));
   Blocks := MifareClassic.ReadBlocks;
   for I := 0 to Length(Blocks) - 1 do
     AddLine('  Block ' + IntToStr(I) + ': ' + BytesToHex(Blocks[I]));
 end;

 // MIFARE Ultralight

 MifareUltralight := NfcTag.MifareUltralight;
 if MifareUltralight <> nil then
 begin
   AddLine('');
   AddLine(MifareUltralight.TypeDescription);
   AddLine('  Page count: ' + IntToStr(MifareUltralight.PageCount));
   AddLine('  Max transceive length: ' + IntToStr(MifareUltralight.MaxTransceiveLength));
   AddLine('  Timeout: ' + IntToStr(MifareUltralight.Timeout));
   Data := MifareUltralight.ReadData;
   PageCount := MifareUltralight.PageCount;
   PageSize := Length(Data) div PageCount;
   for I := 0 to PageCount - 1 do
     AddLine('  Page ' + IntToStr(I) + ': ' + BytesToHex(Data, PageSize * I, PageSize));
 end;
end;


Yazma İşlemi

procedure TFormMain.WriteTag(NfcTag: TNfcTag);
var
Ndef: TNdef;
TextRecord, UriRecord, ApplicationRecord: TNdefRecord;
begin
ClearLines;
AddLine('ID: ' + NfcTag.Id);
AddLine('');

// NDEF

Ndef := NfcTag.Ndef;
if Ndef = nil then
  AddLine('Unsupported tag')
else if not Ndef.IsWritable then
  AddLine('Tag is not writable')
else
begin
  TextRecord := TNdefRecord.CreateTextRecord('Hello, world!');
  UriRecord := TNdefRecord.CreateUriRecord('http://www.winsoftxe.com');
  ApplicationRecord := TNdefRecord.CreateApplicationRecord('com.adobe.reader');

  if Ndef.Write([TextRecord, UriRecord, ApplicationRecord]) then
    AddLine('Tag written')
  else
    AddLine('Cannot write tag')
end;
end;


Format Belirleme İşlemi

procedure TFormMain.FormatTag(NfcTag: TNfcTag);
var NdefFormatable: TNdefFormatable;
begin
ClearLines;
AddLine('ID: ' + NfcTag.Id);
AddLine('');

NdefFormatable := NfcTag.NdefFormatable;
if NdefFormatable = nil then
 AddLine('Tag is not formatable')
else if NdefFormatable.Format then
 AddLine('Tag formated')
else
 AddLine('Cannot format tag')
end;
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla
#6
Bir kaç hafta önce denemeler yaparken test için bulduğum bi ornek vardı onun linkini atıyorum
belki işinize yarar
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#7
Merhaba Abdullah bey NFC ile kart okuma işlemi yapabildiniz mi?
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla
#8
(01-09-2018, Saat: 19:34)narkotik Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhaba Abdullah bey NFC ile kart okuma işlemi yapabildiniz mi?

Merhaba,

Belirli bir aşamaya kadar getirebildik ancak sonrasında ilerleme kaydedemedik. Winsoft'a ücret karşılığı bir komponent geliştirme siparişi verdik, 3 hafta bekledikten sonra olumsuz yanıt aldık. Projenin genel maliyet hesaplamasında çok yukarıda kaldığımız için proje iptal edildi.

NFC üzerinde ilerleme kaydederseniz gündemime tekrar alabilirim.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla
#9
(01-09-2018, Saat: 22:12)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(01-09-2018, Saat: 19:34)narkotik Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhaba Abdullah bey NFC ile kart okuma işlemi yapabildiniz mi?

Merhaba,

Belirli bir aşamaya kadar getirebildik ancak sonrasında ilerleme kaydedemedik. Winsoft'a ücret karşılığı bir komponent geliştirme siparişi verdik, 3 hafta bekledikten sonra olumsuz yanıt aldık. Projenin genel maliyet hesaplamasında çok yukarıda kaldığımız için proje iptal edildi.

NFC üzerinde ilerleme kaydederseniz gündemime tekrar alabilirim.

Winsoftun demoları çalışıyor fakat ücretli bir component ücretsiz bir çözüm arıyorum şuanda
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla
#10
@Abdullah ILGAZ
Hocam NFC okuma işlemini Şununla çözdüm çalışıyor tokyoda denedim paylaşıyorum.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Firemonkey edit ve memo da @ karakteri beklentili 9 1.168 28-08-2019, Saat: 16:51
Son Yorum: seydigozegir@gmail.com
  Android ile PC Arasında dosya okumak bsogulcan 3 220 22-08-2019, Saat: 16:03
Son Yorum: bsogulcan
  Firemonkey MessageDlg Türkçeleştirmek narkotik 14 1.403 21-08-2019, Saat: 13:03
Son Yorum: SimaWB
  Android Klavyenin Açılma Durumu Emrah Karagöz 0 122 30-07-2019, Saat: 14:57
Son Yorum: Emrah Karagöz
  FMX Android Adaptive Icons kullanabilir miyiz? egeven 0 135 28-07-2019, Saat: 21:55
Son Yorum: egeven



Konuyu Okuyanlar: 1 Ziyaretçi