I operate a complicated measurement instrument through a DOS computer doing time sensitive data acquisition, motion control, etc.
I want to give it a Windows wrapper for users to operate it through, and to connect it to a network through. The Windows wrapper would take configuration parameters from the user, and display results to the user.
Some folks refer to this as “embedding” the DOS PC into a Windows PC (though others use “embedding” to refer to different things).
How should these two PCs talk to each other? Is this a good way to use a LAN connection (many industrial CPU boards provide 2 or more LAN connections)? Should I brew up something using serial or parallel or IEEE-488? The data rate I need would be tiny, as I’m only passing a few parameters back and forth very occasionally in a system that takes a long time to do one test.
I’m speaking as someone who does work with embedded DOS as well as Windows apps in industrial control.
You’re using DOS. Keep it simple and use a mature technology. That means serial for the DOS machine. Anything else is asking for pain, especially nowadays, when DOS support is near non-existent. For a few bytes, serial is simple to use on all platforms and has plenty of libraries.
My suggestions:
Get a TCP/IP to serial convertor. Plug the serial end into the DOS pc, plug the ethernet end into a TCP/IP network. Your Windows software can then run on any Windows PC on the network.
Screw the Windows PC, get a Palm/Windows CE device of some sort, get a serial adapter, write the little program for the handheld and attach it to the front of the machine with velcro. Done!
You’re asking for trouble if you want to put the Windows PC in front of the DOS PC and sell it as a system. Its just going to suck up time better used working on the important bits. In addition to the cost of the computer and the Windows license, you have to install Windows on the PC and maintain it, prevent operators for playing minesweeper, deal with new versions of the OS… lots of annoying frustrating crap.
Keep the DOS PC as is.
Now, there are other options, but they involve hocking my wares, so email me if you’re interested.
I wouldn’t call it a wrapper or embedding. What you are really doing is adding a windows based HMI (human machine interface) to the machine.
For a low data rate, I would just use a serial link to send the parameters. It’s very simple, fairly robust, and has a low overhead so it won’t muck with your real time requirements. Ethernet is dangerous because if there is any ethernet traffic on the link, even if it’s not going to your machine, it still causes packets to be received which means the computer receives interrupts and, worst case, can get busy processing ethernet stuff and can miss its real time requirements.
Personally, if I were doing it, I’d probably use a serial link using Modbus protocol. Modbus is an open industrial network standard, is supported by lots and lots of different pieces of equipment, and can be easily converted to ethernet later if desired (modbus TCP is also an open standard, and is basically the same packets transferred over ethernet instead of a serial link).
This is the type of thing that I get paid to do, so if you have some more detailed questions feel free to drop me an e-mail.