techninja / cncserver

A RESTful API server for driving serial based CNC devices
133 stars 39 forks source link

WIP: Batch API and Absolute pen position #85

Closed techninja closed 5 years ago

techninja commented 7 years ago

Held back by the massive overhead in sending 100k+ ReSTful commands, I intend to wiping the slate clean on that for RoboPaint by introducing a brand new API endpoint: /v1/batch. This allows a simple JSON format to hold all data for each command as it would be sent individually, into one command, reading from a local/remote file, or even data in the POST body.

To do this requires removing one of the last remaining oddities of the original client system: the distance counter. This free's up the client to manage this during spooling and send & forget the rest of the commands, allowing for batch sends possibly 10x - 50x faster with the request overhead removed. To aid in the clientside requirement of taking this over, I'm going to add another oft wanted feature: absolute measurement pen positioning. Allowing for MM or IN absolute measurement X/Y positions.

This PR will remain WIP until I can make sure these changes mesh well and make sense with the evil-mad/robopaint#287 it's meant to be helping complete.

This may also require revamping the position update timing because of unknowns with the serial buffer sends.

techninja commented 5 years ago

RP release never happened, I'm going to go ahead and merge this into a new v3 branch and attempt to pull together all speculative work with a new rewrite to allow RP like functionality from CNCServer directly.