bonjour debut en python, je voudrais creer un service qui enregistre dans un fichier les data recuperer par un lecteur RFID dans un fichier.
j'ai creer le fichier en python, quand je le lance via python il fonctionne bien.
j'ai recuperer les information pour creer un service sur ce model :https://www.gerbelotbarillon.com/python-win-service.php.
j'ai donc essayer de fusionner mon programme avec les class necessaire pour faire tourné mon service
voici mon fichier :
j'arrive a a creer mon service, a le demarré mais il plante:
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118 import time import sys import win32serviceutil # ServiceFramework and commandline helper import win32service # Events import servicemanager # Simple setup and logging import pywinusb.hid as hid import getpass import time import csv DEVICE_DEFAULT_VID = 0xffff DEVICE_DEFAULT_PID = 0x0035 count = 0 keys3 = [] key_text = "" class MyService: """Silly little application stub""" def stop(self): """Stop the service""" self.running = False def run(self): """Main service loop. This is where work is done!""" self.running = True while self.running: main() class MyServiceFramework(win32serviceutil.ServiceFramework): _svc_name_ = 'MyService' _svc_display_name_ = 'My Service display name' def SvcStop(self): """Stop the service""" self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) self.service_impl.stop() self.ReportServiceStatus(win32service.SERVICE_STOPPED) def SvcDoRun(self): """Start the service; does not return until stopped""" self.ReportServiceStatus(win32service.SERVICE_START_PENDING) self.service_impl = MyService() self.ReportServiceStatus(win32service.SERVICE_RUNNING) # Run the service self.service_impl.run() def init(): if len(sys.argv) == 1: servicemanager.Initialize() servicemanager.PrepareToHostSingle(MyServiceFramework) servicemanager.StartServiceCtrlDispatcher() else: win32serviceutil.HandleCommandLine(MyServiceFramework) 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 ) 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.open() return hid_device def replace_characters(data): data = data.replace( "&","1") data = data.replace( "é","2") data = data.replace( '"',"3") data = data.replace( "'","4") data = data.replace( "(","5") data = data.replace( "-","6") data = data.replace( "è","7") data = data.replace( "_","8") data = data.replace( "ç","9") data = data.replace( "à","0") return data def main(verbose=True): hid_device = setup_hiddevice() compteur=0 while compteur < 50 : #try: print ("-") data = hid_device.read(0x81,9,timeout=10000) print (data) print ("+") print("Fin") while (True): keys = getpass.getpass("Swipe Card") key_text = replace_characters(keys) print ("data lu-->"+keys) print ("data modifié-->"+key_text) print() with open('C:\\python\badgage.csv', 'a') as f: writer = csv.writer(f) writer.writerow(key_text) time.sleep(1) if __name__ == '__main__': init()
merci pour toute l'aide que vous pourriez m'apporterC:\python\service2>dist\service_test2.exe debug
Debugging service MyService - press Ctrl+C to stop.
scan_hiddevice: No device connected.
here
Traceback (most recent call last):
File "service_test2.py", line 118, in <module>
init()
File "service_test2.py", line 61, in init
win32serviceutil.HandleCommandLine(MyServiceFramework)
File "win32serviceutil.py", line 812, in HandleCommandLine
File "win32serviceutil.py", line 602, in DebugService
File "win32serviceutil.py", line 1067, in SvcRun
File "service_test2.py", line 52, in SvcDoRun
self.service_impl.run()
File "service_test2.py", line 32, in run
main()
^^^^^^
File "service_test2.py", line 96, in main
hid_device = setup_hiddevice()
^^^^^^^^^^^^^^^^^
File "service_test2.py", line 79, in setup_hiddevice
hid_device.open()
^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'open'
[28368] Failed to execute script 'service_test2' due to unhandled exception!
C:\python\service2>
bonne journée
Christophe
Partager