Read GCODE from a laptop and parse it into usable structures.
Fork of gCodeParser by
Revision 1:7818b02dde4b, committed 2014-04-29
- Comitter:
- jford38
- Date:
- Tue Apr 29 21:51:12 2014 +0000
- Parent:
- 0:fa0891ea897b
- Child:
- 2:6e824fbbe94e
- Commit message:
- Before I fuck it all up. Doesn't really work. Only get zeros for args.
Changed in this revision
--- a/4DGL-uLCD-SE.lib Mon Apr 14 05:03:29 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://mbed.org/users/4180_1/code/4DGL-uLCD-SE/#e39a44de229a
--- a/gparser.cpp Mon Apr 14 05:03:29 2014 +0000 +++ b/gparser.cpp Tue Apr 29 21:51:12 2014 +0000 @@ -5,18 +5,13 @@ #include "gparser.h" #include "mbed.h" #include "MODSERIAL.h" +#include "uLCD_4DGL.h" #include <ctype.h> -#define TEST - -#ifdef TEST -#include "uLCD_4DGL.h" -uLCD_4DGL uLCD(p9,p10,p11); -#endif - #define FEEDME 10 #define END_OF_TRANSMISSION 23 extern MODSERIAL gpc; +//uLCD_4DGL uLCD(p9, p10, p11); /************VARS*******************************/ DigitalOut led1(LED1); @@ -25,6 +20,7 @@ DigitalOut led4(LED4); G_cmd gcmd_list[CMD_LIST_SIZE]; // buffer to be filled with commands, main program retrieves commands from here +//extern G_cmd* gcmd_list; // buffer used to transfer the serial buffer contents and parse them into cmd structure char rx_buff[CMD_BUFFER_SIZE]; @@ -55,10 +51,8 @@ * to the pc to request another gcode line * returns a pointer to the allocated list of commands. */ -G_cmd* fillInCmdList() +int fillInCmdList() { - //list_position = 0; // incremented by parseGcode at the end - // end_flag_received should be detected in parseGcode() while(endTransmission == false) { // Light up LED1 to indicate the mbed is ready to receive Serial commands @@ -75,12 +69,14 @@ led2 = 0; // parsing stage is over } } + /* uLCD.printf("Commands copied %d\n", list_position); - - for(int i = (list_position - 4); i < list_position; i++) { - uLCD.printf("%d X:%f Y:%f Z:%f F:%f.\r\n", gcmd_list[i].G, gcmd_list[i].X, gcmd_list[i].Y, gcmd_list[i].Z, gcmd_list[i].F); + for(int i = 0; i < list_position; i++) { + uLCD.printf("G:%d X:%.2f Y:%.2f Z:%.2f I:%.2f J:%.2f F:%.2f\r\n", gcmd_list[i].G, gcmd_list[i].X, gcmd_list[i].Y, gcmd_list[i].Z, gcmd_list[i].I, gcmd_list[i].J, gcmd_list[i].F); + wait(10); + uLCD.cls(); } - + */ led1 = 1; wait(0.5); led1 = 0; @@ -94,7 +90,7 @@ wait(0.5); led3 = 1; led2 = 1; - return gcmd_list; + return (list_position); } //interrupt routine called when the null terminator is received @@ -118,8 +114,6 @@ // in case there are leading spaces char* cmdP = strtok(rx_buff, " G"); - //uLCD.printf("cmdP is pointing now to %s\n", cmdP); - char coord_label[2]; //int g = atoi(cmdP); @@ -128,6 +122,12 @@ //fill out the command number field gcmd_list[list_position].G = atoi(cmdP); + gcmd_list[list_position].X = -1; + gcmd_list[list_position].Y = -1; + gcmd_list[list_position].Z = -1; + gcmd_list[list_position].F = -1; + gcmd_list[list_position].I = -1; + gcmd_list[list_position].J = -1; //uLCD.printf("%d: ", gcmd_list[list_position].G); @@ -145,6 +145,14 @@ // now print the number //uLCD.printf("%s ", cmdP); + /* + gcmd_list[list_position].X = -1; + gcmd_list[list_position].Y = -1; + gcmd_list[list_position].Z = -2; + gcmd_list[list_position].F = -1; + gcmd_list[list_position].I = -1; + gcmd_list[list_position].J = -1; + */ switch(coord_label[0]) { case 'X': gcmd_list[list_position].X = atof(cmdP); @@ -165,7 +173,7 @@ gcmd_list[list_position].J = atof(cmdP); break; default: - + break; }// switch } // while
--- a/gparser.h Mon Apr 14 05:03:29 2014 +0000 +++ b/gparser.h Tue Apr 29 21:51:12 2014 +0000 @@ -20,7 +20,7 @@ void parseGcode(); void parserInit(); -G_cmd* fillInCmdList(); +int fillInCmdList(); void cmd_Received(MODSERIAL_IRQ_INFO *q); #endif
--- a/main.cpp Mon Apr 14 05:03:29 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -#include "mbed.h" -#include "gparser.h" -#include "MODSERIAL.h" - - -#define CMD_LIST_SIZE 512 - -MODSERIAL gpc(USBTX, USBRX); - -extern G_cmd* gcmd_list; - - -int main() -{ - parserInit(); - fillInCmdList(); -}