<p>I have been working on a printer project that basically is a 2D printer (dot matrix type). We are using solenoids as actuators to make impressions on the paper. We are now in the process of designing custom software. But a problem that we have encountered is that we have no idea how to design software as we are a bunch of beginners in this field.</p>

<p>An idea we are working on is based on position-acknowledge technique. In this technique the computer sends G-code to the controller. The controller after reaching the position defined in code sends an acknowledgement and the computer then sends the next signal. This is the model we are currently working on. </p>

<ul>
<li>Can anyone suggest any other ideas to make this work? </li>
<li>Is Our approach right? </li>
<li>Do 3D printers work using same technique?</li>
</ul>

3D printer firmware use gcode that is derived from CNC and no acknowledgment. They send movement commands to the stepper motors like
```
G1 X10 Y10
```
to move the printhead 10 mm along the X and Y.
You could use a ready 3D printer firmware like Marlin on a 3d printer board and use the X-axis or extruder output to couple to your solenoid, sending a
```
G1 Z0.1
```
or
```
G1 E0.1
```
, which will actuate it for a short time. You might even use E and Z on different solenoids.