Hi Paul,
When you upgraded your PC, the timing of your application has changed.
Most of the code runs faster now (and in case of a hyper-threaded
system possibly in independent threads) however, the timing of the CAN
bus as well as the execution speed of most of the NI-CAN functions has
not changed (as it depends on the PCI-CAN card).
One very typical example is this code snippet:
ncConfig()
ncOpen()
ncWrite()
ncClose()
One a somewhat slow system, this sends out a single CAN frame to the
CAN bus. However, on a faster system, nothing happens. Why? The
ncWrite()
function completes when the data is transferred to the CAN card, NOT
when the CAN card is finished with sending the data. On a fast system,
the application sends the
ncClose() command to the card, before it even
started to process the data from the
ncWrite() call. An
ncWaitForState(WriteSucess) after the
ncWrite() call will fix this problem.
Aside from this particular problem, there might be other sections in your code that are sensitive to the execution speed.
If a review of the code does not unveil those problems, you could run
your application on the slower system and log all NI-CAN calls using NI
Spy. Then repeat the same on the faster system. The differences between
the two generated log files show which NI-CAN calls executed in a
different order (parallel tasks) or too fast back to back.
I hope this helps,
-B2k