My first guess was intermittent communications, but it looks like there is a pattern to the messages. This leads me to believe the device doesn't like a certain address or is sending less data back than expected.
If you go to Debug->Windows->Exception Settings , then check the box for Common Language Runtime Exceptions, it will stop the code at where the exception is occurring. If you do that, let me know what line of code is stops at, then I can go a little deeper into the problem.