First, make sure you are using the right serial cable. This gave me trouble
when I first started using serial. If you are communicating between two computer
COM ports you need a "null modem" cable. Most hardware uses a "straight through"
cable, which is probably what you need here. They look the same, so they
are easy to mix up.
Also, have you made sure that you are using the right number of "bytes to
read". This is an often overlooked problem. If you are looking for too many
bytes you will get a timeout error even if data is present. The simplest
way to get around this is to wait a set period of time after your command,
then use "read # of bytes at port" then read the number of bytes that are
present.
Simple tips, but I hope they'll help.