📄 can_reader.cpp
字号:
/////////////////////////////////////////////////////////////////author:YslayerY/// upc/////////////////////////////////////////////////////////////#include"can_reader.h"#include<stdio.h>bool need_stop; can_reader * pcan_reader;typedef union{ char a[4]; int cmd;}cc;void * reader(void * data) //checked should have no problem BIG SMILE{ printf("can reader started \n"); cc cccmd; int can_fd = (int)data; CanData candy; int cmd; while(!need_stop) { read(can_fd,&candy,sizeof(CanData)); for(int i=0;i<4;i++) { cccmd.a[i] = candy.data[i+2]; } printf("can :cmd %x received \n",cccmd.cmd); pcan_reader->emit_cmd(cccmd.cmd); } printf("reader returned \n"); return NULL;}void can_reader::emit_cmd(int cmd){ emit sig_cmd(cmd);}can_reader::can_reader(){ need_stop = true; pcan_reader = this;}can_reader::~can_reader(){}void can_reader::init() //check should be no error{ can_fd = -1; int id = 0x123; if((can_fd=open(CAN_DEV,O_RDWR))< 0) { printf("error ker board can device open error \n"); } else printf("can opened \n"); ioctl(can_fd, UPCAN_IOCTRL_PRINTRIGISTER, 1); ioctl(can_fd, UPCAN_IOCTRL_SETID, id); ioctl(can_fd, UPCAN_IOCTRL_SETLPBK, 0); printf("can inited \n"); }void can_reader::start(){ need_stop = false; pthread_create(&th_reader,NULL,reader,(void *)can_fd);}void can_reader::stop(){ need_stop = true;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -