MCPcopy Create free account
hub / github.com/AstroPrint/AstroBox / GCodeAnalyzer

Class GCodeAnalyzer

src/astroprint/util/gCodeAnalyzer.py:8–95  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6from sarge import run, Capture
7
8class GCodeAnalyzer(thread):
9
10 def __init__(self,filename,layersInfo,readyCallback,exceptionCallback,parent):
11
12 self._logger = logging.getLogger(__name__)
13
14 super(GCodeAnalyzer, self).__init__()
15
16 self.filename = filename
17 self.readyCallback = readyCallback
18 self.exceptionCallback = exceptionCallback
19 self.layersInfo = layersInfo
20 self.daemon = True
21
22 self.layerList = None
23 self.totalPrintTime = None
24 self.layerCount = None
25 self.size = None
26 self.layerHeight = None
27 self.totalFilament = None
28 self.parent = parent
29
30 def makeCalcs(self):
31 self.start()
32
33 def run(self):
34
35 gcodeData = []
36
37 try:
38 pipe = run(
39 ('%s/GCodeAnalyzer "%s" 1' if self.layersInfo else '%s/GCodeAnalyzer "%s"') % (
40 '/usr/bin/astroprint',
41 self.filename
42 ), stdout=Capture())
43
44 if pipe.returncode == 0:
45 try:
46 gcodeData = json.loads(pipe.stdout.text)
47
48 if self.layersInfo:
49 self.layerList = gcodeData['layers']
50
51 self.totalPrintTime = gcodeData['print_time']
52
53 self.layerCount = gcodeData['layer_count']
54
55 self.size = gcodeData['size']
56
57 self.layerHeight = gcodeData['layer_height']
58
59 self.totalFilament = None#total_filament has not got any information
60
61 self.readyCallback(self.layerList,self.totalPrintTime,self.layerCount,self.size,self.layerHeight,self.totalFilament,self.parent)
62
63
64 except ValueError:
65 self._logger.error("Bad gcode data returned: %s" % pipe.stdout.text)

Callers 2

_monitorMethod · 0.90
loadMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected