vvuk / cassini

ELEGOO 3D printer network protocol client
MIT License
26 stars 13 forks source link

Saturn 3 Ultra - Hanging after file upload. #4

Open Vmess34 opened 10 months ago

Vmess34 commented 10 months ago

The file upload works just fine. It is available on the printer, and I can force exit with ctrl+C and run the print command with no issue. We just get a hang with no messaging. Happens on any .goo file, any size. My attempts range from ~14MB to ~500MB. I can give the full --debug output if its needed, but for now this is the end of it, which does correctly show the transition of states:


on 168490728: 16:52:46,728 DEBUG: STATUS: {'CurrentStatus': 2, 'PreviousStatus': 0, 'PrintInfo': {'Status': 0, 'CurrentLayer': 0, 'TotalLayer': 0, 'CurrentTicks': 0, 'TotalTicks': 0, 'ErrorNumber': 0, 'Filename': ''}, 'FileTransferInfo': {'Status': 0, 'DownloadOffset': 175320953, 'CheckOffset': 0, 'FileTotalSize': 175320953, 'Filename': 'local.goo'}}
local.goo |████████████████████████████████████████| 100% [175320953/175320953] (2483410.38/s)
16:52:46,850 DEBUG: STATUS: {'CurrentStatus': 0, 'PreviousStatus': 2, 'PrintInfo': {'Status': 0, 'CurrentLayer': 0, 'TotalLayer': 0, 'CurrentTicks': 0, 'TotalTicks': 0, 'ErrorNumber': 0, 'Filename': ''}, 'FileTransferInfo': {'Status': 2, 'DownloadOffset': 175320953, 'CheckOffset': 0, 'FileTotalSize': 175320953, 'Filename': 'local.goo'}}

Afterward, console just sits until ctrl+C or other interrupt is sent, where I'm met with the following exception:

File "C:\Users\[User]\Desktop\cassini-main\cassini-main\cassini.py", line 192, in <module>
    main()
  File "C:\Users\[User]\Desktop\cassini-main\cassini-main\cassini.py", line 188, in main
    asyncio.run(do_upload(printer, args.filename, start_printing=args.start_printing))
  File "C:\Users\[User]\AppData\Local\Programs\Python\Python312\Lib\asyncio\runners.py", line 193, in run
    with Runner(debug=debug, loop_factory=loop_factory) as runner:
  File "C:\Users\[User]\AppData\Local\Programs\Python\Python312\Lib\asyncio\runners.py", line 62, in __exit__
    self.close()
  File "C:\Users\[User]\AppData\Local\Programs\Python\Python312\Lib\asyncio\runners.py", line 70, in close
    _cancel_all_tasks(loop)
  File "C:\Users\[User]\AppData\Local\Programs\Python\Python312\Lib\asyncio\runners.py", line 205, in _cancel_all_tasks
    loop.run_until_complete(tasks.gather(*to_cancel, return_exceptions=True))
  File "C:\Users\[User]\AppData\Local\Programs\Python\Python312\Lib\asyncio\base_events.py", line 651, in run_until_complete
    self.run_forever()
  File "C:\Users\[User]\AppData\Local\Programs\Python\Python312\Lib\asyncio\windows_events.py", line 321, in run_forever
    super().run_forever()
  File "C:\Users\[User]\AppData\Local\Programs\Python\Python312\Lib\asyncio\base_events.py", line 618, in run_forever
    self._run_once()
  File "C:\Users\[User]\AppData\Local\Programs\Python\Python312\Lib\asyncio\base_events.py", line 1913, in _run_once
    event_list = self._selector.select(timeout)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\[User]\AppData\Local\Programs\Python\Python312\Lib\asyncio\windows_events.py", line 444, in select
    self._poll(timeout)
  File "C:\Users\[User]\AppData\Local\Programs\Python\Python312\Lib\asyncio\windows_events.py", line 769, in _poll
    status = _overlapped.GetQueuedCompletionStatus(self._iocp, ms)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyboardInterrupt
16:56:10,722 ERROR: Task was destroyed but it is pending!
task: <Task cancelling name='Task-4' coro=<SimpleMQTTServer.serve_forever() running at C:\Users\[User]\Desktop\cassini-main\cassini-main\simple_mqtt_server.py:39> wait_for=<Future pending cb=[Task.task_wakeup()]> cb=[gather.<locals>._done_callback() at C:\Users\[User]\AppData\Local\Programs\Python\Python312\Lib\asyncio\tasks.py:757]>
Exception ignored in: <function StreamWriter.__del__ at 0x0000015A24A31A80>
Traceback (most recent call last):
  File "C:\Users\[User]\AppData\Local\Programs\Python\Python312\Lib\asyncio\streams.py", line 397, in __del__
  File "C:\Users\[User]\AppData\Local\Programs\Python\Python312\Lib\asyncio\streams.py", line 343, in close
  File "C:\Users\[User]\AppData\Local\Programs\Python\Python312\Lib\asyncio\proactor_events.py", line 109, in close
  File "C:\Users\[User]\AppData\Local\Programs\Python\Python312\Lib\asyncio\base_events.py", line 772, in call_soon
  File "C:\Users\[User]\AppData\Local\Programs\Python\Python312\Lib\asyncio\base_events.py", line 519, in _check_closed
RuntimeError: Event loop is closed

Afterward, everything is on the printer as expected, and can be run as normal.

jibbetson commented 3 months ago

During file upload on Mars 4 Ultra I'm getting a similar hang up after the file transfer is "100%" (albeit with different traceback asyncio errors). However, after cntl+C interrupt I cannot get the print to run.

ioc % ./cassini.py print test.goo 
12:56:11,666 INFO: Printer: Mars 4 Ultra (ELEGOO Mars 4 Ultra) (192.168.1.36)
12:56:23,116 WARNING: Too many status replies without success or failure
12:56:23,116 ERROR: Failed to start print

Question about cassini basic functionality: When a goo file gets successfully uploaded does it actually show up on the printer as a local file (i.e. accessible and could be manually printed from the printer)? Because in my case that's not happening.