本文主要講的是自己對於can id的理解,希望對需要的人有幫助,本文以通俗的方式來理解,不涉及到具體can通訊。
在接觸can之前,應該接觸過iic通訊,在iic通訊中,在同一條iic通訊匯流排上每個device有唯一的id,後續對於device的操作都是通過唯一的id號來區分。而can id雖然也叫id,但是意義卻不一樣,每個can device可以接收和傳送多條不同的id報文。
比如在一條can匯流排上有三個device,叫做a,b,c吧。
a device有接收id:202,302;傳送id:101,102;
b device有接收id:101,303;傳送id:201,202;
c device有接收id:101,102,201;傳送id:302,303;
如果a device傳送了id為101的一條報文,因為b device和c device都有接收為101的id,那麼b device和c device都可以接收到這條報文。
如果a device傳送了id為102的一條報文,因為只有c device都有接收為102的id,那麼只有c device可以接收到這條報文。
如果b device傳送了id為202的一條報文,因為只有a device都有接收為202的id,那麼只有a device可以接收到這條報文。
可以看出,can id其實是個報文過濾器,當匯流排上報文的id和自己接收的id有相匹配的時候,就可以接收相應的報文。
can中的id是為了定義相應的報文的含義,每個id對應有自己的具體含義。
比如,101為電壓訊號,201為電流訊號,這樣當a device要傳送電壓訊號時候,就用101 id的報文,b和c device接收到101 id的報文之後,知道這是電壓訊號。
對於STL的理解
stl standard template library stl是一些 容器 的集合,這些 容器 有list,vector,set,map等,stl也是演算法和其他一些元件的集合。這裡的 容器 和演算法的集合指的是世界上很多聰明人很多年的傑作。stl的目的是標準化元件,這樣就不用重新開發,可以使用...
對於ftok的理解
回顧了一下以前的實驗,一直不理解為什麼在訊息佇列中要使用ftok,比如下面的乙個例項 if key ftok a 1 qid msgget key,ipc creat 0666 建立乙個訊息佇列 if qid 0 printf created queue id d n qid 輸出訊息佇列的id 要...
對於Zookeeper的理解
zookeeper是google 的chubby乙個開源的實現,是hadoop 的分布式協調服務。它包含乙個簡單的原語集,分布式應用程式可以基於它實現同步服務,配置維護和命名服務等。zookeeper包括乙個leader和多個follower。為什麼使用zookeeper?大部分分布式應用需要乙個主...