Bonjour,

J'ai un lecteur RFID USB dont j'aimerais capter ce qu'il lit avec un un script Python.
Voici son port USB :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Bus 003 Device 002: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
J'ai une application JAVA qui est fournie en l'application et en code source pour ce genre de lecteur mais je capte encore moins en JAVA qu'en Python ou Perl . J'ai remarqué qu'il me manquait des informations avec cette dernière tel que le RSSI qui correspond à la puissance du signal reçu.

J'ai repris un script qui est destiné à une scannette de code barre en espérant que cela me sorte quelque chose :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import sys
import usb.core
import usb.util
 
def lecture_rfid():
   VENDOR_ID = 0x0403
   PRODUCT_ID = 0x6001
 
   DATA_SIZE = 16 # 224
   BADGE_CODE = {0x1E:'1', 0x1F:'2', 0x20:'3', 0x21:'4', 0x22:'5', 0x23:'6', 0x24:'7'
    , 0x25:'8', 0x26:'9', 0x27:'0', 0x28:''} # 28=enter
 
device = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID)
 
if device is None:
    sys.exit("Could not find RFID Reader.")
 
if device.is_kernel_driver_active(0):   # On détache le périphérique du kernel, plus d'envoi sur stdin
    try:
        device.detach_kernel_driver(0)
    except usb.core.USBError as e:
        sys.exit("Could not detatch kernel driver: %s" % str(e))
 
 
 
endpoint = device[0][(0,0)][0]
data = []
lu = False
print "Waiting to read..."
lecture=''
 
while 1:
    try:
        data += device.read(endpoint.bEndpointAddress, endpoint.wMaxPacketSize)
 
        if not lu:
            print "Waiting to read..."
        lu = True
 
    except usb.core.USBError as e:
        if e.args == (110,'Operation timed out') and lu:
            if len(data) < DATA_SIZE:
                print "Lecture incorrecte, recommencez. (%d bytes)" % len(data)
                print "Data: %s" % ''.join(map(hex, data))
                data = []
                lu = False
                continue
            else:
                for n in range(0,len(data),16):
                    print ' '.join(map(hex,data[n:n+16]))
                    lecture+=BADGE_CODE[data[n+2]]
                break   # Code lu
return lecture
 
if __name__ == '__main__':
print lecture_rfid()
A la commande sudo python RFDI_reader.py j'ai le message d'erreur suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
   File "RFDI_reader.py", line 19
SyntaxError: Non-ASCII character '\xc3' in file RFDI_reader.py on line 19, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
Comment savoir si mon script s'est bien connecté?
Comment puis je avoir une sortie acssii?

D'avance merci.