# Choose function and CAN Data

**URL:** <https://community.ecumaster.com/t/choose-function-and-can-data/6011>\
**Category:** PMU\
**Created:** [June 13, 2026, 9:38pm UTC](https://community.ecumaster.com/t/choose-function-and-can-data/6011 "2026-06-13T21:38:25Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![parsonsj](https://avatars.discourse-cdn.com/v4/letter/p/dfb087/32.png) [@parsonsj](https://community.ecumaster.com/u/parsonsj)\
**Post date:** [June 13, 2026, 9:38pm UTC](https://community.ecumaster.com/t/choose-function-and-can-data/6011/1 "2026-06-13T21:38:25Z")

</div>

I’m missing something – I can’t seem to figure out how to snag and keep data from a multiplexed incoming CAN message. Case in point:  
J1979 specifies rpm and coolant data on CAN id 0x7E8, using byte 3. Byte 3 is a 5 when it’s coolant and 13 (0xC) when the data is RPM. I can pick out the data and assign it to a value just fine. The ECU sends coolant temp data about every 5s. And when that specific message is received, my variables update and I can see the right number.

But then the value reverts to 0 when I get another message that’s not for coolant. I’m using the Choose function that returns true when byte 3 is 5, so the coolant variable should only change values when it’s a valid coolant message.

I’m lost. Any help appreciated

---

<div class="post-metadata">

**Author:** ![bravo685](https://avatars.discourse-cdn.com/v4/letter/b/e5b9ba/32.png) [@bravo685](https://community.ecumaster.com/u/bravo685)\
**Post date:** [June 14, 2026, 3:50pm UTC](https://community.ecumaster.com/t/choose-function-and-can-data/6011/2 "2026-06-14T15:50:30Z")

</div>

Do you have ‘use the previous value’ set for the CAN Input?

In your CAN message Object have you tried to increase the timeout?

 ![capture](https://europe1.discourse-cdn.com/flex013/uploads/ecumaster/original/2X/c/c16138145c405c55f00e4e28210200d4df0b02a7.jpeg)

 ![capture2](https://europe1.discourse-cdn.com/flex013/uploads/ecumaster/original/2X/f/fa56df547a579111d83b40d2694badd0b02559f5.jpeg)

---

<div class="post-metadata">

**Author:** ![parsonsj](https://avatars.discourse-cdn.com/v4/letter/p/dfb087/32.png) [@parsonsj](https://community.ecumaster.com/u/parsonsj)\
**Post date:** [June 14, 2026, 9:34pm UTC](https://community.ecumaster.com/t/choose-function-and-can-data/6011/3 "2026-06-14T21:34:08Z")

</div>

Yes, I’ve tried all that without luck. What did work was to move the mux field and data to a “buffer” number (called n\_snagDatax) and then test the mux. It seems as if CAN data can get overwritten with zeroes. I am now seeing it in data sent by an EMU Pro where CAN data get periodically overwritten with a zero. And they are sitting next to each other on the CAN bus. ??

---

<div class="post-metadata">

**Author:** ![parsonsj](https://avatars.discourse-cdn.com/v4/letter/p/dfb087/32.png) [@parsonsj](https://community.ecumaster.com/u/parsonsj)\
**Post date:** [June 14, 2026, 9:59pm UTC](https://community.ecumaster.com/t/choose-function-and-can-data/6011/4 "2026-06-14T21:59:42Z")

</div>

I’ve written a simple filter for coolant temperature to ignore any CAN bus data that says it is zero. That’s pretty safe for temperature – but I don’t know how I’m going to deal with rpm and vehicle speeds where 0 happens all the time.

---

<div class="post-metadata">

**Author:** ![bravo685](https://avatars.discourse-cdn.com/v4/letter/b/e5b9ba/32.png) [@bravo685](https://community.ecumaster.com/u/bravo685)\
**Post date:** [June 14, 2026, 11:02pm UTC](https://community.ecumaster.com/t/choose-function-and-can-data/6011/6 "2026-06-14T23:02:58Z")

</div>

What does your message object look like?

Have you tried setting the compound message to 2 frames (for example) and the multiplexer type to **Custom**? You would then need two CAN inputs—one for the first frame and another for the second (PIDs 3 and 5). In theory, that should prevent any data loss.

I haven’t tried this myself, but I’m wondering how the frame identifiers are handled. Would receiving frame ID 3 or 5 automatically trigger the two-frame compound message, or is it expecting a sequential pattern such as 1, 2, 3, etc.?

 ![capture](https://europe1.discourse-cdn.com/flex013/uploads/ecumaster/original/2X/e/e59cfef045a708131b7224bb65093be365c02d75.jpeg)

---

<div class="post-metadata">

**Author:** ![ProperTuningOG](https://dub1.discourse-cdn.com/flex013/user_avatar/community.ecumaster.com/propertuningog/32/3481_2.png) [@ProperTuningOG](https://community.ecumaster.com/u/ProperTuningOG)\
**Post date:** [June 15, 2026, 12:40am UTC](https://community.ecumaster.com/t/choose-function-and-can-data/6011/8 "2026-06-15T00:40:35Z")

</div>

My mistake. Feel free to delete.

---

<div class="post-metadata">

**Author:** ![mfudala\_ECUMASTER](https://avatars.discourse-cdn.com/v4/letter/m/ac91a4/32.png) [@mfudala\_ECUMASTER](https://community.ecumaster.com/u/mfudala_ECUMASTER)\
**Post date:** [June 15, 2026, 8:06am UTC](https://community.ecumaster.com/t/choose-function-and-can-data/6011/9 "2026-06-15T08:06:31Z")

</div>

Try this way using multiplexed compound MOB:

 ![image](https://europe1.discourse-cdn.com/flex013/uploads/ecumaster/original/2X/d/d314db97d368e0b2013799d38b15f152304ec4c1.png)

 ![image](https://europe1.discourse-cdn.com/flex013/uploads/ecumaster/original/2X/c/c07e574619ffbec895dcf794919a50167f171ac1.png)  
 ![image](https://europe1.discourse-cdn.com/flex013/uploads/ecumaster/original/2X/9/91723dce3e1f9fda59d80cda38c6db688124f090.png)

As you want to retrieve CLT, which is in a CAN frame when value 0x5 is on byte 3, and RPM which has 0xC on byte 3, you have to setup the CAN MOB as shown in the first screenshot. Such MOB covers 8 different values, from 0x5 to 0xC.

Then, just create 2 CANBus inputs, and the value in the red circle is an offset of the multiplexer starting from the CAN Bus Message Object.

For c\_CLT, offset 0 means it is value 5, for c\_RPM, value 7 means it is value 0xC.

The rest of the CANBus inputs settings you have to setup according to your DBC to get the correct values from the CAN frame.

---

<div class="post-metadata">

**Author:** ![parsonsj](https://avatars.discourse-cdn.com/v4/letter/p/dfb087/32.png) [@parsonsj](https://community.ecumaster.com/u/parsonsj)\
**Post date:** [June 15, 2026, 12:31pm UTC](https://community.ecumaster.com/t/choose-function-and-can-data/6011/10 "2026-06-15T12:31:50Z")

</div>

Wow, that works so much better! I was doing this completely wrong – thinking like a software engineer instead of an engine tuner. You should put this example in the manual.

---

<div class="post-metadata">

**Author:** ![mfudala\_ECUMASTER](https://avatars.discourse-cdn.com/v4/letter/m/ac91a4/32.png) [@mfudala\_ECUMASTER](https://community.ecumaster.com/u/mfudala_ECUMASTER)\
**Post date:** [June 15, 2026, 12:42pm UTC](https://community.ecumaster.com/t/choose-function-and-can-data/6011/11 "2026-06-15T12:42:51Z")

</div>

> [@parsonsj](#):
>
> You should put this example in the manual.

Yes, there is a lack in this area - we will update this.
