Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    DSF 2.2.0 long comments in gcode causes an exception

    Scheduled Pinned Locked Moved
    DSF Development
    3
    7
    416
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • gloomyandyundefined
      gloomyandy
      last edited by gloomyandy

      Hi, if I attempt to print or simulate a file with a long comment line I get an exception and the print/simulation is cancelled. The exception is given below:

      May  8 21:06:40 duet3 DuetControlServer[1908]: [info] Starting file print
      May  8 21:06:40 duet3 DuetControlServer[1908]: [error] Code ;12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 has thrown an exception
      May  8 21:06:40 duet3 DuetControlServer[1908]:    System.ArgumentException: Failed to serialize code
      May  8 21:06:40 duet3 DuetControlServer[1908]:  ---> System.ArgumentException: Destination is too short. (Parameter 'destination')
      May  8 21:06:40 duet3 DuetControlServer[1908]:    at DuetControlServer.SPI.Serialization.Writer.WriteCode(Span`1 to, Code code) in /home/pi/DuetSoftwareFramework/src/DuetControlServer/SPI/Serialization/Writer.cs:line 133
      May  8 21:06:40 duet3 DuetControlServer[1908]:    at DuetControlServer.SPI.DataTransfer.GetCodeSize(Code code) in /home/pi/DuetSoftwareFramework/src/DuetControlServer/SPI/DataTransfer.cs:line 523
      May  8 21:06:40 duet3 DuetControlServer[1908]:    --- End of inner exception stack trace ---
      May  8 21:06:40 duet3 DuetControlServer[1908]:    at DuetControlServer.SPI.DataTransfer.GetCodeSize(Code code) in /home/pi/DuetSoftwareFramework/src/DuetControlServer/SPI/DataTransfer.cs:line 527
      May  8 21:06:40 duet3 DuetControlServer[1908]:    at DuetControlServer.SPI.Channel.Processor.ProcessCode(Code code) in /home/pi/DuetSoftwareFramework/src/DuetControlServer/SPI/Channel/Processor.cs:line 280
      May  8 21:06:40 duet3 DuetControlServer[1908]:    at DuetControlServer.SPI.Interface.ProcessCode(Code code) in /home/pi/DuetSoftwareFramework/src/DuetControlServer/SPI/Interface.cs:line 211
      May  8 21:06:40 duet3 DuetControlServer[1908]:    at DuetControlServer.Commands.Code.Process() in /home/pi/DuetSoftwareFramework/src/DuetControlServer/Commands/Code.cs:line 412
      May  8 21:06:40 duet3 DuetControlServer[1908]:    at DuetControlServer.Commands.Code.ExecuteInternally() in /home/pi/DuetSoftwareFramework/src/DuetControlServer/Commands/Code.cs:line 336
      May  8 21:06:40 duet3 DuetControlServer[1908]: [info] File: Optional macro file start.g not found
      May  8 21:06:40 duet3 DuetControlServer[1908]: [info] Starting macro file homeall.g on channel File
      May  8 21:06:51 duet3 DuetControlServer[1908]: [info] File: Optional macro files deployprobe0.g and deployprobe.g not found
      May  8 21:06:56 duet3 DuetControlServer[1908]: [info] File: Finished intermediate macro file deployprobe0.g
      May  8 21:06:56 duet3 DuetControlServer[1908]: [info] File: Optional macro files retractprobe0.g and retractprobe.g not found
      May  8 21:06:56 duet3 DuetControlServer[1908]: [info] Finished macro file homeall.g
      May  8 21:06:56 duet3 DuetControlServer[1908]: [error] (comment) has thrown an exception: [ArgumentException] Failed to serialize code
      May  8 21:06:57 duet3 DuetControlServer[1908]: [info] Aborted job file
      May  8 21:06:57 duet3 DuetControlServer[1908]: [info] Cancelled printing file 0:/gcodes/xytest3.gcode, print time was 0h 0m
      

      The test file is given below:

      G28
      ;12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
      G1 X0 Y0
      
      

      Note that some slicers (like Prusa Slicer) generate long comment lines containing a version of the start and end gcode and other parameters. So this problem will cause gcode generated by those slicers to fail (luckily this is usually at the end of the file).

      The same files seem to be handled fine when not using SBC. Perhaps long comments could be truncated before being sent to the firmware?

      NOTE: I am using the LPC1768 version of RRF with SBC and DSF not a Duet3 board. However I think that this is a general issue and is not specific to the LPC build. On that topic a small plea to not solve this by simply making the buffers larger (at least on the firmware side), we are already struggling for space!

      1 Reply Last reply Reply Quote 0
      • dc42undefined
        dc42 administrators
        last edited by

        Thanks, I've asked @chrishamm to look into this.

        Duet WiFi hardware designer and firmware engineer
        Please do not ask me for Duet support via PM or email, use the forum
        http://www.escher3d.com, https://miscsolutions.wordpress.com

        1 Reply Last reply Reply Quote 0
        • gloomyandyundefined
          gloomyandy
          last edited by

          Thanks, let me know if you need any more information. @jay_s_uk has reproduced this with a Duet3 so it looks like it is not LPC1768 specific.

          1 Reply Last reply Reply Quote 1
          • chrishammundefined
            chrishamm administrators
            last edited by

            Thanks for the report, I'll truncate whole-line comments from DSF to RRF if they exceed 100 characters.

            Duet software engineer

            gloomyandyundefined 1 Reply Last reply Reply Quote 0
            • gloomyandyundefined
              gloomyandy @chrishamm
              last edited by

              @chrishamm Thanks makes sense to me. May I also ask what the thought is behind sensing comments to the firmware? I assume there must be some situations in which the firmware interprets them in some way?

              chrishammundefined 1 Reply Last reply Reply Quote 0
              • chrishammundefined
                chrishamm administrators @gloomyandy
                last edited by

                @gloomyandy I've added support for it because whole-line comments are used for object identification.

                Duet software engineer

                1 Reply Last reply Reply Quote 0
                • gloomyandyundefined
                  gloomyandy
                  last edited by

                  Ah that makes sense! Thanks for the info Chris.

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post
                  Unless otherwise noted, all forum content is licensed under CC-BY-SA