-
-
Notifications
You must be signed in to change notification settings - Fork 38
/
Copy pathgrblComStack.py
72 lines (61 loc) · 2.83 KB
/
grblComStack.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
# -*- coding: UTF-8 -*-
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' '
' Copyright 2018-2024 Gauthier Brière (gauthier.briere "at" gmail.com) '
' '
' This file is part of cn5X++ '
' '
' cn5X++ is free software: you can redistribute it and/or modify it '
' under the terms of the GNU General Public License as published by '
' the Free Software Foundation, either version 3 of the License, or '
' (at your option) any later version. '
' '
' cn5X++ is distributed in the hope that it will be useful, but '
' WITHOUT ANY WARRANTY; without even the implied warranty of '
' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the '
' GNU General Public License for more details. '
' '
' You should have received a copy of the GNU General Public License '
' along with this program. If not, see <http://www.gnu.org/licenses/>. '
' '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
from PyQt6.QtCore import QObject, QThread, QEventLoop, pyqtSignal, pyqtSlot
from cn5X_config import *
class grblStack():
'''
Gestionnaire de file d'attente du port serie.
Stocke des couples (CommandeGrbl, flag), soit en mode FiFo (addFiFo()), soit en mode LiFo (addLiFo())
et les renvoie dans l'ordre choisi avec la fonction pop().
'''
def __init__(self):
self.__data = []
def isEmpty(self):
return len(self.__data) == 0
def count(self):
return len(self.__data)
def addFiFo(self, item, flag = COM_FLAG_NO_FLAG):
''' Ajoute un element en mode FiFO, l'element ajoute sera le dernier a sortir
'''
self.__data.append((item, flag))
def addLiFo(self, item, flag = COM_FLAG_NO_FLAG):
''' Ajoute un element en mode LiFO, l'element ajoute sera le premier a sortir
'''
self.__data.insert(0, (item, flag))
def next(self):
''' Renvoie le prochain element de la Queue sans depiler (le supprimer) ou None si la liste est vide.
'''
if len(self.__data) > 0:
return self.__data[0]
else:
return None
def pop(self):
''' Depile et renvoie le premier element de la liste ou None si la liste est vide.
'''
if len(self.__data) > 0:
return self.__data.pop(0)
else:
return None
def clear(self):
''' Vide toute la pile
'''
self.__data.clear()