From 441742cfd83667fe8e2507a35cc0207687519650 Mon Sep 17 00:00:00 2001 From: FormerLurker Date: Sun, 18 Jul 2021 17:30:25 -0500 Subject: Fix bytes string when logging from python. Reduce notification period from 1 sec to 0.5 sec and add an argument to control this (not added to console app yet). --- ArcWelder/arc_welder.cpp | 5 +++-- ArcWelder/arc_welder.h | 13 +++++++++++-- PyArcWelder/py_arc_welder_extension.cpp | 4 +++- PyArcWelder/py_logger.cpp | 4 +++- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/ArcWelder/arc_welder.cpp b/ArcWelder/arc_welder.cpp index 1e601e5..b966b62 100644 --- a/ArcWelder/arc_welder.cpp +++ b/ArcWelder/arc_welder.cpp @@ -54,6 +54,7 @@ arc_welder::arc_welder( double extrusion_rate_variance_percent, int max_gcode_length, int buffer_size, + double notification_period_seconds, progress_callback callback) : current_arc_( DEFAULT_MIN_SEGMENTS, buffer_size, @@ -95,10 +96,10 @@ arc_welder::arc_welder( allow_travel_arcs_ = allow_travel_arcs; allow_dynamic_precision_ = allow_dynamic_precision; extrusion_rate_variance_percent_ = extrusion_rate_variance_percent; - notification_period_seconds = 1; lines_processed_ = 0; gcodes_processed_ = 0; file_size_ = 0; + notification_period_seconds_ = notification_period_seconds; last_gcode_line_written_ = 0; points_compressed_ = 0; arcs_created_ = 0; @@ -192,7 +193,7 @@ long arc_welder::get_file_size(const std::string& file_path) double arc_welder::get_next_update_time() const { - return clock() + (notification_period_seconds * CLOCKS_PER_SEC); + return clock() + (notification_period_seconds_ * CLOCKS_PER_SEC); } double arc_welder::get_time_elapsed(double start_clock, double end_clock) diff --git a/ArcWelder/arc_welder.h b/ArcWelder/arc_welder.h index ea10257..7bcff0c 100644 --- a/ArcWelder/arc_welder.h +++ b/ArcWelder/arc_welder.h @@ -433,6 +433,7 @@ typedef bool(*progress_callback)(arc_welder_progress, logger* p_logger, int logg #define DEFAULT_ALLOW_DYNAMIC_PRECISION false #define DEFAULT_ALLOW_TRAVEL_ARCS true #define DEFAULT_EXTRUSION_RATE_VARIANCE_PERCENT 0.05 +#define DEFAULT_NOTIFICATION_PERIOD_SECONDS 0.5 struct arc_welder_args { @@ -454,7 +455,9 @@ struct arc_welder_args extrusion_rate_variance_percent(DEFAULT_EXTRUSION_RATE_VARIANCE_PERCENT), max_gcode_length(DEFAULT_MAX_GCODE_LENGTH), buffer_size(DEFAULT_GCODE_BUFFER_SIZE), + notification_period_seconds(DEFAULT_NOTIFICATION_PERIOD_SECONDS), callback(NULL){}; + arc_welder_args(std::string source, std::string target, logger* ptr_log) : arc_welder_args() { @@ -479,6 +482,7 @@ struct arc_welder_args double extrusion_rate_variance_percent; int buffer_size; int max_gcode_length; + double notification_period_seconds; progress_callback callback; @@ -520,7 +524,8 @@ struct arc_welder_args stream << "\tMax Gcode Length : " << std::setprecision(0) << max_gcode_length << " characters\n"; } stream << "\tLog Level : " << log_level_name << "\n"; - stream << "\tHide Progress Updates : " << (callback == NULL ? "True" : "False"); + stream << "\tHide Progress Updates : " << (callback == NULL ? "True" : "False") << "\n"; + stream << "\tProgress Notification Period : " << std::setprecision(2) << notification_period_seconds << " seconds"; return stream.str(); }; @@ -560,6 +565,7 @@ public: double extrusion_rate_variance_percent, int max_gcode_length, int buffer_size, + double notification_period_seconds, progress_callback callback); arc_welder(arc_welder_args args) : arc_welder( @@ -580,6 +586,7 @@ public: args.extrusion_rate_variance_percent, args.max_gcode_length, args.buffer_size, + args.notification_period_seconds, args.callback ){}; @@ -587,10 +594,11 @@ public: void set_logger_type(int logger_type); virtual ~arc_welder(); arc_welder_results process(); - double notification_period_seconds; + protected: virtual bool on_progress_(const arc_welder_progress& progress); private: + arc_welder_progress get_progress_(long source_file_position, double start_clock); void add_arcwelder_comment_to_target(); void reset(); @@ -617,6 +625,7 @@ private: int points_compressed_; int arcs_created_; int arcs_aborted_by_flow_rate_; + double notification_period_seconds_; source_target_segment_statistics segment_statistics_; source_target_segment_statistics travel_statistics_; long get_file_size(const std::string& file_path); diff --git a/PyArcWelder/py_arc_welder_extension.cpp b/PyArcWelder/py_arc_welder_extension.cpp index b386d9f..1e440f9 100644 --- a/PyArcWelder/py_arc_welder_extension.cpp +++ b/PyArcWelder/py_arc_welder_extension.cpp @@ -198,7 +198,9 @@ extern "C" args.py_progress_callback = py_progress_callback; args.log = p_py_logger; py_arc_welder arc_welder_obj(args); - arc_welder_results results = arc_welder_obj.process(); + arc_welder_results results; + results = arc_welder_obj.process(); + message = "py_gcode_arc_converter.ConvertFile - Arc Conversion Complete."; p_py_logger->log(GCODE_CONVERSION, INFO, message); Py_XDECREF(py_progress_callback); diff --git a/PyArcWelder/py_logger.cpp b/PyArcWelder/py_logger.cpp index 0418ef5..0ae6548 100644 --- a/PyArcWelder/py_logger.cpp +++ b/PyArcWelder/py_logger.cpp @@ -203,7 +203,9 @@ void py_logger::log(const int logger_type, const int log_level, const std::strin return; } } - PyObject* pyMessage = gcode_arc_converter::PyBytesOrString_FromString(message); + //PyObject* pyMessage = gcode_arc_converter::PyBytesOrString_FromString(message); + PyObject* pyMessage = gcode_arc_converter::PyUnicode_SafeFromString(message); + if (pyMessage == NULL) { std::cout << "Unable to convert the log message '" << message.c_str() << "' to a PyString/Unicode message.\r\n"; -- cgit v1.2.3