My question was now that when I use CanRead if i must fear that also CanRead sometimes tell me that I cannot while in fact I can. I fear this and want to avoid another hour-long debug session to maybe realize that this is the case.
I think that CanRead is more reliable, as it has timeout. As for "in fact I can", consider this: your data arrive with period 1.7 s, and you use timer with 2 s period to receive data and clear port's buffer; suppose at the first moment they are synchronized; after 34 s timer can trigger a few ms earlier than new data arrives,
so and if there was no previous data due to some reason (e.g. sensor was off), then WaitingData returns 0, but some milliseconds later it will return 25
bytes. So you have to use check with appropriate timeout to avoid such case.
But if your problem is hardware, my experience tells that it's impossible to solve hardware/firmware problems reliably with software. It will be one or another kind of crutch.
It seems serial connections via USB are not very robust.
It depends on devices and drivers (and USB cables

). It seems that you are unlucky.