Here's my version, folks.. it's a class so you make it an object and use its functions/subs/events to communicate with it in your application. Practically plug-and-play.
Works with the ELM323 chip found in scantool.net's OBD devices. The 323 is the ISO version, but I bet this exact code will also work with the other ELM chips (ELM320 and ELM322).
http://www.apeirokalia.com/elm323/