Automotive and Embedded Networks

cancel
Showing results for 
Search instead for 
Did you mean: 

Ways of pausing individual CANBUS periodic messages or changing arbitration ID

My app is happily using the CAN hardware to periodically transmit a dozen different CAN messages (typically background period a few 100 ms). I have just learned that rather bizarely that the customer uses some of the 29 bits of the identifier as error status bits(!). So I am just wondering if I can change the identifier of the NC_CAN_COMM_TX_PERIODIC based object on the fly. The only way I can think of is to close the object and open up a new one with a different object name. I don't really fancy constantly reopening objects as I am not sure of the overhead it would use.

Another way is to create every possible message and somehow pause the ones that are not relevant in that moment in time.

The other way is to do things manually in software at the network object level by having a high priority thread periodically banging out CAN messages. I suspect running on XP the TX period will nowhere near be as accurate as if it was done by hardware.

Any ideas?

(Thanks)

P.S. I'm using the Frame API with Visual C++.

Message Edited by Intuitioned on 02-06-2006 05:01 AM

0 Kudos
Message 1 of 3
(3,346 Views)
Another thread has introduced me to ncAction. I think that might help solve my problem. (I should have read the manual more closely but I hate the navigation in AcrobatSmiley Wink)
0 Kudos
Message 2 of 3
(3,339 Views)
Can't really use ncAction. I was planning on opening a message for every possibly used arb ID and only start the ones that are relevant in a particular moment in time. Unfortuanally that would mean 1000's of them. The only other way is to recreate the objects when "error" bits are injected into the arb ID. In a little test I could close and recreate new objects 100's times a second. Seems like the way to go.

Message Edited by Intuitioned on 03-06-2006 05:33 AM

0 Kudos
Message 3 of 3
(3,286 Views)