下面通過例項來說明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...