C2000 CAN RX
    5 views (last 30 days)
  
       Show older comments
    
Dear All,
I am using Simulink to build a model to receive CAN messages. You can see diagram below. I am getting "error: expression must have struct or union type" error.  Please help me. How can I solve that?
Thanks.
"ykarata1_BMS_C2000_RX_deneme.c", line 67: error: expression must have struct or union type
"ykarata1_BMS_C2000_RX_deneme.c", line 68: error: expression must have struct or union type
"ykarata1_BMS_C2000_RX_deneme.c", line 70: error: expression must have struct or union type
"ykarata1_BMS_C2000_RX_deneme.c", line 71: error: expression must have struct or union type
"ykarata1_BMS_C2000_RX_deneme.c", line 73: error: expression must have struct or union type
   /* S-Function (scanunpack): '<S1>/CAN Unpack' */
65      {
66        /* S-Function (scanunpack): '<S1>/CAN Unpack' */
67        if ((1 == ykarata1_BMS_C2000_RX_deneme_B.eCANReceive_o2[0].Length) &&
68            (ykarata1_BMS_C2000_RX_deneme_B.eCANReceive_o2[0].ID != INVALID_CAN_ID)
69            ) {
70          if ((4 == ykarata1_BMS_C2000_RX_deneme_B.eCANReceive_o2[0].ID) && (0U ==
71               ykarata1_BMS_C2000_RX_deneme_B.eCANReceive_o2[0].Extended) ) {
72            (void) memcpy(&ykarata1_BMS_C2000_RX_deneme_B.CANUnpack,
73                          ykarata1_BMS_C2000_RX_deneme_B.eCANReceive_o2[0].Data,
74                          1 * sizeof(uint8_T));
75          }
76        }
77      }

1 Comment
  Erich Russenberger
 on 4 Jul 2024
				@Yusuf Selim KARATAS, did you solve this issue? I have the same now.. thanks.
Answers (1)
  UDAYA PEDDIRAJU
      
 on 30 Aug 2024
        Hi Yusuf,
The error "expression must have struct or union type" in your Simulink model indicates a mismatch in data types.
To resolving it:
- Ensure that ykarata1_BMS_C2000_RX_deneme_B.eCANReceive_o2[0] and ykarata1_BMS_C2000_RX_deneme_B.CANUnpack have compatible data structures.
- Double-check that you're using correct indices to access elements within the eCANReceive_o2 array.
- If necessary, cast data to the appropriate type using (struct *) or (union *).
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

