Add command M928 to enable logging to file of received gcode commands

master
Ketil Froyn 11 years ago
parent 92782f9252
commit 07e11c7cf5

@ -132,6 +132,7 @@
// M908 - Control digital trimpot directly. // M908 - Control digital trimpot directly.
// M350 - Set microstepping mode. // M350 - Set microstepping mode.
// M351 - Toggle MS1 MS2 pins directly. // M351 - Toggle MS1 MS2 pins directly.
// M928 - Start SD logging (M928 filename.g) - ended by M29
// M999 - Restart after being stopped by error // M999 - Restart after being stopped by error
//Stepper Movement Variables //Stepper Movement Variables
@ -394,7 +395,14 @@ void loop()
if(strstr_P(cmdbuffer[bufindr], PSTR("M29")) == NULL) if(strstr_P(cmdbuffer[bufindr], PSTR("M29")) == NULL)
{ {
card.write_command(cmdbuffer[bufindr]); card.write_command(cmdbuffer[bufindr]);
SERIAL_PROTOCOLLNPGM(MSG_OK); if(card.logging)
{
process_commands();
}
else
{
SERIAL_PROTOCOLLNPGM(MSG_OK);
}
} }
else else
{ {
@ -949,6 +957,15 @@ void process_commands()
card.removeFile(strchr_pointer + 4); card.removeFile(strchr_pointer + 4);
} }
break; break;
case 928: //M928 - Start SD write
starpos = (strchr(strchr_pointer + 5,'*'));
if(starpos != NULL){
char* npos = strchr(cmdbuffer[bufindr], 'N');
strchr_pointer = strchr(npos,' ') + 1;
*(starpos-1) = '\0';
}
card.openLogFile(strchr_pointer+5);
break;
#endif //SDSUPPORT #endif //SDSUPPORT

@ -16,6 +16,7 @@ CardReader::CardReader()
sdprinting = false; sdprinting = false;
cardOK = false; cardOK = false;
saving = false; saving = false;
logging = false;
autostart_atmillis=0; autostart_atmillis=0;
autostart_stilltocheck=true; //the sd start is delayed, because otherwise the serial cannot answer fast enought to make contact with the hostsoftware. autostart_stilltocheck=true; //the sd start is delayed, because otherwise the serial cannot answer fast enought to make contact with the hostsoftware.
@ -212,6 +213,11 @@ void CardReader::pauseSDPrint()
} }
void CardReader::openLogFile(char* name)
{
logging = true;
openFile(name, false);
}
void CardReader::openFile(char* name,bool read) void CardReader::openFile(char* name,bool read)
{ {
@ -471,6 +477,7 @@ void CardReader::closefile()
file.sync(); file.sync();
file.close(); file.close();
saving = false; saving = false;
logging = false;
} }
void CardReader::getfilename(const uint8_t nr) void CardReader::getfilename(const uint8_t nr)

Loading…
Cancel
Save