Waiting for bytes to be ready
I think it is just a matter of taste. Here is one approach:

do
{
    var ftdiStatus = FtdiDevice.FtdiDevice.Instance.GetRxBytesWaiting(ref rxBytes);

    if (ftdiStatus != FTDI.FT_STATUS.FT_OK)
        return null;

    if(rxBytes &gt;= dataBlockSize)
        break;

    Thread.Sleep(10);
}
while (true); // Perhaps a check for timeout?