Hello,
First, in last 6 years I worked a lot with Zebra printers and I can tell you that:
1. You have to specify the model in detail: LP2844 or TLP2844? The printer has thermal head or is using a ribbon? Its firmware supports ZPL1 or ZPL2? The ZPL template contains not only data to be printed but a bunch of printer/printing specific parameters - label dims, speed, contrast, sensing gap mode, feeder step and more; if a wrong ZPL template is generated, one could easily block the printer;
2. Code39 IS NOT 2D encoding! It's 1D. 2D encoding is QR - for example; Code39,EAN13,Code128 etc. are 1D encoding standards;
3. For generating the ZPL template the label dimensions are critical, but you have to specify the label orientation - the label you specified could be in portrait or landscape rolls and
4. Finally, if you really want a single DLL, you have to ask for at least 5 input parameters: Name (mandatory),ID (mandatory),printer name - optional (if it's connected by USB/serial cable,IP - optional (if the comm. is made by tcp) and, of course, Port - optional.
Regards.