Skip to content

Commit

Permalink
Add camera model, controls, config
Browse files Browse the repository at this point in the history
  • Loading branch information
martymcguire committed Jul 13, 2010
1 parent 4b706bc commit 6b967b4
Show file tree
Hide file tree
Showing 7 changed files with 133 additions and 4 deletions.
32 changes: 31 additions & 1 deletion machines.xml.dist
Expand Up @@ -17,7 +17,7 @@
</driver>
</machine>
<!-- Cupcake prototype description -->
<machine>
<machine>
<name>Cupcake CNC</name>
<geometry type="cartesian">
<!-- different pulleys on X and Y axii -->
Expand Down Expand Up @@ -163,4 +163,34 @@ M18
M18
</cooldown>
</machine>
<!-- CupCake with camera attached -->
<machine experimental="1">
<name>EXPERIMENTAL - Cupcake CNC w/HBP and remote camera</name>
<geometry type="cartesian">
<!-- different pulleys on X and Y axii -->
<axis id="x" length="300" maxfeedrate="5000" scale="11.767463"/>
<axis id="y" length="300" maxfeedrate="5000" scale="11.767463"/>
<axis id="z" length="300" maxfeedrate="150" scale="320"/>
</geometry>
<tools>
<tool name="Pinch Wheel Extruder v1.1" type="extruder" material="abs" motor="true" floodcoolant="false" mistcoolant="false" fan="true" valve="false" collet="false" heater="true" heatedplatform="true" camera="true"/>
</tools>
<clamps></clamps>
<driver name="sanguino3g">
<!-- optional, defaults to first serial port found. <portname>COM1</portname> -->
<!-- required: we need 8 bit and 38400 baud. -->
<rate>38400</rate>
<parity>8</parity>
<!-- optional, defaults to 1. <databits>1</databits> -->
<!-- optional, defaults to N. <stopbits>N</stopbits> -->
<debuglevel>0</debuglevel>
</driver>
<warmup>
</warmup>
<cooldown>
(Turn off steppers after a build.)
M18
</cooldown>
</machine>
<!-- Cupcake prototype description -->
</machines>
30 changes: 30 additions & 0 deletions src/replicatorg/app/ui/controlpanel/ExtruderPanel.java
Expand Up @@ -382,6 +382,31 @@ public ExtruderPanel(MachineController machine, ToolModel t) {
add(colletLabel);
add(colletCheck,"wrap");
}

// camera controls
if (t.hasCamera()) {
String cameraString = "Camera";
String enableString = "enable";
Element xml = findMappingNode(t.getXml(),"camera");
if (xml != null) {
cameraString = xml.getAttribute("name");
enableString = xml.getAttribute("actuated");
}
JLabel cameraLabel = new JLabel(cameraString);
cameraLabel.setMinimumSize(labelMinimumSize);
cameraLabel.setMaximumSize(labelMinimumSize);
cameraLabel.setPreferredSize(labelMinimumSize);
cameraLabel.setHorizontalAlignment(JLabel.LEFT);

JCheckBox cameraCheck = new JCheckBox(enableString);
cameraCheck.setName("camera-check");
cameraCheck.addItemListener(this);

add(cameraLabel);
add(cameraCheck,"wrap");
}


}

private Element findMappingNode(Node xml,String portName) {
Expand Down Expand Up @@ -471,6 +496,8 @@ else if (name.equals("valve-check"))
driver.openValve();
else if (name.equals("collet-check"))
driver.openCollet();
else if (name.equals("camera-check"))
driver.triggerCamera();
else
Base.logger.warning("checkbox selected: " + source.getName());
} else {
Expand All @@ -488,6 +515,8 @@ else if (name.equals("valve-check"))
driver.closeValve();
else if (name.equals("collet-check"))
driver.closeCollet();
else if (name.equals("camera-check"))
driver.stopTriggeringCamera();
// else
// System.out.println("checkbox deselected: " + source.getName());
}
Expand All @@ -502,6 +531,7 @@ public void actionPerformed(ActionEvent e) {
handleChangedTextField(source);
source.selectAll();
}

}


Expand Down
6 changes: 6 additions & 0 deletions src/replicatorg/drivers/Driver.java
Expand Up @@ -296,6 +296,12 @@ public interface Driver {

public void closeCollet();

/***************************************************************************
* Camera interface functions
**************************************************************************/
public void triggerCamera();
public void stopTriggeringCamera();

/***************************************************************************
* Pause/unpause functionality for asynchronous devices
**************************************************************************/
Expand Down
10 changes: 10 additions & 0 deletions src/replicatorg/drivers/DriverBaseImplementation.java
Expand Up @@ -539,6 +539,16 @@ public void closeCollet() {
machine.currentTool().closeCollet();
}

/***************************************************************************
* Camera interface functions
**************************************************************************/
public void triggerCamera() {
machine.currentTool().triggerCamera();
}
public void stopTriggeringCamera() {
machine.currentTool().stopTriggeringCamera();
}

/***************************************************************************
* Pause/unpause functionality for asynchronous devices
**************************************************************************/
Expand Down
24 changes: 24 additions & 0 deletions src/replicatorg/drivers/gen3/Sanguino3GDriver.java
Expand Up @@ -953,6 +953,30 @@ public void closeCollet() {
super.closeCollet();
}

public void triggerCamera() {
PacketBuilder pb = new PacketBuilder(MotherboardCommandCode.TOOL_COMMAND.getCode());
pb.add8((byte) machine.currentTool().getIndex());
pb.add8(ToolCommandCode.TOGGLE_CAMERA.getCode());
pb.add8((byte) 1); // payload length
pb.add8((byte) 1); // enable
runCommand(pb.getPacket());
Base.logger.log(Level.INFO,"Triggering camera...");

super.triggerCamera();
}

public void stopTriggeringCamera() {
PacketBuilder pb = new PacketBuilder(MotherboardCommandCode.TOOL_COMMAND.getCode());
pb.add8((byte) machine.currentTool().getIndex());
pb.add8(ToolCommandCode.TOGGLE_CAMERA.getCode());
pb.add8((byte) 1); // payload length
pb.add8((byte) 0); // disable
runCommand(pb.getPacket());
Base.logger.log(Level.INFO,"Stopping camera...");

super.stopTriggeringCamera();
}

/***************************************************************************
* Pause/unpause functionality for asynchronous devices
**************************************************************************/
Expand Down
6 changes: 4 additions & 2 deletions src/replicatorg/drivers/gen3/ToolCommandCode.java
Expand Up @@ -32,11 +32,13 @@ public enum ToolCommandCode {
GET_PLATFORM_TEMP(30),
SET_PLATFORM_TEMP(31),
GET_SP(32),
GET_PLATFORM_SP(33);
GET_PLATFORM_SP(33),

TOGGLE_CAMERA(34);

private int code;
private ToolCommandCode(int code) {
this.code = code;
}
int getCode() { return code; }
}
}
29 changes: 28 additions & 1 deletion src/replicatorg/machine/model/ToolModel.java
Expand Up @@ -77,6 +77,7 @@ public class ToolModel
protected boolean fanEnabled;
protected boolean valveOpen;
protected boolean colletOpen;
protected boolean triggeringCamera;

//capabilities
protected boolean hasMotor = false;
Expand All @@ -88,6 +89,7 @@ public class ToolModel
protected boolean hasFan = false;
protected boolean hasValve = false;
protected boolean hasCollet = false;
protected boolean hasCamera = false;

/*************************************
* Creates the model object.
Expand Down Expand Up @@ -125,6 +127,7 @@ private void _initialize()
disableFan();
closeValve();
closeCollet();
stopTriggeringCamera();
}

//load data from xml config
Expand Down Expand Up @@ -233,6 +236,11 @@ public void loadXML(Node node)
if (Boolean.parseBoolean(n) || Integer.parseInt(n) == 1)
hasHeatedPlatform = true;
} catch (Exception e) {} //ignore boolean/integer parse errors
n = XML.getAttributeValue(xml, "camera");
try {
if (Boolean.parseBoolean(n) || Integer.parseInt(n) == 1)
hasCamera = true;
} catch (Exception e) {} //ignore boolean/integer parse errors

//hah, all this for a debug string... lol.
String result = "Loading " + type + " '" + name + "': ";
Expand All @@ -256,7 +264,8 @@ public void loadXML(Node node)
result += "heater, ";
if (hasHeatedPlatform)
result += "hasHeatedPlatform, ";
//System.out.println(result);
if (hasCamera)
result += "camera, ";
}

/*************************************
Expand Down Expand Up @@ -500,6 +509,11 @@ public boolean hasHeatedPlatform()
return hasHeatedPlatform;
}

public boolean hasCamera()
{
return hasCamera;
}

/*************************************
* Flood Coolant interface functions
*************************************/
Expand Down Expand Up @@ -615,10 +629,23 @@ public boolean hasCollet()
return hasCollet;
}

/*************************************
* Camera interface functions
*************************************/
public void triggerCamera()
{
triggeringCamera = true;
}
public void stopTriggeringCamera()
{
triggeringCamera = false;
}

/**
* Retrieve XML node. A temporary hack until we have more robust tool models.
*/
public Node getXml() {
return xml;
}

}

0 comments on commit 6b967b4

Please sign in to comment.