Browse Source

Обработка gcode во время печати

pull/45/head
Sergey 3 years ago
parent
commit
f2c69b6950
  1. 7
      Marlin/src/gcode/queue.cpp
  2. 58
      Marlin/src/module/mks_wifi/mks_wifi.cpp
  3. 2
      Marlin/src/module/mks_wifi/mks_wifi.h

7
Marlin/src/gcode/queue.cpp

@ -429,10 +429,9 @@ void GCodeQueue::get_serial_commands() {
текстовую часть с G-Code пропускаем дальше
*/
if(p == MKS_WIFI_SERIAL_NUM){
if(mks_wifi_input(c)){
continue;
};
}
mks_wifi_input(c);
continue;
};
#endif

58
Marlin/src/module/mks_wifi/mks_wifi.cpp

@ -135,10 +135,10 @@ uint8_t mks_wifi_input(uint8_t data){
uint8_t ret_val=1;
//Не отдавать данные в очередь команд, если идет печать
if (CardReader::isPrinting()){
DEBUG("No input while printing");
return 1;
}
// if (CardReader::isPrinting()){
// DEBUG("No input while printing");
// return 1;
// }
if(data == ESP_PROTOC_HEAD){
payload_size = ESP_PACKET_DATA_MAX_SIZE;
@ -147,6 +147,7 @@ uint8_t mks_wifi_input(uint8_t data){
memset((uint8_t*)mks_in_buffer,0,MKS_IN_BUFF_SIZE);
}else if(!packet_start_flag){
DEBUG("Byte not in packet %0X",data);
return 1;
}
if(packet_start_flag){
@ -179,6 +180,7 @@ uint8_t mks_wifi_input(uint8_t data){
return 1;
}
esp_frame.type = packet_type;
esp_frame.dataLen = payload_size;
esp_frame.data = (uint8_t*)&mks_in_buffer[4];
@ -198,21 +200,21 @@ uint8_t mks_wifi_input(uint8_t data){
}
/* Если в пакете G-Сode, отдаем payload дальше в обработчик марлина */
if((packet_type == ESP_TYPE_GCODE) &&
(packet_index >= 4) &&
(packet_index < payload_size+5)
){
if(!check_char_allowed(data)){
ret_val=0;
}else{
ERROR("Char not allowed: %0X %c",data,data);
packet_start_flag=0;
packet_index=0;
return 1;
}
// if((packet_type == ESP_TYPE_GCODE) &&
// (packet_index >= 4) &&
// (packet_index < payload_size+5)
// ){
// if(!check_char_allowed(data)){
// ret_val=0;
// }else{
// ERROR("Char not allowed: %0X %c",data,data);
// packet_start_flag=0;
// packet_index=0;
// return 1;
// }
}
// }
if(packet_start_flag){
packet_index++;
@ -307,6 +309,26 @@ void mks_wifi_parse_packet(ESP_PROTOC_FRAME *packet){
}
break;
case ESP_TYPE_GCODE:
char gcode_cmd[50];
uint32_t cmd_index;
// packet->data[packet->dataLen] = 0;
// DEBUG("Gcode packet: %s",packet->data);
cmd_index = 0;
memset(gcode_cmd,0,50);
for(uint32_t i=0; i<packet->dataLen; i++){
if(packet->data[i] != 0x0A){
gcode_cmd[cmd_index++] = packet->data[i];
}else{
GCodeQueue::ring_buffer.enqueue((const char *)gcode_cmd, false, MKS_WIFI_SERIAL_NUM);
cmd_index = 0;
memset(gcode_cmd,0,50);
}
}
break;
case ESP_TYPE_FILE_FIRST:
DEBUG("[FILE_FIRST]");

2
Marlin/src/module/mks_wifi/mks_wifi.h

@ -4,7 +4,7 @@
#include "../../inc/MarlinConfig.h"
#include "../../libs/Segger/log.h"
#include "mks_wifi_settings.h"
#include "../../gcode/queue.h"
void mks_wifi_out_add(uint8_t *data, uint32_t size);

Loading…
Cancel
Save