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 пропускаем дальше текстовую часть с G-Code пропускаем дальше
*/ */
if(p == MKS_WIFI_SERIAL_NUM){ if(p == MKS_WIFI_SERIAL_NUM){
if(mks_wifi_input(c)){ mks_wifi_input(c);
continue; continue;
}; };
}
#endif #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; uint8_t ret_val=1;
//Не отдавать данные в очередь команд, если идет печать //Не отдавать данные в очередь команд, если идет печать
if (CardReader::isPrinting()){ // if (CardReader::isPrinting()){
DEBUG("No input while printing"); // DEBUG("No input while printing");
return 1; // return 1;
} // }
if(data == ESP_PROTOC_HEAD){ if(data == ESP_PROTOC_HEAD){
payload_size = ESP_PACKET_DATA_MAX_SIZE; 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); memset((uint8_t*)mks_in_buffer,0,MKS_IN_BUFF_SIZE);
}else if(!packet_start_flag){ }else if(!packet_start_flag){
DEBUG("Byte not in packet %0X",data); DEBUG("Byte not in packet %0X",data);
return 1;
} }
if(packet_start_flag){ if(packet_start_flag){
@ -179,6 +180,7 @@ uint8_t mks_wifi_input(uint8_t data){
return 1; return 1;
} }
esp_frame.type = packet_type; esp_frame.type = packet_type;
esp_frame.dataLen = payload_size; esp_frame.dataLen = payload_size;
esp_frame.data = (uint8_t*)&mks_in_buffer[4]; esp_frame.data = (uint8_t*)&mks_in_buffer[4];
@ -198,21 +200,21 @@ uint8_t mks_wifi_input(uint8_t data){
} }
/* Если в пакете G-Сode, отдаем payload дальше в обработчик марлина */ /* Если в пакете G-Сode, отдаем payload дальше в обработчик марлина */
if((packet_type == ESP_TYPE_GCODE) && // if((packet_type == ESP_TYPE_GCODE) &&
(packet_index >= 4) && // (packet_index >= 4) &&
(packet_index < payload_size+5) // (packet_index < payload_size+5)
){ // ){
if(!check_char_allowed(data)){ // if(!check_char_allowed(data)){
ret_val=0; // ret_val=0;
}else{ // }else{
ERROR("Char not allowed: %0X %c",data,data); // ERROR("Char not allowed: %0X %c",data,data);
packet_start_flag=0; // packet_start_flag=0;
packet_index=0; // packet_index=0;
return 1; // return 1;
} // }
} // }
if(packet_start_flag){ if(packet_start_flag){
packet_index++; packet_index++;
@ -307,6 +309,26 @@ void mks_wifi_parse_packet(ESP_PROTOC_FRAME *packet){
} }
break; break;
case ESP_TYPE_GCODE: 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; break;
case ESP_TYPE_FILE_FIRST: case ESP_TYPE_FILE_FIRST:
DEBUG("[FILE_FIRST]"); DEBUG("[FILE_FIRST]");

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

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

Loading…
Cancel
Save