/* * * !!!!! * NOTE: PLEASE ONLY EDIT THIS USING THE NETBEANS IDE 6.0.1 OR HIGHER!!!! * !!!!! * * ... an .xml file is associated with this class. Cheers. * * GenericExtruderTabPanel.java * * Created on 27 March 2008, 18:22 */ package org.reprap.gui.botConsole; import org.reprap.Preferences; import org.reprap.Printer; import org.reprap.utilities.Timer; import org.reprap.Extruder; import java.awt.Color; import javax.swing.JOptionPane; import javax.swing.UIManager; /** * * @author en0es */ public class GenericExtruderTabPanel extends javax.swing.JPanel { private static final long serialVersionUID = 1L; private int extruderID = 0; private boolean heatPushed = false; private double startTime = -1; private boolean ramping = false; private double startTemp = -1; private BotConsoleFrame parentBotConsoleFrame = null; private Extruder extruder; private String prefix; /** Creates new form GenericExtruderTabPanel */ public GenericExtruderTabPanel() { UIManager.put("ProgressBar.background", Color.WHITE); UIManager.put("ProgressBar.foreground", Color.BLUE); initComponents(); RampRate.setText("0.2"); // Sensible default } /** * So the BotConsoleFrame can let us know who it is * @param b */ public void setConsoleFrame(BotConsoleFrame b) { parentBotConsoleFrame = b; } private void deactivatePanel() { coolingCheck.setEnabled(false); currentTempLabel.setEnabled(false); extrudeButton.setEnabled(false); //feedstockQtyLabel.setEnabled(false); heatButton.setEnabled(false); homeAllButton.setEnabled(false); jLabel1.setEnabled(false); jLabel11.setEnabled(false); jLabel12.setEnabled(false); //jLabel4.setEnabled(false); //jLabel5.setEnabled(false); jLabel6.setEnabled(false); jLabel7.setEnabled(false); jPanel2.setEnabled(false); jPanel3.setEnabled(false); jPanel4.setEnabled(false); materialLabel.setEnabled(false); motorReverseCheck.setEnabled(false); motorSpeedField.setEnabled(false); moveToDumpButton.setEnabled(false); homeXYbutton.setEnabled(false); targetTempField.setEnabled(false); tempColor.setEnabled(false); tempProgress.setEnabled(false); valveToggleButton.setEnabled(false); RampButton.setEnabled(false); RampRate.setEnabled(false); } public Extruder getExtruder() { return extruder; } public void initialiseExtruders(int id) throws Exception { extruderID = id; prefix = "Extruder" + id + "_"; Printer p = org.reprap.Main.gui.getPrinter(); Extruder extruders[] = p.getExtruders(); extruder = extruders[extruderID]; if(!extruder.isAvailable()) { deactivatePanel(); } } public void selectExtruder() { try { org.reprap.Main.gui.getPrinter().selectExtruder(extruderID, true); } catch (Exception e) { parentBotConsoleFrame.handleException(e); } } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jLabel1 = new javax.swing.JLabel(); materialLabel = new javax.swing.JLabel(); //feedstockQtyLabel = new javax.swing.JLabel(); //jLabel4 = new javax.swing.JLabel(); //jLabel5 = new javax.swing.JLabel(); jPanel2 = new javax.swing.JPanel(); targetTempField = new javax.swing.JTextField(); jLabel7 = new javax.swing.JLabel(); currentTempLabel = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); tempProgress = new javax.swing.JProgressBar(); tempColor = new javax.swing.JPanel(); heatButton = new javax.swing.JToggleButton(); coolingCheck = new javax.swing.JCheckBox(); jLabel8 = new javax.swing.JLabel(); RampRate = new javax.swing.JTextField(); RampButton = new javax.swing.JToggleButton(); jPanel3 = new javax.swing.JPanel(); motorSpeedField = new javax.swing.JTextField(); jLabel12 = new javax.swing.JLabel(); jLabel11 = new javax.swing.JLabel(); extrudeButton = new javax.swing.JToggleButton(); valveToggleButton = new javax.swing.JToggleButton(); motorReverseCheck = new javax.swing.JCheckBox(); jPanel4 = new javax.swing.JPanel(); homeXYbutton = new javax.swing.JToggleButton(); homeAllButton = new javax.swing.JToggleButton(); moveToDumpButton = new javax.swing.JToggleButton(); jLabel1.setFont(new java.awt.Font("Tahoma", 0, 12)); jLabel1.setText("Material:"); materialLabel.setFont(new java.awt.Font("Tahoma", 0, 12)); materialLabel.setText("materialType"); //feedstockQtyLabel.setFont(new java.awt.Font("Tahoma", 0, 12)); //feedstockQtyLabel.setText("00000"); //jLabel4.setFont(new java.awt.Font("Tahoma", 0, 12)); //jLabel4.setText("Feedstock remaining:"); //jLabel5.setFont(new java.awt.Font("Tahoma", 0, 12)); //jLabel5.setText("ml"); jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Temperature (degrees Celcius)")); targetTempField.setColumns(3); targetTempField.setFont(targetTempField.getFont().deriveFont(targetTempField.getFont().getSize()+1f)); targetTempField.setText("000"); jLabel7.setFont(new java.awt.Font("Tahoma", 0, 12)); jLabel7.setText("Target temperature:"); currentTempLabel.setFont(new java.awt.Font("Tahoma", 0, 12)); currentTempLabel.setText("000"); jLabel6.setFont(new java.awt.Font("Tahoma", 0, 12)); jLabel6.setText("Current temperature:"); tempProgress.setOrientation(1); tempColor.setBackground(new java.awt.Color(255, 255, 255)); org.jdesktop.layout.GroupLayout tempColorLayout = new org.jdesktop.layout.GroupLayout(tempColor); tempColor.setLayout(tempColorLayout); tempColorLayout.setHorizontalGroup( tempColorLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(0, 52, Short.MAX_VALUE) ); tempColorLayout.setVerticalGroup( tempColorLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(0, 54, Short.MAX_VALUE) ); heatButton.setText("Switch heat on"); heatButton.setFocusCycleRoot(true); heatButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { heatButtonActionPerformed(evt); } }); coolingCheck.setFont(coolingCheck.getFont().deriveFont(coolingCheck.getFont().getSize()+1f)); coolingCheck.setText("Cooling"); coolingCheck.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { coolingCheckActionPerformed(evt); } }); jLabel8.setFont(new java.awt.Font("Tahoma", 0, 12)); jLabel8.setText("Ramp rate (C/sec):"); RampRate.setColumns(3); RampRate.setFont(RampRate.getFont().deriveFont(RampRate.getFont().getSize()+1f)); RampRate.setText("000"); RampButton.setText("Ramp"); RampButton.setFocusCycleRoot(true); RampButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { RampButtonActionPerformed(evt); } }); org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel2Layout.createSequentialGroup() .addContainerGap() .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) .add(jPanel2Layout.createSequentialGroup() .add(jLabel8) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(RampRate, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel2Layout.createSequentialGroup() .add(jLabel6) .add(18, 18, 18) .add(currentTempLabel)) .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel2Layout.createSequentialGroup() .add(6, 6, 6) .add(jLabel7) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(targetTempField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) .add(140, 140, 140) .add(RampButton) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(tempProgress, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(tempColor, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) .add(coolingCheck) .add(heatButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 141, Short.MAX_VALUE)) .addContainerGap()) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel2Layout.createSequentialGroup() .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) .add(heatButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 54, Short.MAX_VALUE) .add(org.jdesktop.layout.GroupLayout.LEADING, tempColor, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .add(org.jdesktop.layout.GroupLayout.LEADING, RampButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 54, Short.MAX_VALUE) .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel2Layout.createSequentialGroup() .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(jLabel6) .add(currentTempLabel)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(targetTempField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(jLabel7))) .add(tempProgress, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 54, Short.MAX_VALUE)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(coolingCheck) .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(RampRate, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(jLabel8))) .addContainerGap()) ); jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Extrude")); motorSpeedField.setColumns(3); motorSpeedField.setFont(motorSpeedField.getFont().deriveFont(motorSpeedField.getFont().getSize()+1f)); motorSpeedField.setText("000"); jLabel12.setFont(new java.awt.Font("Tahoma", 0, 12)); jLabel12.setText("mm/min"); jLabel11.setFont(new java.awt.Font("Tahoma", 0, 12)); jLabel11.setText("Extrude speed:"); extrudeButton.setText("Extrude"); extrudeButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { extrudeButtonActionPerformed(evt); } }); valveToggleButton.setSelected(true); valveToggleButton.setText("Close valve"); valveToggleButton.setMargin(new java.awt.Insets(2, 2, 2, 2)); valveToggleButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { valveToggleButtonActionPerformed(evt); } }); motorReverseCheck.setFont(motorReverseCheck.getFont().deriveFont(motorReverseCheck.getFont().getSize()+1f)); motorReverseCheck.setText("Reverse"); motorReverseCheck.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { motorReverseCheckActionPerformed(evt); } }); org.jdesktop.layout.GroupLayout jPanel3Layout = new org.jdesktop.layout.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jPanel3Layout.createSequentialGroup() .addContainerGap() .add(jLabel11) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(motorSpeedField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jLabel12) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 135, Short.MAX_VALUE) .add(valveToggleButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 97, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(extrudeButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 110, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) .add(motorReverseCheck) .add(13, 13, 13)) ); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(jLabel11) .add(motorSpeedField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(jLabel12) .add(extrudeButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 29, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(motorReverseCheck) .add(valveToggleButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 29, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) ); jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder("Maintenance")); homeXYbutton.setText("Home X & Y"); homeXYbutton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { homeXYbuttonActionPerformed(evt); } }); homeAllButton.setText("Home all"); homeAllButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { homeAllButtonAction(evt); } }); moveToDumpButton.setText("Move to dump point"); moveToDumpButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { moveToDumpPointAction(evt); } }); org.jdesktop.layout.GroupLayout jPanel4Layout = new org.jdesktop.layout.GroupLayout(jPanel4); jPanel4.setLayout(jPanel4Layout); jPanel4Layout.setHorizontalGroup( jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel4Layout.createSequentialGroup() .addContainerGap(275, Short.MAX_VALUE) .add(homeAllButton) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(homeXYbutton) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(moveToDumpButton) .addContainerGap()) ); jPanel4Layout.setVerticalGroup( jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(homeXYbutton) .add(moveToDumpButton) .add(homeAllButton)) ); org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addContainerGap() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jPanel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .add(layout.createSequentialGroup() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .add(jLabel1) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(materialLabel)) .add(layout.createSequentialGroup() //.add(jLabel4) .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) //.add(feedstockQtyLabel) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) //.add(jLabel5) )) .add(202, 202, 202)) .add(layout.createSequentialGroup() .add(jPanel3, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) .add(layout.createSequentialGroup() .add(jPanel4, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()))) ); layout.setVerticalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addContainerGap() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(jLabel1) .add(materialLabel)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) //.add(jLabel4) //.add(jLabel5) //.add(feedstockQtyLabel) ) .add(18, 18, 18) .add(jPanel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 99, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jPanel3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jPanel4, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addContainerGap(24, Short.MAX_VALUE)) ); }// </editor-fold>//GEN-END:initComponents private void coolingCheckActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_coolingCheckActionPerformed parentBotConsoleFrame.suspendPolling(); selectExtruder(); try { extruder.setCooler(coolingCheck.isSelected(), true); } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Exception setting cooler: " + ex); ex.printStackTrace(); } parentBotConsoleFrame.resumePolling(); }//GEN-LAST:event_coolingCheckActionPerformed private void motorReverseCheckActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_motorReverseCheckActionPerformed // TODO add your handling code here: }//GEN-LAST:event_motorReverseCheckActionPerformed private void heatButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_heatButtonActionPerformed parentBotConsoleFrame.suspendPolling(); selectExtruder(); if (heatPushed) { rampOff(); try { extruder.setTemperature(0, false); } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Exception setting temperature: " + ex); ex.printStackTrace(); } heatButton.setText("Switch heater on"); heatPushed = false; } else { try { extruder.setTemperature(Integer.parseInt(targetTempField.getText()), false); } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Exception setting temperature: " + ex); ex.printStackTrace(); } heatButton.setText("Switch heater off"); heatPushed = true; } parentBotConsoleFrame.resumePolling(); }//GEN-LAST:event_heatButtonActionPerformed private void setExtruderSpeed() { try { extruder.setExtrusion(extruding?Double.parseDouble(motorSpeedField.getText()):0, motorReverseCheck.isSelected()); } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Extruder exception: " + ex); ex.printStackTrace(); } } private boolean extruding = false; private void extrudeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_extrudeButtonActionPerformed if (extruding) { extruding = false; extrudeButton.setText("Extrude"); } else { extruding = true; extrudeButton.setText("Stop extruding"); //System.out.println("Extruding at speed: " + motorSpeedField.getText()); } parentBotConsoleFrame.suspendPolling(); selectExtruder(); setExtruderSpeed(); if(extruder.get5D() && extruding) { try { extruder.getPrinter().machineWait(5000, false, true); } catch (Exception e) { parentBotConsoleFrame.handleException(e); } extruding = false; setExtruderSpeed(); extrudeButton.setText("Extrude"); } parentBotConsoleFrame.resumePolling(); }//GEN-LAST:event_extrudeButtonActionPerformed private void homeXYbuttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_homeXYbuttonActionPerformed // Reprap.finishedLayer(1); // Reprap.betweenLayers(layerNumber); BotConsoleFrame.getXYZTabPanel().homeXY(); }//GEN-LAST:event_homeXYbuttonActionPerformed private void valveToggleButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_valveToggleButtonActionPerformed parentBotConsoleFrame.suspendPolling(); selectExtruder(); if (valveToggleButton.isSelected()) { try { extruder.setValve(true); valveToggleButton.setText("Shut valve"); } catch (Exception ex) {} } else { try { extruder.setValve(false); valveToggleButton.setText("Open valve"); } catch (Exception ex) {} } parentBotConsoleFrame.resumePolling(); }//GEN-LAST:event_valveToggleButtonActionPerformed private void rampOff() { RampButton.setText("Ramp"); startTime = -1; ramping = false; } private void RampButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_RampButtonActionPerformed if (ramping) rampOff(); else { heatButton.setText("Switch heat off"); //GregorianCalendar cal = new GregorianCalendar(); //Date d = cal.getTime(); startTime = Timer.elapsed();//d.getTime() + cal.getTimeZone().getOffset(d.getTime()); try { startTemp = extruder.getTemperature() - 1; } catch (Exception e) { parentBotConsoleFrame.handleException(e); } // Start a bit below where we are for safety RampButton.setText("Ramping"); ramping = true; } }//GEN-LAST:event_RampButtonActionPerformed private void homeAllButtonAction(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_homeAllButtonAction BotConsoleFrame.getXYZTabPanel().homeAll(); }//GEN-LAST:event_homeAllButtonAction private void moveToDumpPointAction(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_moveToSwapPointAction double z = BotConsoleFrame.getXYZTabPanel().getPrinter().getZ(); if(z < 0.1) { z = 1.0; BotConsoleFrame.getXYZTabPanel().goTo(BotConsoleFrame.getXYZTabPanel().getPrinter().getX(), BotConsoleFrame.getXYZTabPanel().getPrinter().getY(), z); } BotConsoleFrame.getXYZTabPanel().goTo(BotConsoleFrame.getXYZTabPanel().getPrinter().getDumpX(), BotConsoleFrame.getXYZTabPanel().getPrinter().getDumpY(), z); }//GEN-LAST:event_moveToSwapPointAction public double getExtruderSpeed() { return Double.parseDouble(motorSpeedField.getText()); } public void setPrefs() throws Exception { setMaterialLabel(Preferences.loadGlobalString(prefix + "MaterialType(name)")); setMotorSpeedField(Preferences.loadGlobalInt(prefix + "ExtrusionSpeed(mm/minute)")); setTargetTempField(Preferences.loadGlobalInt(prefix + "ExtrusionTemp(C)")); } private void setMaterialLabel(String materialType) { materialLabel.setText(materialType); } private void setMotorSpeedField(int speed) { motorSpeedField.setText(""+speed); } private void setTargetTempField(int temp) { targetTempField.setText(""+temp); } private int currentTemp; private final int BURNING_TEMP = 70; private double colorFactor = 0; private Color c; public void refreshTemperature() { try { currentTemp = (int)Math.round(extruder.getTemperature()); } catch (Exception e) { parentBotConsoleFrame.handleException(e); } currentTempLabel.setText("" + currentTemp); tempProgress.setMinimum(0); tempProgress.setMaximum(Integer.parseInt(targetTempField.getText())); tempProgress.setValue(currentTemp); colorFactor = currentTemp/(BURNING_TEMP*1.0); if (colorFactor > 1) colorFactor = 1; if (colorFactor < 0) colorFactor = 0; int red = (int)(colorFactor * 255.0); int blue = 255-(int)(colorFactor * 255.0); c = new Color(red, 0, blue); tempColor.setBackground(c); if(!ramping) return; if(currentTemp >= Integer.parseInt(targetTempField.getText())) { rampOff(); return; } //GregorianCalendar cal = new GregorianCalendar(); //Date d = cal.getTime(); double elapsed = Timer.elapsed() - startTime; //d.getTime() + cal.getTimeZone().getOffset(d.getTime()) - startTime; double newTarget = elapsed*Double.parseDouble(RampRate.getText()) + startTemp; if(newTarget >= Integer.parseInt(targetTempField.getText())) { rampOff(); return; } try { //System.out.println("elapsed: " + elapsed*0.001 + " target: " + newTarget); extruder.setTemperature(newTarget, false); } catch (Exception ex) {} } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JToggleButton RampButton; private javax.swing.JTextField RampRate; private javax.swing.JCheckBox coolingCheck; private javax.swing.JLabel currentTempLabel; private javax.swing.JToggleButton extrudeButton; //private javax.swing.JLabel feedstockQtyLabel; private javax.swing.JToggleButton heatButton; private javax.swing.JToggleButton homeAllButton; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; //private javax.swing.JLabel jLabel4; //private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JLabel materialLabel; private javax.swing.JCheckBox motorReverseCheck; private javax.swing.JTextField motorSpeedField; private javax.swing.JToggleButton moveToDumpButton; private javax.swing.JToggleButton homeXYbutton; private javax.swing.JTextField targetTempField; private javax.swing.JPanel tempColor; private javax.swing.JProgressBar tempProgress; private javax.swing.JToggleButton valveToggleButton; // End of variables declaration//GEN-END:variables }