CAN匯流排開發例項

2021-09-30 13:04:30 字數 1350 閱讀 6968

下面通過例項來說明can匯流排介面的使用方法。在本例中,有兩個程序,其中乙個程序負責報文的傳送(識別符號為0x11和0x22),另乙個程序負責報文的接收和過濾(只接收識別符號為0x11的報文)。

/* 1.報文傳送程式 */

#include

#include

#include

#include

#include

#include

#include

#include

#include

int main()

};s = socket(pf_can, sock_raw, can_raw);  //建立套接字

strcpy(ifr.ifr_name, "can0" );

ioctl(s, siocgifindex, &ifr);     //指定can0裝置

addr.can_family = af_can;

addr.can_ifindex = ifr.ifr_ifindex;

bind(s, (struct sockaddr *)&addr, sizeof(addr));   //將套接字與can0繫結

//禁用過濾規則,本程序不接收報文,只負責傳送

setsockopt(s, sol_can_raw, can_raw_filter, null, 0);

//生成兩個報文

frame[0].can_id = 0x11;

frame[0]. can_dlc = 1;

frame[0].data[0] = 'y';

frame[0].can_id = 0x22;

frame[0]. can_dlc = 1;

frame[0].data[0] = 'n';

//迴圈傳送兩個報文

while(1)

sleep(1);

nbytes = write(s, &frame[1], sizeof(frame[1]));  //傳送frame[1]

if (nbytes != sizeof(frame[0]))

sleep(1);

}close(s);

return 0;

}/* 2. 報文過濾接收程式 */

#include

#include

#include

#include

#include

#include

#include

#include

#include

int main()

}close(s);

return 0;

}

can匯流排學習(一) 初識can匯流排

can匯流排最初由德國bosch公司為汽車檢測 控制系統而設計的。1993年can成為國際標準iso11898 高速應用 和iso1119 低速應用 can的規範從can1.2規範 標準格式 發展為相容can1.2規範的can2.0規範 can2.0a為標準格式,can2.0b為擴充套件格式 目前應...

初學CAN匯流排

初學can 匯流排,之前用的是 rs485 485 中沒有匯流排仲裁的概念,如果匯流排上有十個節點,要事先算好每組資料的傳送用時,調好時間延遲,逐個排隊傳送。而 can匯流排可以把多個節點的資料都送到本站的 can晶元,並處於準備狀態,等待匯流排空閒時,向匯流排傳送資料,由匯流排仲裁哪乙個節點優先傳...

can匯流排配置

can 匯流排配置 在linux 系統中,can匯流排介面 裝置作為網路裝置 被系統進行統一 管理。在控制 台下,can匯流排 的配置和以 太網的配置使用相同的 命令。在控制台 上輸入命令 ifconfig a 可以得到以下結果 can0 link encap unspec hwaddr 00 00...