Function wasn't sending terminal $ symbol.
Largely working but takes a step each time it receives a serial port command. So if you repeatedly ask to go to the current position, the motor pulses along.