_CAN_func.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. void CAN_READ(
  2. Slave_Ports_Status_T* Slave_Ports_Status_A ,
  3. Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_T &Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A ,
  4. Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_TABLE_T* Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_TABLE_A,
  5. Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_T_TO_DELETE_T* Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_T_TO_DELETE_A,
  6. Slave_Ports_Status_T_ARDUINO_ARRAY_ASSOC_TABLE_S_Port_ID_T* Slave_Ports_Status_T_ARDUINO_ARRAY_ASSOC_TABLE_S_Port_ID_A,
  7. DISPLAY_T* DISPLAY_A , DISPLAY_T_ARDUINO_ATTR_ARRAY_T &DISPLAY_T_ARDUINO_ATTR_ARRAY_A
  8. ) {
  9. // If pin 2 is low, read receive buffer
  10. {
  11. CAN0.readMsgBuf(&CANrxId, &CANlen, CANrxBuf); // Read data: len = data length, buf = data byte(s)
  12. Serial.print("#5555CAN_READ read ID: ");
  13. Serial.print(CANrxId, HEX);
  14. Serial.print(" Data: [");Serial.print(CANlen); Serial.print("]");
  15. if(CANlen == CAN_MSG_DATA8_LEN) {
  16. // DISPLAY__print_loop(DISPLAY_CURSOR_Y_CHARS_CAN_DEBUG, "CAN RECV DATA", 13, DISPLAY__print_loop_ACTION_ADD ) ;
  17. _CAN_REMOTE_ID_T _CAN_REMOTE_ID = CANrxId ;
  18. CAN_MSG8_BIT_1_T CAN_MSG8_BIT_1_A = int(CANrxBuf[1] ) ;//< 0x10
  19. CAN_MSG8_BIT_2_T CAN_MSG8_BIT_2_A = int(CANrxBuf[2] ) ;
  20. CAN_MSG8_BIT_3_T CAN_MSG8_BIT_3_A = int(CANrxBuf[3] ) ;
  21. CAN_MSG8_BIT_4_T CAN_MSG8_BIT_4_A = int(CANrxBuf[4] ) ;
  22. CAN_MSG8_BIT_5_T CAN_MSG8_BIT_5_A = int(CANrxBuf[5] ) ;
  23. CAN_MSG8_BIT_6_T CAN_MSG8_BIT_6_A = int(CANrxBuf[6] ) ;
  24. CAN_MSG8_BIT_7_T CAN_MSG8_BIT_7_A = int(CANrxBuf[7] ) ;
  25. CAN_MSG8_BIT_8_T CAN_MSG8_BIT_8_A = int(CANrxBuf[8] ) ;
  26. // Serial.print();
  27. Serial.print("1REM:");Serial.print(CAN_MSG8_BIT_1_A, HEX);Serial.print(",2PORT:");
  28. Serial.print(CAN_MSG8_BIT_2_A, HEX);Serial.print(",3:");
  29. Serial.print(CAN_MSG8_BIT_3_A, BIN);Serial.print(",4:");
  30. Serial.print(CAN_MSG8_BIT_4_A, HEX);Serial.print(",5:");
  31. Serial.print(CAN_MSG8_BIT_5_A, BIN);Serial.print(",6:");
  32. Serial.print(CAN_MSG8_BIT_6_A, HEX);Serial.print(",7:");
  33. Serial.print(CAN_MSG8_BIT_7_A, HEX);Serial.print(",8:");
  34. Serial.print(CAN_MSG8_BIT_8_A, HEX);Serial.println(" ] ");
  35. Slave_Ports_Status_add_port(
  36. Slave_Ports_Status_A ,
  37. Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A,
  38. Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_TABLE_A,
  39. Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_T_TO_DELETE_A,
  40. Slave_Ports_Status_T_ARDUINO_ARRAY_ASSOC_TABLE_S_Port_ID_A,
  41. CAN_MSG8_BIT_3_A, // int Port_ID,
  42. CANrxId , //int _Slave_ID,
  43. CAN_MSG8_BIT_4_A , //int PortTypes,
  44. 0 , //int Address,
  45. 0 , //int LocalPort,
  46. CAN_MSG8_BIT_5_A , //Exp_state_BLINK, //int Exp_state,
  47. CAN_MSG8_BIT_6_A, //Exp_state_ttl_TO_REFRESH, //int Exp_state_ttl,
  48. CAN_MSG8_BIT_7_A, //Broadcast_state_TO_REFRESH, //int Broadcast_state,
  49. 0 , //int I2C_port,
  50. 0 ,//int I2C_driver
  51. IS_Local_FALSE
  52. );
  53. } else { //if(CANlen == CAN_MSG_DATA8_LEN)
  54. for(int i = 0; i<CANlen; i++) // Print each byte of the data
  55. {
  56. if(CANrxBuf[i] < 0x10) // If data byte is less than 0x10, add a leading zero
  57. {
  58. Serial.print("0");
  59. }
  60. Serial.print(CANrxBuf[i], HEX);
  61. Serial.print(" ");
  62. }
  63. }
  64. Serial.println();
  65. // else Serial.println(" [CAN] [NOT][digitalRead(CAN_INTpin)] ");
  66. }
  67. }