I am currently working with the outback mate in order to remotely retrieve data. The location from which I am receiving data is using a outback HUB which has 4 FXs, 1 MX, and 1 Flexnet DC connected to it. I have developed a read protocol in LabVIEW 2009 which simply reads in the data through serial communication and stores the data in a file. I have successfully tested my protocol and it is functioning well to a certain point in time. I beginning reading data and after a few readings the data begins to be read out of order or it begins reading a new string half way. I am not sure if I have the timing off or I am not reading the appropriate amount bytes. I am aware that each status page is compose of 49 bytes and I have confirmed this when I read in the data.

My question is how do I modify the amount of bytes I should be reading so the data is not read out of order? How does having the HUB affect when and how the status pages of the FX, MX, and FLEXnet DC are sent?

Rather than always reading in a set number of bytes, it's better to read up until the first "newline" character (0x0A), using something like C's fgets() function with some reasonable maximum line length >=50, if your software supports that. This way any line noise, etc. causing a corrupt or incomplete read will only clobber a line or two, rather than getting you out of alignment and propagating through to all subsequent reads.

Also, be sure to use that provided checksum byte at the end (described in the Mate Serial Comm. Guide) to verify each line before accepting it as valid data. It would be good to have some provision in your code for dealing with missing/invalid samples in a reasonable way, perhaps interpolating from the nearest valid lines on either side of the dropout.

Not that you should be getting dropouts & corruption in the first place (the one time I had such trouble it was due to a flaky USB-Serial dongle, like Julie mentioned), but it's good to be prepared for them just in case.