I've got a type of 'pirate' version of the ELM. Quite wicked, but cannot take as many readings/second as the proper versions IIRC.
Still, you can get quite a bit of interesting information from the car out of it.
One thing though, the majority of OBD error codes on my car can be read without special hardware. My old Honda had an earlier version, but even that could be read by bridging out the terminal, and reading the codes that it blinks with your warning light on the dash. Kinda like morse code. Never needed to do it with the new one, but I'm pretty sure it has a similar functionality.
The little device plugs into a USB port, and with the right software could read things like throttle position, advance, temperatures, vehicle speed, rpm and manifold pressure.