2017-09-12 6 views
0

J'ai créé un programme python pour mon pi qui détecte les chaînes de mon lecteur de carte USB (il agit comme un clavier USB) et les écrit dans un fichier. J'ai réalisé que si je suis dans le programme pour l'exécuter, le programme ne fonctionne pas. Ma conjecture est que parce que mon programme prend l'entrée brute tapée dans la console, cela ne fonctionnera pas si je l'allume par SSH. Quelqu'un peut-il m'aider à ce sujet?Lecture du lecteur de bande magnétique USB via ssh

Ci-dessous mon programme:

import datetime 
import time 

card = raw_input() 
t = datetime.datetime.now() 
while True: 
    f = open("Laptop Sign Out" + '.txt', 'a') 
    f.write("Card Number: " + card[1:10] + " Time: " + t.strftime("%m-%d-%Y $ 
    f.write('\n') 
    f.write(';') 
    f.write('\n') 
    f.close() 
    time.sleep(5) 

Répondre

0

Vous pouvez utiliser la bibliothèque evdev, ce qui permet de rediriger les événements générés dans le noyau directement au code utilisateur.

Regardez cet exemple:

>>> from evdev import InputDevice, categorize, ecodes 
>>> dev = InputDevice('/dev/input/event1') 

>>> print(dev) 
device /dev/input/event1, name "Dell Dell USB Keyboard", phys "usb-0000:00:12.1-2/input0" 

>>> for event in dev.read_loop(): 
...  if event.type == ecodes.EV_KEY: 
...   print(categorize(event)) 
... # pressing 'a' and holding 'space' 
key event at 1337016188.396030, 30 (KEY_A), down 
key event at 1337016188.492033, 30 (KEY_A), up 
key event at 1337016189.772129, 57 (KEY_SPACE), down 
key event at 1337016190.275396, 57 (KEY_SPACE), hold 
key event at 1337016190.284160, 57 (KEY_SPACE), up 

lecture supplémentaire est here

Un peu différente façon décrite here