<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel>
        <title>Reprap Forums - Software</title>
        <description>Here is where to chat about software. RepRap host stuff, PIC/Arduino firmware, AoI, and related stuff.</description>
        <link>http://dev.forums.reprap.org/list.php?12</link>
        <lastBuildDate>Sat, 21 Nov 2009 04:45:36 -0800</lastBuildDate>
        <generator>Phorum 5.2.11</generator>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,30293,30293#msg-30293</guid>
            <title>Unable to open some files in AOI (10 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,30293,30293#msg-30293</link>
            <description><![CDATA[ When I try and open some Mendel's files in Art Of Illusion, e.g. x-carriage-upper_1off.aoi, I get this error:<br />
<br />
<pre class="bbcode">
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
	at artofillusion.object.TriangleMesh.setShape(TriangleMesh.java:536)
	at artofillusion.object.TriangleMesh.<init>(TriangleMesh.java:268)
	at artofillusion.object.CSGModeller.getMesh(CSGModeller.java:275)
	at artofillusion.object.CSGObject.convertToTriangleMesh(CSGObject.java:233)
	at artofillusion.object.CSGObject.convertToTriangleMesh(CSGObject.java:230)
	at artofillusion.object.CSGObject.cacheMeshes(CSGObject.java:296)
	at artofillusion.object.CSGObject.getWireframeMesh(CSGObject.java:288)
	at artofillusion.object.CSGObject.findBounds(CSGObject.java:155)
	at artofillusion.object.CSGObject.getBounds(CSGObject.java:137)</pre>
<br />
I run Linux Ubuntu 9.10 and Sun Java 6 (whith 2MB ram). Does anyone understand what happens?<br />
<br />
Gérard]]></description>
            <dc:creator>gerard94</dc:creator>
            <category>Software</category>
            <pubDate>Fri, 20 Nov 2009 13:40:26 -0800</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,30277,30277#msg-30277</guid>
            <title>RepRap Host Will not start (1 reply)</title>
            <link>http://dev.forums.reprap.org/read.php?12,30277,30277#msg-30277</link>
            <description><![CDATA[ Tonight I installed the 5D firmware on my reprap motherboard and extruder controller, and am tweaking the machine to get ready to print. The host software was launching no problem, the RepRap was taking commands, the extruder was working etc. I stopped the program and restarted it but now it won't start. The first time it tried to load the host it said something to the effect of "since you have changed your machine type the host will have to restart" Now It loads the command prompt but then just gives me this.<br />
<br />
<br />
Native lib Version = RXTX-2.1-7<br />
Java lib Version   = RXTX-2.1-7<br />
comms: tx 0-&gt;0: 0  ( = 0 ) [0.002s/-1258606027994ms]<br />
comms: tx 0-&gt;0: 0  ( = 0 ) [0.411s/409ms]<br />
comms: tx 0-&gt;0: 0  ( = 0 ) [0.819s/408ms]<br />
comms: tx 0-&gt;0: 0  ( = 0 ) [1.227s/408ms]<br />
comms: tx 0-&gt;0: 0  ( = 0 ) [2.035s/808ms]<br />
comms: tx 0-&gt;0: 0  ( = 0 ) [2.847s/812ms]<br />
comms: tx 0-&gt;0: 0  ( = 0 ) [3.257s/410ms]<br />
comms: tx 0-&gt;0: 0  ( = 0 ) [4.485s/1228ms]<br />
comms: tx 0-&gt;0: 0  ( = 0 ) [4.894s/409ms]<br />
comms: tx 0-&gt;0: 0  ( = 0 ) [5.704s/810ms]<br />
comms: tx 0-&gt;0: 0  ( = 0 ) [6.512s/808ms]<br />
comms: tx 0-&gt;0: 0  ( = 0 ) [6.920s/408ms]<br />
comms: tx 0-&gt;0: 0  ( = 0 ) [7.328s/408ms]<br />
comms: tx 0-&gt;0: 0  ( = 0 ) [8.136s/808ms]<br />
comms: tx 0-&gt;0: 0  ( = 0 ) [8.544s/408ms]<br />
comms: tx 0-&gt;0: 0  ( = 0 ) [9.352s/808ms]<br />
comms: tx 0-&gt;0: 0  ( = 0 ) [10.723s/1371ms]<br />
comms: tx 0-&gt;0: 0  ( = 0 ) [11.133s/410ms]<br />
<br />
etc...<br />
<br />
When I don't have the reprap attached to the computer the host loads fine. Does anyone know what is causing this and what I need to do to fix it?<br />
<br />
Thanks]]></description>
            <dc:creator>swighton</dc:creator>
            <category>Software</category>
            <pubDate>Wed, 18 Nov 2009 22:09:47 -0800</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,30247,30247#msg-30247</guid>
            <title>Host Software display doesn't work quite right (4 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,30247,30247#msg-30247</link>
            <description><![CDATA[ Hi,<br />
<br />
I was testing the host software on my computer.  It is a 64-bit Windows Vista and I used the instructions contained here:<br />
<br />
<a href="http://dev.forums.reprap.org/read.php?12,28734" rel="nofollow" >http://dev.forums.reprap.org/read.php?12,28734</a>  <br />
<br />
to get it to work on my computer.  Everything works, but when I imported an stl file, all I get is what looks like a spiky "ball" of triangles. <br />
<br />
The stl  file is fine because my MiniMagics viewer shows it as it should look.  It's image is at is at: <br />
<img src="http://www.flickr.com/photos/36647774@N05/4113756383/" class="bbcode" border="0" /><br />
<a href="http://www.flickr.com/photos/36647774@N05/4113756383/" rel="nofollow" >http://www.flickr.com/photos/36647774@N05/4113756383/</a><br />
However, the reprap host software shows it as this:  <br />
<img src="http://www.flickr.com/photos/36647774@N05/4113756403/in/photostream/" class="bbcode" border="0" /><br />
<a href="http://www.flickr.com/photos/36647774@N05/4113756403/in/photostream/" rel="nofollow" >http://www.flickr.com/photos/36647774@N05/4113756403/in/photostream/</a><br />
Thanks in advance for any help.]]></description>
            <dc:creator>jawatim</dc:creator>
            <category>Software</category>
            <pubDate>Sat, 21 Nov 2009 04:14:25 -0800</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,30239,30239#msg-30239</guid>
            <title>Does ReplicatorG Support Stepper Driven Extruder (3 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,30239,30239#msg-30239</link>
            <description><![CDATA[ I have recently built a RepRap Mendel with a stepper driven extruder. I have uploaded the latest firmware to the extruder controller (With type two stepper extruder selected), and to the motherboard (firmware 1.3). ReplicatorG will heat up the extruder but will not make the extruder stepper to turn. Does replicatorG support a stepper extruder? Is there anything that I need to do?]]></description>
            <dc:creator>swighton</dc:creator>
            <category>Software</category>
            <pubDate>Wed, 18 Nov 2009 09:58:38 -0800</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,30189,30189#msg-30189</guid>
            <title>Host software difficulties (7 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,30189,30189#msg-30189</link>
            <description><![CDATA[ Hello,<br />
<br />
I have been working on my first RepRap for a few months on and off, and I'm having trouble with the RepRap host software.<br />
<br />
Current Situation:<br />
-Windows XP. Arduino Duemilanove.<br />
-Using Arduino IDE (0017) I can make individual components run fine, although I have not attempted to write a program that controls all of the components at once.<br />
-Downloaded firmware, chose parameters, and uploaded it to my Arduino<br />
-Using RepRap host, I cannot cause any response from the steppers. (I already found the Port(name) = dev/ttyusb0 parameter, and changed it to COM10 as it needs to be)<br />
<br />
Does anyone have any suggestions on how to get my RepRap host talking with my Arduino? Thanks a ton.<br />
<br />
Brian]]></description>
            <dc:creator>Brian R</dc:creator>
            <category>Software</category>
            <pubDate>Wed, 18 Nov 2009 02:58:01 -0800</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,30088,30088#msg-30088</guid>
            <title>Skeinforge / STL (5 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,30088,30088#msg-30088</link>
            <description><![CDATA[ Hello,<br />
<br />
Skeinforge is having problems opening my STL file (attached).  One of the reprap pages recommended converting STL's to GTS's.  Is there an easy way to do this?<br />
<br />
This recommedation from the reprap/skeinforge page doesn't work [<a href="http://reprap.org/bin/view/Main/Skeinforge" rel="nofollow" >reprap.org</a>] : Skeinforge imports Stereolithography (.stl) files or GNU Triangulated Surface (.gts) files. The import plugin for STL files is experimental and if it doesn't work, an indirect way to import an STL file is by turning it into a GTS file is by using the Export GNU Triangulated Surface script at: [<a href="http://members.axion.net/~enrique/Export%20GNU%20Triangulated%20Surface.bsh" rel="nofollow" >members.axion.net</a>]<br />
<br />
Thanks for any help.<br />
<br />
Arthur]]></description>
            <dc:creator>Arthur</dc:creator>
            <category>Software</category>
            <pubDate>Sat, 21 Nov 2009 04:10:00 -0800</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,30083,30083#msg-30083</guid>
            <title>NaroCAD (no replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,30083,30083#msg-30083</link>
            <description><![CDATA[ There's another OpenCascade-based CAD application under open source development on SourceForge now.  From the blog posts about it, it's developing very quickly and the developers have big plans.  I've just started working through the tutorials and checking it out, but it looks good.  Has a couple of things that the other OCC projects haven't arrived at yet, like splines and spins/lathes.  NaroCAD works with .brep files, the native format of OCC, and at the moment they can be converted to IGES, STEP and STL through FreeCAD.]]></description>
            <dc:creator>murd</dc:creator>
            <category>Software</category>
            <pubDate>Sat, 14 Nov 2009 16:13:58 -0800</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,30076,30076#msg-30076</guid>
            <title>Paths toward more CPU capability, yet retain Arduino compatibility? (11 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,30076,30076#msg-30076</link>
            <description><![CDATA[ Greetings all,<br />
<br />
I like the ease of use of Arduino, but (like others), I find Arduino somewhat limiting in CPU speed and I/O.  The Arduino mega provides more I/O pins, but the processor is still not that fast.  Several folks here (my self among them) are experimenting with 32-bit processors, but doing that requires breaking with the Arduino code base.  <br />
<br />
It appears there are a couple projects porting the Arduino development env to support the Cortex-M3 architecture.  This is IMHO very attractive, because it would give considerably more processing power, yet retain the use of the existing reprap codebase.  Here are the two projects I know of: <br />
 <br />
[<a href="http://www.leaflabs.com/tiki-index.php" rel="nofollow" >www.leaflabs.com</a>]<br />
[<a href="http://code.google.com/p/leaflabs/source/browse/" rel="nofollow" >code.google.com</a>]  (browsable svn repository)<br />
<br />
<br />
[<a href="http://www.xduino.com/" rel="nofollow" >www.xduino.com</a>]<br />
[<a href="http://www.xduino.com/project-library/xduino-v0-31-content/" rel="nofollow" >www.xduino.com</a>]  (Code, but without the IDE)<br />
<br />
Please reply to this thread if you know of any similar efforts.  <br />
<br />
FYI, I have pre-ordered one of leaflab's maple boards, and I filled out the reg form to (try to) get the Xduino download link.  I have heard back from the leaflab folks, but not from Xduino.  Leaflabs is local to me (walking distance from work), and I may see if I can drop in to see how they're doing.  <br />
<br />
There's also a loosely related project (seemingly sponsored by ARM), that looks interesting, but isn't Arduino-compatible:  <br />
[<a href="http://mbed.org/" rel="nofollow" >mbed.org</a>]<br />
<br />
This one uses a an NXP version of a Cortex-M3 , running at 100 MHz.  The catch/feature is that you don't get the compiler, you use their compiler, over the web.  They also support an arm7 version.  One the other hand, they've done some interesting work, that apparently makes their board(s) act like a thumbdrive.  So, the way you download code is to copy the binary (produced with their web-based tool) onto the "thumbdrive" and then either reset or power-cycle it -- sounds pretty slick.]]></description>
            <dc:creator>Larry_Pfeffer</dc:creator>
            <category>Software</category>
            <pubDate>Tue, 17 Nov 2009 11:37:26 -0800</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,29897,29897#msg-29897</guid>
            <title>Problem with host software and ardunio (27 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,29897,29897#msg-29897</link>
            <description><![CDATA[ I hooked up everything to my arduino and all my axis run with the host software perfectly. When I go to the extruder tab, it reads the temp alright but when I press the "extrude" button or the "heater on" button, nothing happens. I looked in my code and wired it up exactly as it said in my code. Also, in the preferences for the host software I set fiveD to false. <br />
<br />
I'm really confused. <br />
<br />
Thanks, <br />
Drummerboyx]]></description>
            <dc:creator>drummerboyx</dc:creator>
            <category>Software</category>
            <pubDate>Mon, 16 Nov 2009 06:32:25 -0800</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,29855,29855#msg-29855</guid>
            <title>designing a program setup wizard tool for reprap (18 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,29855,29855#msg-29855</link>
            <description><![CDATA[ I am designing a tool for the reprap and am about to release it; it converts stl files and sends changes to skeinforge.  It mostly is a GUI for skeinforge, it simplifies settings on tool, auto calculates complex changes and best of all includes a setup wizard to test for proper working temp and raft settings, bridge settings for the reprap.<br />
<br />
For example you give it a range of temperatures and it creates a test to run for your printer, so you know without a lot of experimentation what settings to have. <br />
<br />
 It is written in Visual basic but I am making the code open source and available and am hoping there is interest, and to eventually have a version in java, I would appreciate and comment on interest, I will be posting the software online within a week or so. IT is called 3d simple. It mostly is the wizard, a GUI to skeinforge, and includes quick links to mesh lab, reprap program, and reprap g code simulation. <br />
<br />
Thanks for your feedback and comments. I hope this software makes the reprap easy to use for everyone! I expect this program to be able to make use of reprap fun and easy to new users.]]></description>
            <dc:creator>james villeneuve</dc:creator>
            <category>Software</category>
            <pubDate>Sat, 21 Nov 2009 02:37:34 -0800</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,29749,29749#msg-29749</guid>
            <title>[firmware] What is the difference between ISR and SIGNAL? (2 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,29749,29749#msg-29749</link>
            <description><![CDATA[ I'm trying to get the 5D firmware working on my Arduino Duemilanova w/ATMega328.  After I changed most the obvious things I uploaded it and ran it.  When I watched it with a serial monitor I observed that it repeatedly reset itself, crashing during startup.  I narrowed this down to the line that starts up the timer interrupt.<br />
<br />
I compared the code in the 5D firmware to this tutorial:  [<a href="http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=50106" rel="nofollow" >www.avrfreaks.net</a>]<br />
<br />
The only major difference I saw was the function signature for the interrupt routine.  So I changed the 5D firmware line,<br />
<br />
SIGNAL(SIG_OUTPUT_COMPARE1A)<br />
<br />
to,<br />
<br />
ISR(TIMER1_COMPA_vect)<br />
<br />
and it worked.  Does anyone know why the SIGNAL code didn't work?  Would the ISR version work on the Sanguino and the motherboard?  If so, it would be convenient to permanently change this in the firmware.]]></description>
            <dc:creator>mccoyn</dc:creator>
            <category>Software</category>
            <pubDate>Sun, 08 Nov 2009 09:44:44 -0800</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,29642,29642#msg-29642</guid>
            <title>Tracking algorithms and speed change. (6 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,29642,29642#msg-29642</link>
            <description><![CDATA[ Hi,<br />
I've been pretty quiet, occupied elsewhere for a while, but I'm back, and keen to get going again. For those who don't know, I decided at the beginning of this 2009 year to design up a new machine using an ST Microelectronics ARM 100 pin 72MHz microcontroller. I got 15 boards built, and they are useable after a few jumper placements to correct a bad edit I made designing the board.<br />
<br />
The topic question,<br />
At the moment, I've got an interrupt running 5 channels PWM, 5 channels servo motor or brushless ESC, and 4 on-board bipolar stepper motor drivers. (L298 with some feedback)<br />
At the moment, I've got the steppers running as fast as possible without speed ramping, and with decent drive waveforms. I can (theoretically) bump the speed up to 16 x faster, but that wouldn't work without some speed ramping and other finessing. However, it promises some room for granularity in acceleration.<br />
<br />
I haven't done any g-code parsing code yet, but I was thinking to convert each G-code as it comes, into a start to finish coordinate array in 4 axis. This processor has 20k RAM. I could be non economical and allow 4 bytes per axis per point stamp (16 bytes), but if I have a long, detailed move, then this translates to... say 256mm x 1/256mm accuracy, = 2^16 x 4 bytes x 4 axis. Nasty !<br />
<br />
So, I think I'll have to calculate mostly on the fly, with a short lookahead buffer for speed profiling. That way, I can do coordinate calculations and acceleration, deceleration calcs in the main loop, with results available in the buffer, for the interrupt.<br />
<br />
To complicate this, I'm still a relative C novice:S<br />
<br />
Acceleration and Deceleration can be pre-calculated, assuming that the mechanical power and inertia at each axis is OK.<br />
<br />
Have I got anything here really wrong ?<br />
<br />
Any other things I've missed ?]]></description>
            <dc:creator>grael</dc:creator>
            <category>Software</category>
            <pubDate>Fri, 06 Nov 2009 23:38:23 -0800</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,29526,29526#msg-29526</guid>
            <title>Stepper Motor Help (7 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,29526,29526#msg-29526</link>
            <description><![CDATA[ Hello,<br />
<br />
I'm trying to build a 3-axis CNC milling machine using an Arduino and three RepRap Stepper Motor Driver boards (v2.3).<br />
<br />
I've got the stepper motors to work, but I can't seem to produce an Arduino sketch that has control over the stepper motors with sufficient granularity.  Basically, I can't seem to be able to get the stepper motors to turn a single step.  The steppers are rated at 200 steps per revolution, but it seems to take somewhere around 460 "steps" (as done by the code fragment below) to execute a complete turn.<br />
<br />
<pre class="bbcode">
void do_step(byte step_pin)
{
  digitalWrite(step_pin, HIGH);
  delayMicroseconds(5);
  digitalWrite(step_pin, LOW);
}</pre>
<br />
Any advice for what I'm doing incorrectly?<br />
<br />
Many thanks.]]></description>
            <dc:creator>Antonio Garcia</dc:creator>
            <category>Software</category>
            <pubDate>Tue, 10 Nov 2009 17:18:56 -0800</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,29525,29525#msg-29525</guid>
            <title>Arduino firmware submission (5 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,29525,29525#msg-29525</link>
            <description><![CDATA[ Guys,<br />
<br />
The latest version of the firmware does not work on Gen2.<br />
(When I say latest I mean the one that the web page currently send you to.)<br />
 <br />
It's too big. (even with Sarguino turned off).<br />
The attached hacked version has a bug fix added and uses #ifdef to bring the compile size down to fit on the arduino.<br />
Basically you choose whether you have stepper or a DC motor on the extruder rather than an automatic if statement. As a result there is less code.<br />
<br />
(Note only tested the DC version - I don't have a posh extruder running yet. If someone could test it that would be great)<br />
<br />
I now have a working reprap. Well it moves in z,y,x tells me the correct temperature and runs the extruder and fan.<br />
<br />
All disclaimers. <br />
<br />
regards<br />
<br />
Stephen George<br />
<br />
<br />
Hacked version tested on:<br />
<br />
Ubuntu 9.04<br />
Arduino v17 compiler<br />
Gen2 electronics <br />
 Arduino Diecimila<br />
 v1.2 stepper drivers<br />
 v2.0 temperature sensor (non thermal couple)<br />
 v2.1 Opto enstop<br />
 v1.2 Arduino breakout sheild <br />
 v1.1 PWM Driver <br />
 v1.1 DC Motor driver]]></description>
            <dc:creator>stephen george</dc:creator>
            <category>Software</category>
            <pubDate>Sun, 15 Nov 2009 08:20:28 -0800</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,29492,29492#msg-29492</guid>
            <title>CNC software (9 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,29492,29492#msg-29492</link>
            <description><![CDATA[ Does anyone know any CNC subtractive software that works with the arduino generation 2 reprap electronics?<br />
<br />
Thanks, <br />
drummerboyx]]></description>
            <dc:creator>drummerboyx</dc:creator>
            <category>Software</category>
            <pubDate>Wed, 04 Nov 2009 01:14:18 -0800</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,29475,29475#msg-29475</guid>
            <title>Production exception: java.lang.ArrayIndexOutofBoundsException: -1 (4 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,29475,29475#msg-29475</link>
            <description><![CDATA[ Finally got the reprap to work in the control pannel.<br />
<br />
Started a test run of the mini mug without any filliment<br />
<br />
Get to the second layer and get<br />
<br />
Production exception: java.lang.ArrayIndexOutofBoundsException: -1<br />
<br />
Also fails when I just try and print to a file without the reprap.<br />
<br />
Did a search and on the forum and nothing came up.<br />
<br />
Any ideas?<br />
<br />
Stephen]]></description>
            <dc:creator>stephen george</dc:creator>
            <category>Software</category>
            <pubDate>Tue, 03 Nov 2009 03:30:55 -0800</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,29430,29430#msg-29430</guid>
            <title>Arduino compile v17 with non thermal couple (no replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,29430,29430#msg-29430</link>
            <description><![CDATA[ Guys,<br />
<br />
I have now gone through each version of gcode and tried to compile it on the arduino.<br />
<br />
[<a href="http://reprap.svn.sourceforge.net/viewvc/reprap/trunk/reprap/firmware/GCode_Interpreter/GCode_Interpreter.pde?view=log" rel="nofollow" >reprap.svn.sourceforge.net</a>]<br />
<br />
None of them work.<br />
<br />
Either I get a word problem, or it's too big<br />
<br />
Stephen]]></description>
            <dc:creator>stephen george</dc:creator>
            <category>Software</category>
            <pubDate>Sat, 31 Oct 2009 23:45:12 -0700</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,29428,29428#msg-29428</guid>
            <title>is there a G- code reference manual (4 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,29428,29428#msg-29428</link>
            <description><![CDATA[ Guys,<br />
<br />
I have had a look but can't seem to find a reference manual for the Gcode.<br />
Basically looking for the definitions<br />
<br />
What does M105 do? etc<br />
<br />
Thanks<br />
<br />
Stephen]]></description>
            <dc:creator>stephen george</dc:creator>
            <category>Software</category>
            <pubDate>Tue, 03 Nov 2009 15:39:26 -0800</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,29410,29410#msg-29410</guid>
            <title>Problem with host software (5 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,29410,29410#msg-29410</link>
            <description><![CDATA[ I downloaded the reprap host software a couple days ago. I got it to work great with my arduino and it controls my stepper motors perfectly. But today I couldn't get my extruder to work, and I had an old battery operated dremmel. Insted of trying to fix it, I thought I should try it out. I went into preferences and picked subtractive: true and I put 0 for the number of extruders(BIG MISTAKE). Then the next time I opened the software it said: A reprap 3d printer must have at least 1 extruder, and then the software froze. I tried everything, including reinstalling it and nothing worked.<br />
<br />
I NEED HELP!<br />
<br />
Thanks,<br />
Elijah]]></description>
            <dc:creator>drummerboyx</dc:creator>
            <category>Software</category>
            <pubDate>Sat, 31 Oct 2009 17:24:10 -0700</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,29399,29399#msg-29399</guid>
            <title>Debug on the process_string (no replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,29399,29399#msg-29399</link>
            <description><![CDATA[ Hi guys,<br />
<br />
I had a nightmare trying to debug the comms with the reprap. <br />
<br />
One of the nightmares was the fact that the serial monitor <br />
which comes with the arduino compiler does not send /n. <br />
This means the reprap never responds back.<br />
(Thanks mccoyn for digging me out of that hole)<br />
<br />
The follow code will use the ; or /n as a terminator<br />
<br />
Therefore you can type M105; and the reprap will respond.<br />
<br />
e.g.<br />
<br />
Start<br />
M105;<br />
ok<br />
G01 X10. F100;<br />
ok<br />
<br />
Also I added a little debug code so that the reprap echo's what you type.<br />
<br />
It's really only for diagnostic purposes and is a drop in for the version<br />
v1.4 of the firmware i.e. <br />
<br />
// Sanguino v1.4 by Adrian Bowyer - added the Sanguino; extensive mods... (a.bowyer@bath.ac.uk)<br />
<br />
<br />
Install instructions <br />
Copy and past the code at the bottom of this post over process_string.<br />
section of code.<br />
<br />
<br />
This code is given as is with no warranties.<br />
All disclaimers. <br />
etc etc etc<br />
<br />
<br />
<br />
#include "parameters.h"<br />
#include "pins.h"<br />
#include "extruder.h"<br />
<br />
//our command string<br />
char cmdbuffer[COMMAND_SIZE];<br />
char c = '?';<br />
byte serial_count = 0;<br />
<br />
<br />
<br />
/*<br />
// - (sg) 20091031<br />
// removed as I need more space to sit in the arduino<br />
// Could we not strip out rems at the computer level where we have oodles of space rather than the firmware level?<br />
<br />
boolean comment = false;<br />
*/<br />
<br />
// - (sg) 20091031<br />
// #define debug_process_string - will echo the characters the reprap gets.<br />
//<br />
// Note you might want to turn this off (by commenting the line) if you want to use the reprap host software.<br />
// it gets confused when it hears an echo<br />
#define debug_process_string<br />
<br />
<br />
<br />
<br />
// our point structure to make things nice.<br />
struct LongPoint<br />
{<br />
	long x;<br />
	long y;<br />
	long z;<br />
};<br />
<br />
struct FloatPoint<br />
{<br />
	float x;<br />
	float y;<br />
	float z;<br />
};<br />
<br />
/* gcode line parse results */<br />
struct GcodeParser<br />
{<br />
    unsigned int seen;<br />
    int G;<br />
    int M;<br />
    float P;<br />
    float X;<br />
    float Y;<br />
    float Z;<br />
    float I;<br />
    float J;<br />
    float F;<br />
    float S;<br />
    float R;<br />
    float Q;<br />
};<br />
<br />
FloatPoint current_units;<br />
FloatPoint target_units;<br />
FloatPoint delta_units;<br />
<br />
FloatPoint current_steps;<br />
FloatPoint target_steps;<br />
FloatPoint delta_steps;<br />
<br />
boolean abs_mode = true; //0 = incremental; 1 = absolute<br />
<br />
//default to mm for units<br />
float x_units = X_STEPS_PER_MM;<br />
float y_units = Y_STEPS_PER_MM;<br />
float z_units = Z_STEPS_PER_MM;<br />
float curve_section = CURVE_SECTION_MM;<br />
<br />
//our direction vars<br />
byte x_direction = 1;<br />
byte y_direction = 1;<br />
byte z_direction = 1;<br />
<br />
float extruder_speed = 0;<br />
<br />
int scan_int(char *str, int *valp);<br />
int scan_float(char *str, float *valp);<br />
<br />
//init our string processing<br />
void init_process_string()<br />
{<br />
	serial_count = 0;<br />
<br />
/*<br />
(sg) 20091031<br />
making space for arduino<br />
        comment = false;<br />
*/<br />
<br />
}<br />
<br />
// Get a command and process it<br />
<br />
void get_and_do_command()<br />
{<br />
	//read in characters if we got them.<br />
	if (Serial.available())<br />
	{<br />
		c = Serial.read();<br />
<br />
/*<br />
(SG) I appreciate that dos file format uses cr (/r) as well as lf (/n) but do we need this code?<br />
<br />
               if(c == '\r')<br />
                  c = '\n';<br />
                              <br />
<br />
(SG) Afer all /r is a control character and therefore gets chucked out by this code later on<br />
<br />
                // Throw away control chars except \n<br />
                if(c &gt;= ' ' || c == '\n')<br />
           <br />
*/                  <br />
<br />
<br />
// - sg added 20091031<br />
/*<br />
// Why do we have two ifs one should do the trick<br />
// Why do we make sure we pass through a /n and then ignore it anyway?<br />
                <br />
                // Throw away control chars except \n<br />
                if(c &gt;= ' ' || c == '\n')<br />
                {<br />
                  <br />
		  //newlines are ends of commands.<br />
		  if (c != '\n')<br />
		  {<br />
  <br />
*/<br />
<br />
// Right lets turn our ; into a terminator<br />
                if(c == ';')<br />
                  c = '\n';<br />
<br />
<br />
                // don't add characters unless they are greater than ascii 32 (throw bad character out)<br />
                if(c &gt;= ' ')<br />
                {<br />
 <br />
/* (SG) 20091031<br />
(SG) getting rid of comment code To make space for arduino<br />
<br />
			// Start of comment - ignore any bytes received from now on<br />
			if (c == ';')<br />
				comment = true;<br />
<br />
*/<br />
<br />
			<br />
/*	<br />
(SG) Get rid of comment code to make space in arduino<br />
<br />
			// If we're not in comment mode, add it to our array.<br />
			if (!comment)<br />
*/ <br />
<br />
				cmdbuffer[serial_count++] = c;<br />
<br />
                                #ifdef debug_process_string<br />
                                Serial.println(c);<br />
                                #endif<br />
<br />
<br />
<br />
<br />
// (SG) end of Why do we have two ifs one should do the trick?<br />
// (saving space for the arduino)<br />
//  }<br />
<br />
                }<br />
	}<br />
<br />
        // Data runaway?<br />
        if(serial_count &gt;= COMMAND_SIZE)<br />
          init_process_string();<br />
<br />
	//if we've got a real command, do it<br />
	if (serial_count && c == '\n')<br />
	{<br />
  <br />
  <br />
  <br />
                // Terminate string<br />
                cmdbuffer[serial_count] = 0;<br />
                <br />
		//process our command!<br />
		process_string(cmdbuffer, serial_count);<br />
<br />
		//clear command.<br />
		init_process_string();<br />
<br />
                // Say we're ready for the next one<br />
                <br />
                Serial.println("ok");<br />
	}<br />
}<br />
<br />
//our feedrate variables.<br />
float feedrate = 0.0;<br />
long feedrate_micros = 0;<br />
<br />
/* keep track of the last G code - this is the command mode to use<br />
 * if there is no command in the current string <br />
 */<br />
int last_gcode_g = -1;<br />
<br />
/* bit-flags for commands and parameters */<br />
#define GCODE_G	(1&lt;&lt;0)<br />
#define GCODE_M	(1&lt;&lt;1)<br />
#define GCODE_P	(1&lt;&lt;2)<br />
#define GCODE_X	(1&lt;&lt;3)<br />
#define GCODE_Y	(1&lt;&lt;4)<br />
#define GCODE_Z	(1&lt;&lt;5)<br />
#define GCODE_I	(1&lt;&lt;6)<br />
#define GCODE_J	(1&lt;&lt;7)<br />
#define GCODE_K	(1&lt;&lt;8)<br />
#define GCODE_F	(1&lt;&lt;9)<br />
#define GCODE_S	(1&lt;&lt;10)<br />
#define GCODE_Q	(1&lt;&lt;11)<br />
#define GCODE_R	(1&lt;&lt;12)<br />
<br />
<br />
#define PARSE_INT(ch, str, len, val, seen, flag) \<br />
	case ch: \<br />
		len = scan_int(str, &val, &seen, flag); \<br />
		break;<br />
<br />
#define PARSE_FLOAT(ch, str, len, val, seen, flag) \<br />
	case ch: \<br />
		len = scan_float(str, &val, &seen, flag); \<br />
		break;<br />
<br />
int parse_string(struct GcodeParser * gc, char instruction[], int size)<br />
{<br />
	int ind;<br />
	int len;	/* length of parameter argument */<br />
<br />
	gc-&gt;seen = 0;<br />
<br />
	len=0;<br />
	/* scan the string for commands and parameters, recording the arguments for each,<br />
	 * and setting the seen flag for each that is seen<br />
	 */<br />
	for (ind=0; ind<size; ind += (1+len)) 	{ 		len = 0; 		switch (instruction[ind]) 		{ 			  PARSE_INT('G', &instruction[ind+1], len, gc->G, gc-&gt;seen, GCODE_G);<br />
			  PARSE_INT('M', &instruction[ind+1], len, gc-&gt;M, gc-&gt;seen, GCODE_M);<br />
			PARSE_FLOAT('S', &instruction[ind+1], len, gc-&gt;S, gc-&gt;seen, GCODE_S);<br />
			PARSE_FLOAT('P', &instruction[ind+1], len, gc-&gt;P, gc-&gt;seen, GCODE_P);<br />
			PARSE_FLOAT('X', &instruction[ind+1], len, gc-&gt;X, gc-&gt;seen, GCODE_X);<br />
			PARSE_FLOAT('Y', &instruction[ind+1], len, gc-&gt;Y, gc-&gt;seen, GCODE_Y);<br />
			PARSE_FLOAT('Z', &instruction[ind+1], len, gc-&gt;Z, gc-&gt;seen, GCODE_Z);<br />
			PARSE_FLOAT('I', &instruction[ind+1], len, gc-&gt;I, gc-&gt;seen, GCODE_I);<br />
			PARSE_FLOAT('J', &instruction[ind+1], len, gc-&gt;J, gc-&gt;seen, GCODE_J);<br />
			PARSE_FLOAT('F', &instruction[ind+1], len, gc-&gt;F, gc-&gt;seen, GCODE_F);<br />
			PARSE_FLOAT('R', &instruction[ind+1], len, gc-&gt;R, gc-&gt;seen, GCODE_R);<br />
			PARSE_FLOAT('Q', &instruction[ind+1], len, gc-&gt;Q, gc-&gt;seen, GCODE_Q);<br />
                        default:<br />
			  break;<br />
		}<br />
	}<br />
}<br />
<br />
<br />
//Read the string and execute instructions<br />
void process_string(char instruction[], int size)<br />
{<br />
<br />
	GcodeParser gc;	/* string parse result */<br />
<br />
	//the character / means delete block... used for comments and stuff.<br />
	if (instruction[0] == '/')	<br />
		return;<br />
<br />
	//init baby!<br />
	FloatPoint fp; <br />
	fp.x = 0.0;<br />
	fp.y = 0.0;<br />
	fp.z = 0.0;<br />
<br />
	//get all our parameters!<br />
	parse_string(&gc, instruction, size);<br />
	/* if no command was seen, but parameters were, then use the last G code as <br />
	 * the current command<br />
	 */<br />
	if ((!(gc.seen & (GCODE_G | GCODE_M))) && <br />
	    ((gc.seen != 0) &&<br />
		(last_gcode_g &gt;= 0))<br />
	)<br />
	{<br />
		/* yes - so use the previous command with the new parameters */<br />
		gc.G = last_gcode_g;<br />
		gc.seen |= GCODE_G;<br />
	}<br />
	//did we get a gcode?<br />
	if (gc.seen & GCODE_G)<br />
	{<br />
		last_gcode_g = gc.G;	/* remember this for future instructions */<br />
		fp = current_units;<br />
		if (abs_mode)<br />
		{<br />
			if (gc.seen & GCODE_X)<br />
				fp.x = gc.X;<br />
			if (gc.seen & GCODE_Y)<br />
				fp.y = gc.Y;<br />
			if (gc.seen & GCODE_Z)<br />
				fp.z = gc.Z;<br />
		}<br />
		else<br />
		{<br />
			if (gc.seen & GCODE_X)<br />
				fp.x += gc.X;<br />
			if (gc.seen & GCODE_Y)<br />
				fp.y += gc.Y;<br />
			if (gc.seen & GCODE_Z)<br />
				fp.z += gc.Z;<br />
		}<br />
<br />
		// Get feedrate if supplied<br />
		if ( gc.seen & GCODE_F )<br />
			feedrate = gc.F;<br />
<br />
		//do something!<br />
		switch (gc.G)<br />
		{<br />
			//Rapid Positioning<br />
			//Linear Interpolation<br />
			//these are basically the same thing.<br />
			case 0:<br />
			case 1:<br />
				//set our target.<br />
				set_target(fp.x, fp.y, fp.z);<br />
<br />
				// Use currently set feedrate if doing a G1<br />
				if (gc.G == 1)<br />
					feedrate_micros = calculate_feedrate_delay(feedrate);<br />
				// Use our max for G0<br />
				else<br />
					feedrate_micros = getMaxSpeed();<br />
				//finally move.<br />
				dda_move(feedrate_micros);<br />
				break;<br />
#ifdef SANGUINO<br />
// No room for this in the Arduino<br />
			//Clockwise arc<br />
			case 2:<br />
			//Counterclockwise arc<br />
			case 3:<br />
			{<br />
				FloatPoint cent;<br />
<br />
				// Centre coordinates are always relative<br />
				if (gc.seen & GCODE_I) cent.x = current_units.x + gc.I;<br />
				else cent.x = current_units.x;<br />
				if (gc.seen & GCODE_J) cent.y = current_units.y + gc.J;<br />
<br />
				float angleA, angleB, angle, radius, length, aX, aY, bX, bY;<br />
<br />
				aX = (current_units.x - cent.x);<br />
				aY = (current_units.y - cent.y);<br />
				bX = (fp.x - cent.x);<br />
				bY = (fp.y - cent.y);<br />
<br />
				// Clockwise<br />
				if (gc.G == 2)<br />
				{<br />
					angleA = atan2(bY, bX);<br />
					angleB = atan2(aY, aX);<br />
				}<br />
				// Counterclockwise<br />
				else<br />
				{<br />
					angleA = atan2(aY, aX);<br />
					angleB = atan2(bY, bX);<br />
				}<br />
<br />
				// Make sure angleB is always greater than angleA<br />
				// and if not add 2PI so that it is (this also takes<br />
				// care of the special case of angleA == angleB,<br />
				// ie we want a complete circle)<br />
				if (angleB &lt;= angleA)<br />
					angleB += 2 * M_PI;<br />
				angle = angleB - angleA;<br />
<br />
				radius = sqrt(aX * aX + aY * aY);<br />
				length = radius * angle;<br />
				int steps, s, step;<br />
<br />
				// Maximum of either 2.4 times the angle in radians or the length of the curve divided by the constant specified in _init.pde<br />
				steps = (int) ceil(max(angle * 2.4, length / curve_section));<br />
<br />
				FloatPoint newPoint;<br />
				float arc_start_z = current_units.z;<br />
				for (s = 1; s &lt;= steps; s++)<br />
				{<br />
					step = (gc.G == 3) ? s : steps - s; // Work backwards for CW<br />
					newPoint.x = cent.x + radius * cos(angleA + angle<br />
							* ((float) step / steps));<br />
					newPoint.y = cent.y + radius * sin(angleA + angle<br />
							* ((float) step / steps));<br />
					set_target(newPoint.x, newPoint.y, arc_start_z + (fp.z<br />
							- arc_start_z) * s / steps);<br />
<br />
					// Need to calculate rate for each section of curve<br />
					if (feedrate &gt; 0)<br />
						feedrate_micros = calculate_feedrate_delay(feedrate);<br />
					else<br />
						feedrate_micros = getMaxSpeed();<br />
<br />
					// Make step<br />
					dda_move(feedrate_micros);<br />
				}<br />
			}<br />
			break;<br />
#endif<br />
			<br />
			case 4: //Dwell<br />
				delay((int)(gc.P + 0.5));  // Changed by AB from 1000*gc.P<br />
				break;<br />
<br />
				//Inches for Units<br />
			case 20:<br />
				x_units = X_STEPS_PER_INCH;<br />
				y_units = Y_STEPS_PER_INCH;<br />
				z_units = Z_STEPS_PER_INCH;<br />
				curve_section = CURVE_SECTION_INCHES;<br />
<br />
				calculate_deltas();<br />
				break;<br />
<br />
				//mm for Units<br />
			case 21:<br />
				x_units = X_STEPS_PER_MM;<br />
				y_units = Y_STEPS_PER_MM;<br />
				z_units = Z_STEPS_PER_MM;<br />
				curve_section = CURVE_SECTION_MM;<br />
<br />
				calculate_deltas();<br />
				break;<br />
<br />
				//go home.<br />
			case 28:<br />
				set_target(0.0, 0.0, 0.0);<br />
				dda_move(getMaxSpeed());<br />
				break;<br />
<br />
				//go home via an intermediate point.<br />
			case 30:<br />
				//set our target.<br />
				set_target(fp.x, fp.y, fp.z);<br />
<br />
				//go there.<br />
				dda_move(getMaxSpeed());<br />
<br />
				//go home.<br />
				set_target(0.0, 0.0, 0.0);<br />
				dda_move(getMaxSpeed());<br />
				break;<br />
<br />
			// Drilling canned cycles<br />
			case 81: // Without dwell<br />
			case 82: // With dwell<br />
			case 83: // Peck drilling<br />
			{<br />
				float retract = gc.R;<br />
				<br />
				if (!abs_mode)<br />
					retract += current_units.z;<br />
<br />
				// Retract to R position if Z is currently below this<br />
				if (current_units.z &lt; retract)<br />
				{<br />
					set_target(current_units.x, current_units.y, retract);<br />
					dda_move(getMaxSpeed());<br />
				}<br />
<br />
				// Move to start XY<br />
				set_target(fp.x, fp.y, current_units.z);<br />
				dda_move(getMaxSpeed());<br />
<br />
				// Do the actual drilling<br />
				float target_z = retract;<br />
				float delta_z;<br />
<br />
				// For G83 move in increments specified by Q code, otherwise do in one pass<br />
				if (gc.G == 83)<br />
					delta_z = gc.Q;<br />
				else<br />
					delta_z = retract - fp.z;<br />
<br />
				do {<br />
					// Move rapidly to bottom of hole drilled so far (target Z if starting hole)<br />
					set_target(fp.x, fp.y, target_z);<br />
					dda_move(getMaxSpeed());<br />
<br />
					// Move with controlled feed rate by delta z (or to bottom of hole if less)<br />
					target_z -= delta_z;<br />
					if (target_z &lt; fp.z)<br />
						target_z = fp.z;<br />
					set_target(fp.x, fp.y, target_z);<br />
					if (feedrate &gt; 0)<br />
						feedrate_micros = calculate_feedrate_delay(feedrate);<br />
					else<br />
						feedrate_micros = getMaxSpeed();<br />
					dda_move(feedrate_micros);<br />
<br />
					// Dwell if doing a G82<br />
					if (gc.G == 82)<br />
						delay((int)(gc.P * 1000));<br />
<br />
					// Retract<br />
					set_target(fp.x, fp.y, retract);<br />
					dda_move(getMaxSpeed());<br />
				} while (target_z &gt; fp.z);<br />
			}<br />
			break;<br />
<br />
			<br />
			case 90: //Absolute Positioning<br />
				abs_mode = true;<br />
				break;<br />
<br />
			<br />
			case 91: //Incremental Positioning<br />
				abs_mode = false;<br />
				break;<br />
<br />
			<br />
			case 92: //Set position as fp<br />
				set_position(fp.x, fp.y, fp.z);<br />
				break;<br />
<br />
				/*<br />
				 //Inverse Time Feed Mode<br />
				 case 93:<br />
<br />
				 break;  //TODO: add this<br />
<br />
				 //Feed per Minute Mode<br />
				 case 94:<br />
<br />
				 break;  //TODO: add this<br />
				 */<br />
<br />
			default:<br />
				Serial.print("huh? G");<br />
				Serial.println(gc.G, DEC);<br />
		}<br />
	}<br />
<br />
	//find us an m code.<br />
	if (gc.seen & GCODE_M)<br />
	{<br />
		switch (gc.M)<br />
		{<br />
			//TODO: this is a bug because search_string returns 0.  gotta fix that.<br />
			case 0:<br />
				true;<br />
				break;<br />
				/*<br />
				 case 0:<br />
				 //todo: stop program<br />
				 break;<br />
<br />
				 case 1:<br />
				 //todo: optional stop<br />
				 break;<br />
<br />
				 case 2:<br />
				 //todo: program end<br />
				 break;<br />
				 */<br />
				//turn extruder on, forward<br />
			case 101:<br />
				ex[extruder_in_use]-&gt;set_direction(1);<br />
				ex[extruder_in_use]-&gt;set_speed(extruder_speed);<br />
				break;<br />
<br />
				//turn extruder on, reverse<br />
			case 102:<br />
				ex[extruder_in_use]-&gt;set_direction(0);<br />
				ex[extruder_in_use]-&gt;set_speed(extruder_speed);<br />
				break;<br />
<br />
				//turn extruder off<br />
			case 103:<br />
				ex[extruder_in_use]-&gt;set_speed(0);<br />
				break;<br />
<br />
				//custom code for temperature control<br />
			case 104:<br />
				if (gc.seen & GCODE_S)<br />
				{<br />
					ex[extruder_in_use]-&gt;set_temperature((int)gc.S);<br />
<br />
//					//warmup if we're too cold.<br />
//					while (ex[extruder_in_use]-&gt;get_temperature() &lt; extruder_target_celsius)<br />
//					{<br />
//						manage_all_extruders();<br />
//						Serial.print("T: ");<br />
//						Serial.println(ex[extruder_in_use]-&gt;get_temperature());<br />
//						delay(1000);<br />
//					}<br />
				}<br />
				break;<br />
<br />
				//custom code for temperature reading<br />
			case 105:<br />
				Serial.print("T:");<br />
				Serial.println(ex[extruder_in_use]-&gt;get_temperature());<br />
				break;<br />
<br />
				//turn fan on<br />
			case 106:<br />
				ex[extruder_in_use]-&gt;set_cooler(255);<br />
				break;<br />
<br />
				//turn fan off<br />
			case 107:<br />
				ex[extruder_in_use]-&gt;set_cooler(0);<br />
				break;<br />
<br />
				//set max extruder speed, 0-255 PWM<br />
			case 108:<br />
				if (gc.seen & GCODE_S)<br />
					extruder_speed = gc.S;<br />
				break;<br />
<br />
                                // Open the valve<br />
                        case 126:<br />
                                ex[extruder_in_use]-&gt;valve_set(true, (int)(gc.P + 0.5));<br />
                                break;<br />
                                <br />
                                // Close the valve<br />
                        case 127:<br />
                                ex[extruder_in_use]-&gt;valve_set(false, (int)(gc.P + 0.5));<br />
                                break;<br />
                                                                <br />
<br />
			default:<br />
				Serial.print("Huh? M");<br />
				Serial.println(gc.M, DEC);<br />
		}<br />
	}<br />
<br />
}<br />
<br />
int scan_float(char *str, float *valp, unsigned int *seen, unsigned int flag)<br />
{<br />
	float res;<br />
	int len;<br />
	char *end;<br />
     <br />
	res = (float)strtod(str, &end);<br />
      <br />
	len = end - str;<br />
<br />
	if (len &gt; 0)<br />
	{<br />
		*valp = res;<br />
		*seen |= flag;<br />
	}<br />
	else<br />
		*valp = 0;<br />
          <br />
	return len;	/* length of number */<br />
}<br />
<br />
int scan_int(char *str, int *valp, unsigned int *seen, unsigned int flag)<br />
{<br />
	int res;<br />
	int len;<br />
	char *end;<br />
<br />
	res = (int)strtol(str, &end, 10);<br />
	len = end - str;<br />
<br />
	if (len &gt; 0)<br />
	{<br />
		*valp = res;<br />
		*seen |= flag;<br />
	}<br />
	else<br />
		*valp = 0;<br />
          <br />
	return len;	/* length of number */<br />
}<br />
<br />
#ifdef TEST_MACHINE<br />
<br />
// Read and echo bytes.<br />
<br />
void comms_test()<br />
{<br />
  if (Serial.available() &gt; 0)<br />
        Serial.print((char)Serial.read());<br />
}<br />
<br />
#endif]]></description>
            <dc:creator>stephen george</dc:creator>
            <category>Software</category>
            <pubDate>Sat, 31 Oct 2009 01:16:51 -0700</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,29397,29397#msg-29397</guid>
            <title>Remarks are  ; surely we should use //  or /* */ (4 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,29397,29397#msg-29397</link>
            <description><![CDATA[ Guys,<br />
<br />
Going through the firmware code and it looks like the code is using ; as a remark.<br />
Surely we should be following the C convention of // or /* and */.<br />
<br />
; is a line terminator in C and PL/SQL<br />
<br />
regards<br />
<br />
Stephen<br />
<br />
<br />
Here is the code in question in process_string<br />
<br />
<br />
		  //newlines are ends of commands.<br />
		  if (c != '\n')<br />
		  {<br />
			// Start of comment - ignore any bytes received from now on<br />
			if (c == ';')<br />
				comment = true;<br />
				<br />
			// If we're not in comment mode, add it to our array.<br />
			if (!comment)<br />
				cmdbuffer[serial_count++] = c;<br />
		  }]]></description>
            <dc:creator>stephen george</dc:creator>
            <category>Software</category>
            <pubDate>Sun, 01 Nov 2009 13:55:11 -0800</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,29396,29396#msg-29396</guid>
            <title>Fork for arduino firmware code? (4 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,29396,29396#msg-29396</link>
            <description><![CDATA[ Guys<br />
<br />
It seems to me that development for the firmware is happening only in SanGuino land and not arduino.<br />
<br />
Evidence to support this is that <br />
<br />
1) SNAP does not compile with v17 of the compiler and seems to have stopped way back in v12.<br />
<br />
2) The firmware does not seem to fit in the Arduino.<br />
<br />
Am I wrong?<br />
<br />
If this is case would it be worth while forking the firmware code?<br />
one set for Arduino and one for SanGuino?<br />
<br />
It's only going to get worse with the Arduino mega coming along.<br />
<br />
regards<br />
<br />
Stephen]]></description>
            <dc:creator>stephen george</dc:creator>
            <category>Software</category>
            <pubDate>Sun, 01 Nov 2009 16:49:38 -0800</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,29385,29385#msg-29385</guid>
            <title>Trying to get every thing to work (9 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,29385,29385#msg-29385</link>
            <description><![CDATA[ My problem is that I can not get ReplicatorG or the RepRap Host software to do anything for me, minus updating the Motherboard through ReplicatorG.<br />
<br />
What I have:<br />
   A RepStrap fully wired minus the temp and header components<br />
   I have a stepper based extruder.<br />
   Gen 3 Electronics pre assembled from Makerbot (im assuming that they are functioning correctly.)<br />
<br />
What I Can Do:<br />
   Upload new firmware to the motherboard using ReplicatorG (using 1.6 firmware)<br />
<br />
<br />
What I Cant Do:<br />
   Upload new firmware to the extruder controller in either Replicator G or the Arduino v17 software<br />
   I can not get the Arduino v17 software to upload new firmware to the motherboard, even though I have followed all the instructions to get it to work with the sanguino.<br />
<br />
What I Have Tried:<br />
     Everything a search has come up with to get the arduino software to link with my motherboard and extruder controller I get an error that my google searches say is a problem with linking up to it.<br />
     To move the axises with ReplicatorG, program pauses then advances 10mm in software but nothing hardware side.  I get the error "payload not big enough" when opening the control panel.<br />
     To move the axises with the RepRap Host software, when clicking on any button in "XYZ" "Extruder 0..." the program locks up.  I have put it into debug mode no errors but it seams to hang at a part that mentions tring to communicate with a arduino or sanguino with a time aka 300ms 1.2s beside it. I can hit print, pause, resume, and stop with no errors.  The software is the newest from sourceforge, I did not compile it.<br />
     If i move all axises by hand the led on the stepper boards flash and blink corresponding to the axis that I am moving.<br />
<br />
Computer:<br />
Windows XP fully updated as of 30 min ago, no missing drivers<br />
<br />
also when the hardware is switched on there is a green light on ever component that lights up, on the opto endstops there is a light on on each axis, so 30 of 6 have a light on, if I switch wires around then the others will light up, but theres always only 3 lit at one time (1 per axis).<br />
<br />
<br />
To the best of my knowledge everything is wired correctly, and it seams to be a communication problem between computer and motherboard.  Also all software and firmware is the newest released versions.<br />
<br />
Ive tried to be as thorough as possible, im sorry that i cant give the Arduino software errors but a separate computer is dedicated to this project and there isnt a comfortable chair in the garage to sit there and type all this up.  ill head out there later and take care of that.]]></description>
            <dc:creator>Jeff B</dc:creator>
            <category>Software</category>
            <pubDate>Sun, 01 Nov 2009 09:28:35 -0800</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,29266,29266#msg-29266</guid>
            <title>any suggestions? (12 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,29266,29266#msg-29266</link>
            <description><![CDATA[ Hi<br />
<br />
Any suggestions much appreciated<br />
<br />
I have the arduino. (gen 2)<br />
I have connected this to three stepper driver boards (1.2) as described for gen 2.<br />
I have connected these boards to a min optical senser and a motor.<br />
<br />
With test code each board drives the correct motor and the optical sensors<br />
display a green light when home. Therefore I have wired it correctly.<br />
and the usb works fine as it is compiled via arduino compiler.<br />
<br />
However when I loaded the firmare as per <br />
[<a href="http://www.reprap.org/bin/view/Main/Generation2Firmware" rel="nofollow" >www.reprap.org</a>]<br />
and run the reprap host software and click home nothing happens and the code freezes. In fact any xyz co-ordinare freezes.<br />
<br />
Is there some sort of diagnostic code I can run between the system to work out where the fault is? ie firm ware or the host software?<br />
<br />
Should I be running code from the reprap arduino firmware 1.3 or the code I am told to download as per instuctions <br />
<br />
[<a href="http://reprap.svn.sourceforge.net/viewvc/reprap/trunk/reprap/firmware/GCode_Interpreter/" rel="nofollow" >reprap.svn.sourceforge.net</a>]<br />
<br />
which seems to be different IE it's only a few files.<br />
<br />
<br />
Thanks <br />
<br />
Stephen<br />
<br />
<br />
Has it ever worked ever?<br />
Yes - before I fried my 1.1 stepper boards it worked fine. <br />
<br />
Have compiled the code correctly?<br />
- Well I have read the instructions three times and done strictly as it says<br />
so I assume so. It compiles and uploads fine.<br />
<br />
Have I installed the host software correctly?<br />
- No errors come up and the arduino software works fine. I run the software in terminal mode to make sure there are no errors.<br />
<br />
did you rename the .dist to there correct name <br />
- yes the code compiled fine<br />
<br />
Did you edit out the #define SANGUINO<br />
- yes otherwise it does not compile<br />
<br />
Did you set #define EXTRUDER_COUNT 1<br />
- I left this alone later I tried #define EXTRUDER_COUNT 0 but it still did not work.<br />
<br />
Did you uncomment #define USE_THERMISTOR<br />
Grin yes I have tried both commented and uncommented<br />
<br />
Is it pluged in?<br />
-yes all the lights come on and motors works with test code.<br />
<br />
Notes<br />
I have not wired up the extruder. - just the xyz<br />
<br />
I had to install java 6 jre as well as java 5 as instructed to get the arduino <br />
compiler to work.<br />
<br />
I noticed that the XYZ controller screen no longer fits in the space provided.<br />
It used to before I installed the java 6 jre as recommended by the arduino compiler software.<br />
<br />
I am running host 20090804<br />
I am running v17 arduino compiler<br />
I am running ubuntu 8.04]]></description>
            <dc:creator>stephen george</dc:creator>
            <category>Software</category>
            <pubDate>Fri, 30 Oct 2009 21:54:17 -0700</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,29259,29259#msg-29259</guid>
            <title>Documentation and clear english. (no replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,29259,29259#msg-29259</link>
            <description><![CDATA[ (source) [<a href="http://www.reprap.org/bin/view/Main/Generation2Firmware" rel="nofollow" >www.reprap.org</a>] (/source)<br />
<br />
ThermistorTable.h<br />
<br />
Near the top of the file ThermistorTable.h there is a commented-out line that says #define USE_THERMISTOR. Uncomment the line if you are using a thermistor to measure temperature in your extruder; leave it commented out if you are using a thermocouple. <br />
<br />
(mycomment)<br />
Yes this is technically correct. But very confusing. Especially if it's 1 am and you have drunk too much coffee and the reprap STILL does not work.<br />
(/mycomment)<br />
<br />
(suggestion)<br />
<br />
ThermistorTable.h<br />
<br />
If you are using a thermistor (default for generation 2 electronics)<br />
Find the following line in ThermistorTable.h<br />
<br />
//#define USE_THERMISTOR<br />
and change it to<br />
#define USE_THERMISTOR<br />
<br />
if you are using a thermocouple leave it as it is. (i.e. Commented out)<br />
(/suggestion)]]></description>
            <dc:creator>stephen george</dc:creator>
            <category>Software</category>
            <pubDate>Wed, 28 Oct 2009 19:33:23 -0700</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,29258,29258#msg-29258</guid>
            <title>Document bug (no replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,29258,29258#msg-29258</link>
            <description><![CDATA[ (issue)<br />
(Source [<a href="http://www.reprap.org/bin/view/Main/DriverSoftware" rel="nofollow" >www.reprap.org</a>])<br />
<br />
Print on SNAP RepRap<br />
<br />
Earlier RepRap controllers (PIC and Arduino) used the SNAP protocol rather than GCodes for communication. Selecting this option allows you to print STL files on one of these machines. At the moment, you can't send GCodes to them, but we will add that. <br />
(/issue)<br />
<br />
You CAN now use gcodes on the arduino. This sentence is clearly wrong.<br />
<br />
Worse the arduino compiler v17 (latest) does NOT seem to compile the snap code.<br />
Works fine with v11 just not v17.]]></description>
            <dc:creator>stephen george</dc:creator>
            <category>Software</category>
            <pubDate>Wed, 28 Oct 2009 19:14:09 -0700</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,29200,29200#msg-29200</guid>
            <title>Read/Write source code of ReplicatorG? (no replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,29200,29200#msg-29200</link>
            <description><![CDATA[ Hi all,<br />
<br />
I left a message under the name "BingDai" at MakerBot to see if I can get the Read/Write ReplicatorG source code. (Google Code had Read-only.) I'd post it here again to try to get more exposure.. Thanks!<br />
<br />
-Bing<br />
<br />
<br />
<br />
[<a href="http://blog.makerbot.com/2009/10/02/replicator-0009-and-firmware-v1-6-on-the-loose/#more-633" rel="nofollow" >blog.makerbot.com</a>]<br />
<br />
"Hi Adam,<br />
<br />
Hooray for the release of 0009!<br />
<br />
I am currently working on a Reprap related project with my team. We plan to add some new features to Reprap and we’re expecting to customize the ReplicatorG for our need.<br />
<br />
We tried to find the editable source code from [<a href="http://code.google.com/p/replicatorg/source/browse/and" rel="nofollow" >code.google.com</a>] [<a href="http://replicatorg.googlecode.com/svn/" rel="nofollow" >replicatorg.googlecode.com</a>]. However, seems both of them are read-only.<br />
<br />
I’m just wondering can I get a package of source code that my team can edit? That would be great help!<br />
<br />
Thanks,<br />
Bing<br />
"]]></description>
            <dc:creator>BingDai</dc:creator>
            <category>Software</category>
            <pubDate>Tue, 27 Oct 2009 22:16:19 -0700</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,29127,29127#msg-29127</guid>
            <title>How might the news in this post affect Rep Rap? (2 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,29127,29127#msg-29127</link>
            <description><![CDATA[ "the Creative Commons tells GOSH to buzz off because they don’t want to help make an Open Source Hardware-specific license, instead they basically said, “hey guys, go learn about patents.” And now, Apple’s 64 bit update java dev team conveniently decided it was time to refactor the library base for 64 bit, leaving anyone who had coded an app for 32 bit hanging in the dark."<br />
<br />
<br />
[<a href="http://antipastohw.blogspot.com/2009/10/very-bad-week-for-open-source-hardware.html" rel="nofollow" >antipastohw.blogspot.com</a>]]]></description>
            <dc:creator>BodgeIt</dc:creator>
            <category>Software</category>
            <pubDate>Tue, 27 Oct 2009 17:32:24 -0700</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,29108,29108#msg-29108</guid>
            <title>Help with 5D firmware? (20 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,29108,29108#msg-29108</link>
            <description><![CDATA[ Is anyone else using this firmware?  I've got a few issues with it.<br />
<br />
I'm running a Darwin with a mix of Gen 3 electronics and Gen 2 stepper drivers, a Motherboard 1.2 and an Extruder Controller 2.2 with a stepper driven extruder.<br />
<br />
My main issue is the step timing - I can rune G1E10F1000 fine, or G1X10F1000 fine, but if I run G1X10E10F1000 the speed drops right down to about 0.1 steps/s on the X, and the E never moves.  Any ideas?<br />
<br />
Also, I noticed in the code that there are some functions to adjust the extruder stepper PWM rate - is it possible to adjust that on the fly, without changing the default and recompiling?<br />
<br />
Finally, is there any documentation on this firmware yet?<br />
<br />
Thanks.<br />
<br />
Wade]]></description>
            <dc:creator>Wade</dc:creator>
            <category>Software</category>
            <pubDate>Wed, 18 Nov 2009 10:37:07 -0800</pubDate>
        </item>
        <item>
            <guid>http://dev.forums.reprap.org/read.php?12,28825,28825#msg-28825</guid>
            <title>Python error message &quot;IndentationError: unindent does not match any outer indentation level&quot; (6 replies)</title>
            <link>http://dev.forums.reprap.org/read.php?12,28825,28825#msg-28825</link>
            <description><![CDATA[ Hi,<br />
<br />
I am trying to use Python to compile cam.py, which is the only Gcode generator I found which takes .svg as its input. <br />
<br />
(The source code of cam.py is [<a href="http://web.media.mit.edu/~neilg/fab/dist/cam.py" rel="nofollow" >web.media.mit.edu</a>].<br />
The Python runs on Eclipse via a plugin called Pydev [<a href="http://pydev.org/index.html" rel="nofollow" >pydev.org</a>].)<br />
<br />
The error message occurs: <br />
"    line += 1<br />
            ^<br />
IndentationError: unindent does not match any outer indentation level"<br />
<br />
<br />
I know that Python is extremely strict with identation (a misuse of tab/space occurs the indentation error), so I suspect that, when I copy&paste the cam.py source code from a website into Python, I also pasted some unecessary tab/space that confuses Python. <br />
<br />
I tried to fix the indentation problem by deleting/adding spaces to each line, but it is rather tedious, and I may accidentally create new bugs too. Therefore I am not sure how to solve this problem. <br />
<br />
Could anyone help me with it? Thanks a lot!<br />
<br />
<br />
-Bing]]></description>
            <dc:creator>BingDai</dc:creator>
            <category>Software</category>
            <pubDate>Fri, 23 Oct 2009 16:59:59 -0700</pubDate>
        </item>
    </channel>
</rss>
