Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

RFID Okuyucu

Başlatan robikod, 09 Kasım 2022, 15:55:48

robikod

Herkese merhabalar,
Elimde şu RFID okuyucu mevcut https://www.direnc.net/125-khz-usb-rfid-kart-etiket-okuyucu?language=tr&h=434aa101&gclid=CjwKCAiAvK2bBhB8EiwAZUbP1Kb6Uu2NgCZ6b9yHzX6hzZw5NlZqp_uaxL5xankPb5Xo8e4M0q2wuxoCbJoQAvD_BwE

Bilgisayara (Windows) takıyorum ve herhangi bir text dosyasına direk RFID kodunu gösteriyor.
Fakat benim yapmak istediğim şey bu rfid verilerini python ile almak. Ancak bunun için bulduğum birkaç kaynak da COM port ilişkisi var. Fakat bu cihaz USB aygıt olarak görüntüleniyor. Verileri python ile nasıl elde edebilirim önerisi olan var mı ?

ByTEK

#1
Alıntı yapılan: robikod - 09 Kasım 2022, 15:55:48Herkese merhabalar,
Elimde şu RFID okuyucu mevcut https://www.direnc.net/125-khz-usb-rfid-kart-etiket-okuyucu?language=tr&h=434aa101&gclid=CjwKCAiAvK2bBhB8EiwAZUbP1Kb6Uu2NgCZ6b9yHzX6hzZw5NlZqp_uaxL5xankPb5Xo8e4M0q2wuxoCbJoQAvD_BwE

Bilgisayara (Windows) takıyorum ve herhangi bir text dosyasına direk RFID kodunu gösteriyor.
Fakat benim yapmak istediğim şey bu rfid verilerini python ile almak. Ancak bunun için bulduğum birkaç kaynak da COM port ilişkisi var. Fakat bu cihaz USB aygıt olarak görüntüleniyor. Verileri python ile nasıl elde edebilirim önerisi olan var mı ?

bu cihaz kendini klavye gibi gösteriyor. HID olarak çalışıyor. imleç nerede ise okuduğu veriyi oraya yazıyor.

Program arka planda çalışıyorsa bir ihtimal python hid lib kullanarak vid ve pid bilgilerini bulup girip yakalanabilir.

import hid

vid = 0x046d    # Change it for your device
pid = 0xc534    # Change it for your device

with hid.Device(vid, pid) as h:
    print(f'Device manufacturer: {h.manufacturer}')
    print(f'Product: {h.product}')
    print(f'Serial Number: {h.serial}')

https://pypi.org/project/hid/

fide

pythonda input komutu var. Klavyeden veri girişi için. Enter tuşunu takip eder.
Sizdeki rfid okuyucu windows tarafından klavye olarak algılanır. Bu yüzden python kodu içinde veriyi almak istedğiniz yere
x = input("xyz")
şeklinde  yazıp veriyi alabilirsiniz. Veri string olarak gelecektir.
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

robikod

Alıntı yapılan: SercanTEK - 09 Kasım 2022, 16:24:03bu cihaz kendini klavye gibi gösteriyor. HID olarak çalışıyor. imleç nerede ise okuduğu veriyi oraya yazıyor.

Program arka planda çalışıyorsa bir ihtimal python hid lib kullanarak vid ve pid bilgilerini bulup girip yakalanabilir.

import hid

vid = 0x046d    # Change it for your device
pid = 0xc534    # Change it for your device

with hid.Device(vid, pid) as h:
    print(f'Device manufacturer: {h.manufacturer}')
    print(f'Product: {h.product}')
    print(f'Serial Number: {h.serial}')

https://pypi.org/project/hid/

Arka planda çalıştırmam gerekiyor aslında, o yüzden input verisini alamıyorum.
pid ve vidsini biliyorum ama nasıl data okuyabilirim bulamadım. Şu kütüphaneyi deniyorum https://github.com/charlysan/pyrfidhid
Fakat bunda da Windows da "usb.core.USBError: [Errno None] b'libusb0-dll:err [claim_interface] could not claim interface 0, invalid configuration 0\n'" Sorununu yaşıyorum bir çözüm bulamadım.

ByTEK

Alıntı yapılan: robikod - 09 Kasım 2022, 16:59:22Arka planda çalıştırmam gerekiyor aslında, o yüzden input verisini alamıyorum.
pid ve vidsini biliyorum ama nasıl data okuyabilirim bulamadım. Şu kütüphaneyi deniyorum https://github.com/charlysan/pyrfidhid
Fakat bunda da Windows da "usb.core.USBError: [Errno None] b'libusb0-dll:err [claim_interface] could not claim interface 0, invalid configuration 0\n'" Sorununu yaşıyorum bir çözüm bulamadım.


açıkçası birebir tecrübe etmediğim için yanlış yönlendirmek istemiyorum. ama pyrfidhid yerine birde verdiğim linkteki libi deneyin.

robikod

Alıntı yapılan: SercanTEK - 09 Kasım 2022, 19:38:17açıkçası birebir tecrübe etmediğim için yanlış yönlendirmek istemiyorum. ama pyrfidhid yerine birde verdiğim linkteki libi deneyin.

Biraz uğraştım aşağıdaki gibi bir kod oluşturdum.  scan_hiddevice doğru bir şekilde dönüyor fakat, rx_handler ile rfid'nin bana döndürdüğü tagleri okuyamıyorum. Bu fonksiyona hiç gelmiyor neden olabilir sizce ?
import pywinusb.hid as hid

DEVICE_DEFAULT_VID = 0xffff
DEVICE_DEFAULT_PID = 0x0035
# handler called when a report is received
def rx_handler(data):
    print ('recv: ', data)

def scan_hiddevice():
    """ Scans for and returns the HID device. """
    devices = hid.HidDeviceFilter( vendor_id = DEVICE_DEFAULT_VID, product_id = DEVICE_DEFAULT_PID ).get_devices()
    if not devices:
        print ("scan_hiddevice: No device connected.")
        return None
    else:
        device = devices[0]
        print("scan_hiddevice: found %s", device )
        print(device)
        return device    
    return None

def setup_hiddevice():
    """Creates a new HID device, opens it and attaches a receive data handler"""
    hid_device = scan_hiddevice()
    print("here")
    hid_device.set_raw_data_handler(rx_handler)
    hid_device.open()

    print(hid_device)
    return hid_device

def main(verbose=True):
    hid_device = setup_hiddevice()

    while (True):
        #wait for data
        1 == 1

main()

robikod

Alıntı yapılan: robikod - 09 Kasım 2022, 20:54:25Biraz uğraştım aşağıdaki gibi bir kod oluşturdum.  scan_hiddevice doğru bir şekilde dönüyor fakat, rx_handler ile rfid'nin bana döndürdüğü tagleri okuyamıyorum. Bu fonksiyona hiç gelmiyor neden olabilir sizce ?
import pywinusb.hid as hid

DEVICE_DEFAULT_VID = 0xffff
DEVICE_DEFAULT_PID = 0x0035
# handler called when a report is received
def rx_handler(data):
    print ('recv: ', data)

def scan_hiddevice():
    """ Scans for and returns the HID device. """
    devices = hid.HidDeviceFilter( vendor_id = DEVICE_DEFAULT_VID, product_id = DEVICE_DEFAULT_PID ).get_devices()
    if not devices:
        print ("scan_hiddevice: No device connected.")
        return None
    else:
        device = devices[0]
        print("scan_hiddevice: found %s", device )
        print(device)
        return device    
    return None

def setup_hiddevice():
    """Creates a new HID device, opens it and attaches a receive data handler"""
    hid_device = scan_hiddevice()
    print("here")
    hid_device.set_raw_data_handler(rx_handler)
    hid_device.open()

    print(hid_device)
    return hid_device

def main(verbose=True):
    hid_device = setup_hiddevice()

    while (True):
        #wait for data
        1 == 1

main()

Bu program çalışırken de aynı zamanda rfid den okunan değerler ekrana yazmaya devam ediyor. Fakat pythondan okuyamıyorum