Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.23 KB | None | 0 0
  1. /home/comp/Qt_project/untitled46/main.c:85: ошибка: incompatible type for argument 1 of ‘processFrame’
  2. processFrame(frame1);
  3. ^~~~~~
  4.  
  5. #include <errno.h>
  6. #include <signal.h>
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10.  
  11. #include <unistd.h>
  12. #include <net/if.h>
  13. #include <sys/types.h>
  14. #include <sys/socket.h>
  15. #include <sys/ioctl.h>
  16.  
  17. #include <linux/can.h>
  18. #include <linux/can/bcm.h>
  19.  
  20.  
  21. void processFrame(struct canfd_frame *frame) {
  22. int len = 0;
  23. unsigned char data[8];
  24.  
  25. printf("CAN ID : %d n", frame->can_id);
  26. printf("frame.can_id : %03X n", frame->can_id );
  27. // printf("LEN : %d n", frame->can_dlc); len = frame->can_dlc;
  28. printf("LEN : %d n", frame->len); len = frame->len;
  29. printf("len = %d n", len);
  30. printf("DATA : ");
  31. for(int i=0; i<len; i++)
  32. printf(" [%u] ", frame->data[i]);
  33. printf("n");
  34. for(int i=0; i<len; i++)
  35. data[i] = frame->data[i];
  36. printf("data : ");
  37. for(int i=0; i<len; i++)
  38. printf(" [%u] ", data[i]);
  39. printf("n ---------------- n");
  40. }
  41.  
  42. /* omitted vital #includes and error checking */
  43.  
  44. int main(int argc, char **argv)
  45. {
  46. struct ifreq ifr;
  47. struct sockaddr_can addr;
  48. struct can_frame frame;
  49. struct can_frame frame1;
  50.  
  51. int s;
  52.  
  53. memset(&ifr, 0x0, sizeof(ifr));
  54. memset(&addr, 0x0, sizeof(addr));
  55. memset(&frame, 0x0, sizeof(frame));
  56. memset(&frame1, 0x0, sizeof(frame));
  57.  
  58.  
  59. /* open CAN_RAW socket */
  60. s = socket(PF_CAN, SOCK_RAW, CAN_RAW);
  61.  
  62. /* convert interface sting "can0" into interface index */
  63. strcpy(ifr.ifr_name, "can0");
  64. ioctl(s, SIOCGIFINDEX, &ifr);
  65.  
  66. /* setup address for bind */
  67. addr.can_ifindex = ifr.ifr_ifindex;
  68. addr.can_family = PF_CAN;
  69.  
  70. /* bind socket to the can0 interface */
  71. bind(s, (struct sockaddr *)&addr, sizeof(addr));
  72.  
  73. while(1){
  74. /* first fill, then send the CAN frame */
  75. frame.can_id = 0x23;
  76. strcpy((char *)frame.data, "hello");
  77. frame.can_dlc = 5;
  78. write(s, &frame, sizeof(frame));
  79.  
  80. /* first fill, then send the CAN frame */
  81. frame.can_id = 0x23;
  82. strcpy((char *)frame.data, "iCC2012");
  83. frame.can_dlc = 7;
  84. write(s, &frame, sizeof(frame));
  85.  
  86. int numBytes = read(s, &frame1, CAN_MTU);
  87. switch (numBytes)
  88. {
  89. case CAN_MTU:
  90. processFrame(frame1);
  91. break;
  92. case CANFD_MTU:
  93. // TODO: Should make an example for CAN FD создай функцию для считывания КАН ФД сообщений
  94. break;
  95. case -1:
  96. // Check the signal value on interrupt проверяем значение сигнала и прерывание
  97. if (EINTR == errno)
  98. break;
  99. // Delay before continuing маленькое тороможение
  100. perror("not read");
  101. usleep(100);
  102. default:
  103. break;
  104. }
  105. }
  106. close(s);
  107.  
  108. return 0;
  109. }
  110.  
  111. void processFrame(struct can_frame *frame) {
  112. int len = 0;
  113. unsigned char data[8];
  114.  
  115. printf("CAN ID : %d n", frame->can_id);
  116. printf("frame.can_id : %03X n", frame->can_id );
  117. printf("LEN : %d n", frame->can_dlc); len = frame->can_dlc;
  118. // printf("LEN : %d n", frame->len); len = frame->len;
  119. printf("len = %d n", len);
  120. printf("DATA : ");
  121. for(int i=0; i<len; i++)
  122. printf(" [%u] ", frame->data[i]);
  123. printf("n");
  124. for(int i=0; i<len; i++)
  125. data[i] = frame->data[i];
  126. printf("data : ");
  127. for(int i=0; i<len; i++)
  128. printf(" [%u] ", data[i]);
  129. printf("n ---------------- n");
  130. }
  131.  
  132. void processFrame(struct canfd_frame frame) {
  133. int len = 0;
  134. unsigned char data[8];
  135.  
  136. printf("CAN ID : %d n", frame.can_id);
  137. printf("frame.can_id : %03X n", frame.can_id );
  138. printf("LEN : %d n", frame.can_dlc); len = frame.can_dlc;
  139. // printf("LEN : %d n", frame->len); len = frame->len;
  140. printf("len = %d n", len);
  141. printf("DATA : ");
  142. for(int i=0; i<len; i++)
  143. printf(" [%u] ", frame.data[i]);
  144. printf("n");
  145. for(int i=0; i<len; i++)
  146. data[i] = frame.data[i];
  147. printf("data : ");
  148. for(int i=0; i<len; i++)
  149. printf(" [%u] ", data[i]);
  150. printf("n ---------------- n");
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement