I'm trying to read data from a MODBus/TCP controller and having some issues with the timing of the read command. I request a block of registers from the slave and it returns the requested bytes and header just fine and very quickly. In order to read everything right, I have to first read the first 6 bytes of the header to know how many bytes are to follow. Once I know that, I do a read from socket tSock for <bytes> characters. Note that ALL of the characters have been received in a single packet so once I read the 6 bytes, the rest of the data is already in the socket buffer.

The problem I have is when I do the second read, the read command blocks for the socketTimeoutInterval before continuing. It doesn't matter what I set it to, it will wait that long before continuing. I tried catching the socketTimeout message but that message is never sent, even when I set the socketTimeoutInterval to 5 milliseconds!

I am not using the read ... with message form of the command since I want the handler to wait until all the bytes have been received before I move on. Has anyone else seen this? Have I missed something in the documentation or could this be something in the Windows code that handles sockets?

Any help would be appreciated!

len morgan
_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to