Обработка gcode во время печати
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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((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(!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]");
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user