08-12-2009 02:41 PM
I reviewed all of the other postings regarding this error code, but none seemed to provide a resolution relating to my situation.
I am running a real-time PXI system with the PXI-8461 series 2 single channel CAN card (driver version 2.6.2). My application currently has a single thread, and it is leveraging a state machine to control program flow. I am using the LabVIEW 8.6.1 CAN Frame API to communicate with an automotive ECU via keyword protocol over CAN. As a result, I am using the CAN Object approach for sending and receiving messages. There are only two objects associated with the CAN port, one for "Transmit by Call" and one for "Receive Unsolicited". Since keyword protocol is a request/response protocol, I am resetting both objects, restarting both objects, transmitting the request, and receiving the response each time a new keyword transaction is required. I perform the resets to ensure that the read/write queues are empty prior to beginning a new transaction.
I am able to successfully send/receive several diagnostic messages, but I get an error 0xBFF62024 at the same location in my LabVIEW code every time. It should be noted that the error occurs at a point in time that two VIs are being called back to back that perform keyword transactions on the PXI-8461. I currently do not call the Close VI at any point in my code, so there is no chance that the handle has been invalidated through some unexpected execution of my VI. Since several messages are sent/received successfully, I am sure that the handle is being created successfully. I have performed extensive debugging exercises, and I have found that if I inject a minimum of 250 ms of delay between the calls, the issue goes away. If I go down to 150 ms of delay, the issue still occurs. I have tried removing the CAN Object resets from the code, and the issue still occurs. As a result, some sort of race condition is the only explanation for what is going on, given that adding delay solves the issue. However, I do not have in depth enough knowledge of the NI-CAN driver to understand what this condition could be, because my code is set up to execute in a serial manner.
I look forward to some help with this issue.
08-14-2009 09:24 AM
It seems that you are trying to read the network too rapidly between calls of each object, and adding the wait may be your only option.
Please provide your vi for us to look at for further suggestions.