Hello,
In my research about Driver Development I came up with your community. I have found very interesting resources around that helped me to understand a little better this commonly unknown world on development, at least it cleared out some initial questions.
Recently, I got into a company where the previous developer left. I have to maintain and develop a Java software, let’s call it Label Editor for now on. This company produces some mechanical machines that have an attached printer on it and was created by the company itself. The printer receives commands through this Label editor using either Ethernet or RS485 connections and their own protocol for the data.
Now the company wants to allow clients optionally stop using this Label Editor and have a “Printer Driver” who is just able to send images to the printers. They simply want to press the print button on a Windows application and choose one of the printers around.
I have been looking around and tested some of the driver samples on MSDN but I’m not really sure how to proceed. I have no deadline for now so I’m not in a hurry and I’m willing to learn all that I need to accomplish this task (but paying for a solution is also an option), I’m used to take care to research for a solution all by myself for most of the issues (My boss was counting on that) but right now I’m not really sure how to proceed with this project.
- Should I really create a driver that can communicate using TCP/IP? (RS485/COM is a bonus for now, not a requirement)
- Is it possible for a driver to use sockets with TCP/IP or that’s an issue?
- Where do I start with this? I was unable to deploy the XPS driver sample. I was able to deploy a v4 printer driver but I have no idea how to run / test it.
- How can I make the target computer show a Printer that is using the deployed driver?
- Do I actually need a “software printer” with just an Input field for the printer identifier (it matches the last octet of the IP address) as the hardware works standalone? Usually the IP addresses only differ on last octet, the first three octets and the port are usually static so they can be a config value somewhere on the machine.
- How do I trigger “my code” / the printer driver?
- Can I create / attach breakpoints the same way I’m used to do with any other debugger (Through UI I mean) using windbg?
- What approach should I take?
- May I create a Windows service and talk with it? How to talk with it? I have already created Windows services before.
- May I just disregard all the Windows driver stuff and try to create an IPP printer with some extra service? Someone suggested to me to either have a phisical or embed a virtual machine with Linux somewhere near to do it like that. I still don’t know how to proceed on that, need to do more research but it’s an option I didn’t look at yet.
I know this task sounds out of my capabilities, I have worked most of my years as a Full Stack Web developer with all kinds of applications so I’m not used to take care of hardware this way. I have already coded some libraries that are able to send all the data I want to one of our printers given an Image and an IP address but need to connect that with a print dialog somehow. My boss knows about my backgrounds and he has no issue with me taking months to accomplish this, also I’m very interested into knowing how this lower level software works.
Sorry for the big array of questions and thanks for your time.