Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /home/comp/Qt_project/untitled46/main.c:85: ошибка: incompatible type for argument 1 of ‘processFrame’
- processFrame(frame1);
- ^~~~~~
- #include <errno.h>
- #include <signal.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <unistd.h>
- #include <net/if.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <sys/ioctl.h>
- #include <linux/can.h>
- #include <linux/can/bcm.h>
- void processFrame(struct canfd_frame *frame) {
- int len = 0;
- unsigned char data[8];
- printf("CAN ID : %d n", frame->can_id);
- printf("frame.can_id : %03X n", frame->can_id );
- // printf("LEN : %d n", frame->can_dlc); len = frame->can_dlc;
- printf("LEN : %d n", frame->len); len = frame->len;
- printf("len = %d n", len);
- printf("DATA : ");
- for(int i=0; i<len; i++)
- printf(" [%u] ", frame->data[i]);
- printf("n");
- for(int i=0; i<len; i++)
- data[i] = frame->data[i];
- printf("data : ");
- for(int i=0; i<len; i++)
- printf(" [%u] ", data[i]);
- printf("n ---------------- n");
- }
- /* omitted vital #includes and error checking */
- int main(int argc, char **argv)
- {
- struct ifreq ifr;
- struct sockaddr_can addr;
- struct can_frame frame;
- struct can_frame frame1;
- int s;
- memset(&ifr, 0x0, sizeof(ifr));
- memset(&addr, 0x0, sizeof(addr));
- memset(&frame, 0x0, sizeof(frame));
- memset(&frame1, 0x0, sizeof(frame));
- /* open CAN_RAW socket */
- s = socket(PF_CAN, SOCK_RAW, CAN_RAW);
- /* convert interface sting "can0" into interface index */
- strcpy(ifr.ifr_name, "can0");
- ioctl(s, SIOCGIFINDEX, &ifr);
- /* setup address for bind */
- addr.can_ifindex = ifr.ifr_ifindex;
- addr.can_family = PF_CAN;
- /* bind socket to the can0 interface */
- bind(s, (struct sockaddr *)&addr, sizeof(addr));
- while(1){
- /* first fill, then send the CAN frame */
- frame.can_id = 0x23;
- strcpy((char *)frame.data, "hello");
- frame.can_dlc = 5;
- write(s, &frame, sizeof(frame));
- /* first fill, then send the CAN frame */
- frame.can_id = 0x23;
- strcpy((char *)frame.data, "iCC2012");
- frame.can_dlc = 7;
- write(s, &frame, sizeof(frame));
- int numBytes = read(s, &frame1, CAN_MTU);
- switch (numBytes)
- {
- case CAN_MTU:
- processFrame(frame1);
- break;
- case CANFD_MTU:
- // TODO: Should make an example for CAN FD создай функцию для считывания КАН ФД сообщений
- break;
- case -1:
- // Check the signal value on interrupt проверяем значение сигнала и прерывание
- if (EINTR == errno)
- break;
- // Delay before continuing маленькое тороможение
- perror("not read");
- usleep(100);
- default:
- break;
- }
- }
- close(s);
- return 0;
- }
- void processFrame(struct can_frame *frame) {
- int len = 0;
- unsigned char data[8];
- printf("CAN ID : %d n", frame->can_id);
- printf("frame.can_id : %03X n", frame->can_id );
- printf("LEN : %d n", frame->can_dlc); len = frame->can_dlc;
- // printf("LEN : %d n", frame->len); len = frame->len;
- printf("len = %d n", len);
- printf("DATA : ");
- for(int i=0; i<len; i++)
- printf(" [%u] ", frame->data[i]);
- printf("n");
- for(int i=0; i<len; i++)
- data[i] = frame->data[i];
- printf("data : ");
- for(int i=0; i<len; i++)
- printf(" [%u] ", data[i]);
- printf("n ---------------- n");
- }
- void processFrame(struct canfd_frame frame) {
- int len = 0;
- unsigned char data[8];
- printf("CAN ID : %d n", frame.can_id);
- printf("frame.can_id : %03X n", frame.can_id );
- printf("LEN : %d n", frame.can_dlc); len = frame.can_dlc;
- // printf("LEN : %d n", frame->len); len = frame->len;
- printf("len = %d n", len);
- printf("DATA : ");
- for(int i=0; i<len; i++)
- printf(" [%u] ", frame.data[i]);
- printf("n");
- for(int i=0; i<len; i++)
- data[i] = frame.data[i];
- printf("data : ");
- for(int i=0; i<len; i++)
- printf(" [%u] ", data[i]);
- printf("n ---------------- n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement