This repository has been archived on 2025-02-01. You can view files and clone it, but cannot push or open issues or pull requests.
reprapfirmware-dc42/GCodes.ino
2013-04-15 21:41:07 +01:00

99 lines
1.8 KiB
C++

/****************************************************************************************************
RepRapFirmware - G Codes
This class interprets G Codes from one or more sources, and calls the functions in Move, Heat etc
that drive the machine to do what the G Codes command.
-----------------------------------------------------------------------------------------------------
Version 0.1
13 February 2013
Adrian Bowyer
RepRap Professional Ltd
http://reprappro.com
Licence: GPL
****************************************************************************************************/
#include "RepRapFirmware.h"
GCodes::GCodes(Platform* p, Webserver* w)
{
active = false;
//Serial.println("GCodes constructor");
platform = p;
webserver = w;
}
void GCodes::Exit()
{
active = false;
}
void GCodes::Init()
{
lastTime = platform->Time();
gcodePointer = 0;
active = true;
moveAvailable = false;
heatAvailable = false;
}
void GCodes::ActOnGcode()
{
platform->Message(HOST_MESSAGE, "GCode: ");
platform->Message(HOST_MESSAGE, gcodeBuffer);
platform->Message(HOST_MESSAGE, "<br>\n");
}
void GCodes::Spin()
{
if(!active)
return;
if(webserver->Available())
{
gcodeBuffer[gcodePointer] = webserver->Read();
if(gcodeBuffer[gcodePointer] == '\n' || !gcodeBuffer[gcodePointer])
{
gcodeBuffer[gcodePointer] = 0;
gcodePointer = 0;
ActOnGcode();
gcodeBuffer[0] = 0;
} else
gcodePointer++;
if(gcodePointer >= GCODE_LENGTH)
{
platform->Message(HOST_MESSAGE, "GCodes: G Code buffer length overflow.");
gcodePointer = 0;
gcodeBuffer[0] = 0;
}
}
}
boolean GCodes::ReadMove(float* m)
{
if(!moveAvailable)
return false;
for(char i = 0; i < DRIVES; i++)
m[i] = moveBuffer[i];
moveAvailable = false;
}
boolean GCodes::ReadHeat(float* h)
{
}