Added terminal tab to printer interface.
parent
42e1c34cc9
commit
25e68caae8
|
@ -27,7 +27,9 @@ def startPrintInterface(filename):
|
||||||
printWindowHandle.Show(True)
|
printWindowHandle.Show(True)
|
||||||
printWindowHandle.Raise()
|
printWindowHandle.Raise()
|
||||||
printWindowHandle.OnConnect(None)
|
printWindowHandle.OnConnect(None)
|
||||||
printWindowHandle.LoadGCodeFile(filename)
|
t = threading.Thread(target=printWindowHandle.LoadGCodeFile,args=(filename,))
|
||||||
|
t.daemon = True
|
||||||
|
t.start()
|
||||||
app.MainLoop()
|
app.MainLoop()
|
||||||
|
|
||||||
class printProcessMonitor():
|
class printProcessMonitor():
|
||||||
|
@ -91,6 +93,8 @@ class printWindow(wx.Frame):
|
||||||
self.feedrateRatioFill = 1.0
|
self.feedrateRatioFill = 1.0
|
||||||
self.feedrateRatioSupport = 1.0
|
self.feedrateRatioSupport = 1.0
|
||||||
self.pause = False
|
self.pause = False
|
||||||
|
self.termHistory = []
|
||||||
|
self.termHistoryIdx = 0
|
||||||
|
|
||||||
#self.SetIcon(icon.getMainIcon())
|
#self.SetIcon(icon.getMainIcon())
|
||||||
|
|
||||||
|
@ -205,6 +209,24 @@ class printWindow(wx.Frame):
|
||||||
|
|
||||||
nb.AddPage(self.speedPanel, 'Speed')
|
nb.AddPage(self.speedPanel, 'Speed')
|
||||||
|
|
||||||
|
self.termPanel = wx.Panel(nb)
|
||||||
|
sizer = wx.GridBagSizer(2, 2)
|
||||||
|
self.termPanel.SetSizer(sizer)
|
||||||
|
|
||||||
|
f = wx.Font(8, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False)
|
||||||
|
self.termLog = wx.TextCtrl(self.termPanel, style=wx.TE_MULTILINE|wx.TE_DONTWRAP)
|
||||||
|
self.termLog.SetFont(f)
|
||||||
|
self.termLog.SetEditable(0)
|
||||||
|
self.termInput = wx.TextCtrl(self.termPanel, style=wx.TE_PROCESS_ENTER)
|
||||||
|
self.termInput.SetFont(f)
|
||||||
|
|
||||||
|
sizer.Add(self.termLog, pos=(0,0),flag=wx.EXPAND)
|
||||||
|
sizer.Add(self.termInput, pos=(1,0),flag=wx.EXPAND)
|
||||||
|
sizer.AddGrowableCol(0)
|
||||||
|
sizer.AddGrowableRow(0)
|
||||||
|
|
||||||
|
nb.AddPage(self.termPanel, 'Term')
|
||||||
|
|
||||||
self.sizer.AddGrowableRow(3)
|
self.sizer.AddGrowableRow(3)
|
||||||
self.sizer.AddGrowableCol(0)
|
self.sizer.AddGrowableCol(0)
|
||||||
|
|
||||||
|
@ -222,6 +244,8 @@ class printWindow(wx.Frame):
|
||||||
self.Bind(wx.EVT_SPINCTRL, self.OnSpeedChange, self.innerWallSpeedSelect)
|
self.Bind(wx.EVT_SPINCTRL, self.OnSpeedChange, self.innerWallSpeedSelect)
|
||||||
self.Bind(wx.EVT_SPINCTRL, self.OnSpeedChange, self.fillSpeedSelect)
|
self.Bind(wx.EVT_SPINCTRL, self.OnSpeedChange, self.fillSpeedSelect)
|
||||||
self.Bind(wx.EVT_SPINCTRL, self.OnSpeedChange, self.supportSpeedSelect)
|
self.Bind(wx.EVT_SPINCTRL, self.OnSpeedChange, self.supportSpeedSelect)
|
||||||
|
self.Bind(wx.EVT_TEXT_ENTER, self.OnTermEnterLine, self.termInput)
|
||||||
|
self.termInput.Bind(wx.EVT_CHAR, self.OnTermKey)
|
||||||
|
|
||||||
self.Layout()
|
self.Layout()
|
||||||
self.Fit()
|
self.Fit()
|
||||||
|
@ -242,7 +266,9 @@ class printWindow(wx.Frame):
|
||||||
|
|
||||||
def UpdateProgress(self):
|
def UpdateProgress(self):
|
||||||
status = ""
|
status = ""
|
||||||
if self.gcode != None:
|
if self.gcode == None:
|
||||||
|
status += "Loading gcode...\n"
|
||||||
|
else:
|
||||||
status += "Filament: %.2fm %.2fg\n" % (self.gcode.extrusionAmount / 1000, self.gcode.calculateWeight() * 1000)
|
status += "Filament: %.2fm %.2fg\n" % (self.gcode.extrusionAmount / 1000, self.gcode.calculateWeight() * 1000)
|
||||||
cost = self.gcode.calculateCost()
|
cost = self.gcode.calculateCost()
|
||||||
if cost != False:
|
if cost != False:
|
||||||
|
@ -326,6 +352,33 @@ class printWindow(wx.Frame):
|
||||||
self.feedrateRatioFill = self.fillSpeedSelect.GetValue() / 100.0
|
self.feedrateRatioFill = self.fillSpeedSelect.GetValue() / 100.0
|
||||||
self.feedrateRatioSupport = self.supportSpeedSelect.GetValue() / 100.0
|
self.feedrateRatioSupport = self.supportSpeedSelect.GetValue() / 100.0
|
||||||
|
|
||||||
|
def AddTermLog(self, line):
|
||||||
|
self.termLog.AppendText(line)
|
||||||
|
|
||||||
|
def OnTermEnterLine(self, e):
|
||||||
|
line = self.termInput.GetValue()
|
||||||
|
if line == '':
|
||||||
|
return
|
||||||
|
self.termLog.AppendText('>%s\n' % (line))
|
||||||
|
self.sendCommand(line)
|
||||||
|
self.termHistory.append(line)
|
||||||
|
self.termHistoryIdx = len(self.termHistory)
|
||||||
|
self.termInput.SetValue('')
|
||||||
|
|
||||||
|
def OnTermKey(self, e):
|
||||||
|
if len(self.termHistory) > 0:
|
||||||
|
if e.GetKeyCode() == wx.WXK_UP:
|
||||||
|
self.termHistoryIdx = self.termHistoryIdx - 1
|
||||||
|
if self.termHistoryIdx < 0:
|
||||||
|
self.termHistoryIdx = len(self.termHistory) - 1
|
||||||
|
self.termInput.SetValue(self.termHistory[self.termHistoryIdx])
|
||||||
|
if e.GetKeyCode() == wx.WXK_DOWN:
|
||||||
|
self.termHistoryIdx = self.termHistoryIdx - 1
|
||||||
|
if self.termHistoryIdx >= len(self.termHistory):
|
||||||
|
self.termHistoryIdx = 0
|
||||||
|
self.termInput.SetValue(self.termHistory[self.termHistoryIdx])
|
||||||
|
e.Skip()
|
||||||
|
|
||||||
def LoadGCodeFile(self, filename):
|
def LoadGCodeFile(self, filename):
|
||||||
if self.printIdx != None:
|
if self.printIdx != None:
|
||||||
return
|
return
|
||||||
|
@ -345,12 +398,13 @@ class printWindow(wx.Frame):
|
||||||
gcode = gcodeInterpreter.gcode()
|
gcode = gcodeInterpreter.gcode()
|
||||||
gcode.loadList(gcodeList)
|
gcode.loadList(gcodeList)
|
||||||
print "Loaded: %s (%d)" % (filename, len(gcodeList))
|
print "Loaded: %s (%d)" % (filename, len(gcodeList))
|
||||||
self.progress.SetRange(len(gcodeList))
|
|
||||||
self.gcode = gcode
|
self.gcode = gcode
|
||||||
self.gcodeList = gcodeList
|
self.gcodeList = gcodeList
|
||||||
self.typeList = typeList
|
self.typeList = typeList
|
||||||
self.UpdateButtonStates()
|
|
||||||
self.UpdateProgress()
|
wx.CallAfter(self.progress.SetRange, len(gcodeList))
|
||||||
|
wx.CallAfter(self.UpdateButtonStates)
|
||||||
|
wx.CallAfter(self.UpdateProgress)
|
||||||
|
|
||||||
def sendCommand(self, cmd):
|
def sendCommand(self, cmd):
|
||||||
if self.machineConnected:
|
if self.machineConnected:
|
||||||
|
@ -385,22 +439,24 @@ class printWindow(wx.Frame):
|
||||||
self.machineConnected = False
|
self.machineConnected = False
|
||||||
wx.CallAfter(self.UpdateButtonStates)
|
wx.CallAfter(self.UpdateButtonStates)
|
||||||
return
|
return
|
||||||
|
if line == '': #When we have a communication "timeout" and we're not sending gcode, then read the temperature.
|
||||||
|
if self.printIdx == None or self.pause:
|
||||||
|
self.machineCom.sendCommand("M105")
|
||||||
if self.machineConnected:
|
if self.machineConnected:
|
||||||
while self.sendCnt > 0 and not self.pause:
|
while self.sendCnt > 0 and not self.pause:
|
||||||
self.sendLine(self.printIdx)
|
self.sendLine(self.printIdx)
|
||||||
self.printIdx += 1
|
self.printIdx += 1
|
||||||
self.sendCnt -= 1
|
self.sendCnt -= 1
|
||||||
elif line.startswith("start"):
|
if line.startswith("start"):
|
||||||
self.machineConnected = True
|
self.machineConnected = True
|
||||||
wx.CallAfter(self.UpdateButtonStates)
|
wx.CallAfter(self.UpdateButtonStates)
|
||||||
if 'T:' in line:
|
elif 'T:' in line:
|
||||||
self.temp = float(re.search("[0-9\.]*", line.split('T:')[1]).group(0))
|
self.temp = float(re.search("[0-9\.]*", line.split('T:')[1]).group(0))
|
||||||
if 'B:' in line:
|
if 'B:' in line:
|
||||||
self.bedTemp = float(re.search("[0-9\.]*", line.split('B:')[1]).group(0))
|
self.bedTemp = float(re.search("[0-9\.]*", line.split('B:')[1]).group(0))
|
||||||
wx.CallAfter(self.UpdateProgress)
|
wx.CallAfter(self.UpdateProgress)
|
||||||
if line == '': #When we have a communication "timeout" and we're not sending gcode, then read the temperature.
|
elif line.strip() != 'ok':
|
||||||
if self.printIdx == None or self.pause:
|
wx.CallAfter(self.AddTermLog, line)
|
||||||
self.machineCom.sendCommand("M105")
|
|
||||||
if self.printIdx != None:
|
if self.printIdx != None:
|
||||||
if line.startswith("ok"):
|
if line.startswith("ok"):
|
||||||
if len(self.sendList) > 0:
|
if len(self.sendList) > 0:
|
||||||
|
|
|
@ -34,7 +34,7 @@ def baudrateList():
|
||||||
|
|
||||||
class VirtualPrinter():
|
class VirtualPrinter():
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.readList = ['start\n']
|
self.readList = ['start\n', 'Marlin: Virtual Marlin!\n']
|
||||||
self.temp = 0.0
|
self.temp = 0.0
|
||||||
self.targetTemp = 0.0
|
self.targetTemp = 0.0
|
||||||
self.bedTemp = 1.0
|
self.bedTemp = 1.0
|
||||||
|
@ -55,7 +55,7 @@ class VirtualPrinter():
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
if 'M105' in data:
|
if 'M105' in data:
|
||||||
self.readList.append("ok T:%f /%f B:%f /%f @:64\n" % (self.temp, self.targetTemp, self.bedTemp, self.bedTargetTemp))
|
self.readList.append("ok T:%.2f /%.2f B:%.2f /%.2f @:64\n" % (self.temp, self.targetTemp, self.bedTemp, self.bedTargetTemp))
|
||||||
else:
|
else:
|
||||||
self.readList.append("ok\n")
|
self.readList.append("ok\n")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue