-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDecodeur.py
86 lines (60 loc) · 2.39 KB
/
Decodeur.py
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
# -*- coding: utf-8 -*-
def DecodeMsg(Buffer):
"""
Cette fonction assure le décodage d'un buffer. Elle decode le premier message
complet et retourne le reste du buffer. Si le buffer est incomplet pour le
décodage alors le buffer retourné sera inchangé. Si le buffer ne commence pas
par une entête de message alors le debut du buffer jusqu'à la fin d'un message
ou le début du suivant sera nettoyé.
"""
Instruction = None
# Vérification que le buffer n'est pas null
if Buffer is None or Buffer == '':
return ('', None)
# Recherche du premier caractère '{'
lpos = Buffer.find('{');
if lpos < 0:
return ('', None)
else:
Buffer = Buffer[lpos+1:];
# Recherche de la fin de l'instruction
rpos = Buffer.find('}');
if rpos < 0:
return ('{'+Buffer, None)
else:
# Décodage de l'instruction
ITemp = Buffer[:rpos].split(':')
Buffer = Buffer[rpos+1:]
# Nettoyage de la liste des instructions
for i,a in enumerate(ITemp):
ITemp[i] = a.strip()
while ITemp.count('') > 0:
ITemp.remove('')
if len(ITemp) == 0:
ITemp = None
return (Buffer, ITemp)
# ########################################################
# ## TEST Unitaires ##
# ########################################################
if __name__ == "__main__":
Msg = "BlaBla"
print(Msg," : ", DecodeMsg(Msg));
Msg = "STOP}"
print(Msg," : ", DecodeMsg(Msg));
Msg = "{STOP"
print(Msg," : ", DecodeMsg(Msg));
Msg = "{STOP}"
print(Msg," : ", DecodeMsg(Msg));
Msg = "{STOP}{START}"
print(Msg," : ", DecodeMsg(Msg));
Msg = "{ELO:192.168.10.1}"
print(Msg," : ", DecodeMsg(Msg));
Msg = "LeBlaBla{ELO:192.168.10.1}Et la j'en remet un peu"
print(Msg," : ", DecodeMsg(Msg));
Msg = "LeBlaBla{ELO:192.168.10.1}Et la j'en remet un peu"+ \
"LeBlaBla{TOTO:Param1: Param2:P3:}Et la j'en remet un peu"+ \
"zz zzz zzz {} xxxx {TITI: P01:P02 : P03 : :: } oooo"
while Msg != '':
print(Msg,end='')
Msg, Inst = DecodeMsg(Msg)
print(" : ", Inst);