Konuyu Oyla:
  • Derecelendirme: 4/5 - 2 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Problem - ZKTeco Cihazlardan Anlık Veri Alma
#11
(18-12-2020, Saat: 10:27)MosCom Adlı Kullanıcıdan Alıntı:
(18-12-2020, Saat: 10:00)buzmavisi Adlı Kullanıcıdan Alıntı: Merhaba.
Aynı şekilde birkaç parmak izi okuyucuya sırası ile bağlanıp,bağlı olan parmak izlerinden seçtiğimin içindeki datalara nasıl ulaşabilirim?
Örneğin,
Listbox ımda kayıtlı cihazlar var
192.168.1.1  4370
192.168.1.2  4370
192.168.1.3  4370
.
.
192.168.1.10  4370 gibi

CZKEM1.Connect_net(ipadres, portno); şeklinde döngü içinde bu 10 cihaza da sırası ile bir kerede bağlanıp, sonrasında atıyorum 192.168.1.5 olan cihazı aktif edip (yalnız zaten connect durumunda, tekrar connect olma değil veri çekmek için bu cihazı aktif etmekten bahsediyorum) içindeki personellere nasıl erişebilirim.?





içindeki personellere ayrı ayrı erişemezsin, cihazdan bütün logları alıp bundan sonraki kontrollerini DB üzerinden yapman lazım.

//Baglanti: Boolean; 
Baglanti := CZKEM1.Connect_net('192.168.1.1', 4370);            
           if Baglanti then
              begin 
                 CZKEM1.ReadAllGLogData(1);
                 while CZKEM1.SSR_GetGeneralLogData(1, PerNoSTR, OnayTipi, GirisCikisDurum, Yil, Ay, Gun, Saat, Dakika, Saniye, WorkCode) do
                    begin
                       // veritabanına kaydet                    
                    end;
              end;
           CZKEM1.ClearGLog(MakineNo); //cihaz içindeki verileri temizlemezsen her seferinde eski kayıtlarıda alacağından db'de mükerrer kayıtlar oluşacaktır.
           CZKEM1.Disconnect;


Verdiğiniz cevap için teşekkür ederim.
Ama elimde bu cihazlara personel kaydı gönderme,silme, yönetme vs tarzı terminal programı var.ZKTime isminde.ZKTECO
Burada cihazları ekliyorsunuz.atıyorum 5-6 tane seçip bağlan diyorsunuz.İlgili cihazların hepsi sorun yoksa connect oluyor. (bağlanma süresi biraz uzun olabiliryor makina modeline göre)
Sonra bağlı cihazı seçip "cihazdaki kullanıcılara bak" diyorsunuz anında seçtiğiniz cihazın içindeki personel kayıtlarını gösteriyor.(okutulmuş datalardan bahsemiyorum-cihazdaki kayıtlı kullanıcı personel listesi - kodu-adı-kartno vs bilgileri)
Yani seçtiğim cihaza tekrar connect olmakla uğraşmıyor.O cihaz zaten bağlı.siz seçip içindeki kullanıcılara erişebiliyorsunuz.seçtiğiniz kullanıcıları silebiliyorsunuz.
CZKEM1.Connect_net('192.168.1.1', 4370); bu komut tamam.connect olmak için.ben döngüde bunu birden fazla makinada yapıyorum ya da yaptığımı düşünüyorum.ya da bunu bir dizi mantığı ile mi yapmak gerekiyor?.aynı anda birden fazla makinaya bağlısınız ama hangisinin içindeki kullanıcılara erişmek istiyorsanız ilgili bağlandığınız cihazı nasıl seçeceksiniz.? 
Bunu yapan programlar var.Hepsine her seferinde connect olmak mantıklı değil.çünkü zaman alan bir durum.
Cevapla
#12
Kendi sistemimi anlatayım,
elimde 13 tane bu cihazdan var. Bu cihazlar veritabanına kayıtlı ve listbox ile bunları kullanıcıya gösteriyorum. İnsan kaynakları hangi cihazdan parmak izi kaydı alacaksa listeden onu seçiyor ve connect oluyor. Önce personel bilgilerini gönderiyorum cihaza, sonrasında o personele ait parmak izi kaydını alıyorum. kaydı cihaza aldıktan sonra tekrar cihazdan aldığım izleri tmp tabloya kayıt edip o kayıtları sırası ile tüm cihazlara gönderiyorum ve tmp tablomu boşaltıyorum.

sonrasında 2 saatte bir döngü içerisinde log kayıtlarını cihazlardan alıyorum.

aynı anda birden fazla makineye bağlanmana gerek yok. listeden ilgili cihaza bağlanır işlemlerini halleder sonrasında bağlantını kesersin.
Cevapla
#13
(18-12-2020, Saat: 10:54)MosCom Adlı Kullanıcıdan Alıntı: Kendi sistemimi anlatayım,
elimde 13 tane bu cihazdan var. Bu cihazlar veritabanına kayıtlı ve listbox ile bunları kullanıcıya gösteriyorum. İnsan kaynakları hangi cihazdan parmak izi kaydı alacaksa listeden onu seçiyor ve connect oluyor. Önce personel bilgilerini gönderiyorum cihaza, sonrasında o personele ait parmak izi kaydını alıyorum. kaydı cihaza aldıktan sonra tekrar cihazdan aldığım izleri tmp tabloya kayıt edip o kayıtları sırası ile tüm cihazlara gönderiyorum ve tmp tablomu boşaltıyorum.

sonrasında 2 saatte bir döngü içerisinde log kayıtlarını cihazlardan alıyorum.

aynı anda birden fazla makineye bağlanmana gerek yok. listeden ilgili cihaza bağlanır işlemlerini halleder sonrasında bağlantını kesersin.

aynı anda birden fazla cihaza bağlanıp,işten ayrılan bir personelin kaydını tüm cihazlardan silmek istiyorum.Ya da birden fazla personelin.programda her cihaza tek tek bağlanıp silmek yerine,tüm cihazlara önce bağlanıp sonra bu cihazları tek tek aktif edip içindeki personel kaydını silmek istemiştim.
Kullanıcıyı cihazlara bağlanmak için ilk etapta bir sefer bekletmek maksadım.sonrasında tek tek bağlan sil,bağlan sil daha çok bekletmiş olacağım.
Bunun yine de bir yolunun olabileceğini düşünüyorum.
İlginiz ve yardımınız için teşekkür ederim.
Belki benim istediğim hakkında bilgisi olan varsa,cevap verirse sevinirim.
Cevapla
#14
   
queryCIHAZ.First;
  for i := 0 queryCihaz.RecordCount - 1 do
     begin
        Baglanti := CZKEM1.Connect_net(queryCihazIPADRESI.AsString, 4370);
        if Baglanti then
           begin

              // 1-Tabloda kayıtlı olarak cihazlara bu döngü yardımı ile bağlandın
              // 2-Personele ait işlemleri yaptın ya da bağlandığın cihazdan kayıtları çektin

              CZKEM1.Disconnect; // 3-bağlandığın cihazdan bağlantını kestin
              queryCihaz.Next; // 4-bir sonraki cihaza bağlanmak için sıradaki kayda geçtin ve 1 nolu işleme döndün başka kayıt yoksa döngünden çıktın ve işin bitti

           end;
     end;

umarım yardımı olur ya da ben seni tam olarak anlayamadım. İyi çalışmalar dilerim.
Cevapla
#15
(18-12-2020, Saat: 10:27)MosCom Adlı Kullanıcıdan Alıntı:
(18-12-2020, Saat: 10:00)buzmavisi Adlı Kullanıcıdan Alıntı: Merhaba.
Aynı şekilde birkaç parmak izi okuyucuya sırası ile bağlanıp,bağlı olan parmak izlerinden seçtiğimin içindeki datalara nasıl ulaşabilirim?
Örneğin,
Listbox ımda kayıtlı cihazlar var
192.168.1.1  4370
192.168.1.2  4370
192.168.1.3  4370
.
.
192.168.1.10  4370 gibi

CZKEM1.Connect_net(ipadres, portno); şeklinde döngü içinde bu 10 cihaza da sırası ile bir kerede bağlanıp, sonrasında atıyorum 192.168.1.5 olan cihazı aktif edip (yalnız zaten connect durumunda, tekrar connect olma değil veri çekmek için bu cihazı aktif etmekten bahsediyorum) içindeki personellere nasıl erişebilirim.?





içindeki personellere ayrı ayrı erişemezsin, cihazdan bütün logları alıp bundan sonraki kontrollerini DB üzerinden yapman lazım.

//Baglanti: Boolean; 
Baglanti := CZKEM1.Connect_net('192.168.1.1', 4370);            
           if Baglanti then
              begin 
                 CZKEM1.ReadAllGLogData(1);
                 while CZKEM1.SSR_GetGeneralLogData(1, PerNoSTR, OnayTipi, GirisCikisDurum, Yil, Ay, Gun, Saat, Dakika, Saniye, WorkCode) do
                    begin
                       // veritabanına kaydet                    
                    end;
              end;
           CZKEM1.ClearGLog(1); //cihaz içindeki verileri temizlemezsen her seferinde eski kayıtlarıda alacağından db'de mükerrer kayıtlar oluşacaktır.
           CZKEM1.Disconnect;

Merhaba,
Hocam CZKEM1 nesnesini create etmeden direk bu şekildemi kullanıyorsunuz nasıl oluyor? Açıklayabilirmisiniz.
Cevapla
#16
Cevap gelmeyince iş başa düştü diyip biraz araştırınca https://www.delphican.com/showthread.php?tid=3803 linkte örnek kodların paylaşıldığını gördüm, paylaşan arkadaşımıza teşekkür ederim. Ayrıca dll dosyalarını da register edip component olarak import etmek gerekiyor, daha sonrasında zkemkeeper_TLB.pas dosyasını projeye ekleyip fonksiyonları ile işlemler yapılabiliyor.
Cevapla
#17
(18-12-2020, Saat: 11:23)MosCom Adlı Kullanıcıdan Alıntı:
   
queryCIHAZ.First;
  for i := 0 queryCihaz.RecordCount - 1 do
     begin
        Baglanti := CZKEM1.Connect_net(queryCihazIPADRESI.AsString, 4370);
        if Baglanti then
           begin

              // 1-Tabloda kayıtlı olarak cihazlara bu döngü yardımı ile bağlandın
              // 2-Personele ait işlemleri yaptın ya da bağlandığın cihazdan kayıtları çektin

              CZKEM1.Disconnect; // 3-bağlandığın cihazdan bağlantını kestin
              queryCihaz.Next; // 4-bir sonraki cihaza bağlanmak için sıradaki kayda geçtin ve 1 nolu işleme döndün başka kayıt yoksa döngünden çıktın ve işin bitti

           end;
     end;

umarım yardımı olur ya da ben seni tam olarak anlayamadım. İyi çalışmalar dilerim.


              // 2-Personele ait işlemleri yaptın ya da bağlandığın cihazdan kayıtları çektin

cihazdan kayıtları çekemedim bu kodlar lazım cihaza bağlanıyorum fakat içindeki giriş çıkış kayıtlarını alamıyorum.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  IEC 61850 Potokolünden veri alma shooterman 1 413 14-03-2024, Saat: 11:38
Son Yorum: shooterman
  Veri Tabanına Kontrollü Kayıt Yaptırma bünyamin68 15 618 08-03-2024, Saat: 00:06
Son Yorum: TuncayDelphi
  [ÇÖZÜLDÜ]Firebase Bearer Token Alma shooterman 8 620 05-12-2023, Saat: 12:17
Son Yorum: shooterman
  Cas Terazi Veri gönderimi Delphi sürüm sorunu KUNTAY 12 4.300 08-11-2023, Saat: 00:06
Son Yorum: berkan
  Delphi Sürekli Adı Değişen Excel Dosyasından Veri Çekme bünyamin68 2 556 05-10-2023, Saat: 12:50
Son Yorum: mcuyan



Konuyu Okuyanlar: 1 Ziyaretçi