can(controller area network)是博世公司發明的。是乙個多主訊息廣播系統,最高速率可達1mbps,和傳統的usb,乙太網介面不同。can 不能點對點傳送大資料塊。只能以廣播方式傳送短訊息(8個位元組)。和ethernet類似,can採取(csma/cd匯流排通訊方式。can已經成為國際標準, iso-11898: 2003。
canbus 在工業控制和****中的到了廣泛的應用。
canbus幀
canbus 幀識別符號
canbus 幀中有乙個11位的id,可以有 2048個不同的訊息標識。而擴充套件的canbus幀有29位id。有537 million 的id。
canbus 是匯流排型網路,如下圖所示
stm32f249 上有兩個can 匯流排控制器,由於引腳復用的原因, modular-2 模組化電腦中保留了乙個can控制器。soc 需要通過乙個can 收發器晶元(例如ti公司的sn65hvd233)接入canbus 匯流排上去。
mbed os 帶有can 匯流排的介面類can。
建構函式:
can(pinname rd, pinname td)
can (pinname rd, pinname td, int hz)
主要成員函式:
frequency (int hz) 設定速率。
write (canmessage msg)
read (canmessage &msg, int handle=0)
filter (unsigned int id, unsigned int mask, canformat format=canany, int handle=0)
詳細說明可見:mbed can
具體的使用方式如下:
#include "mbed.h"
digitalout myled(d8);
can can1(pd_0, pd_1,500000);
int main() }}
可以看出,在mbed os/modular-2 中實現can 匯流排收發資料如此的簡單。可以靈活地實現乙個can匯流排測試儀,通過modbus或者udp 和pc機通訊,這要比購買乙個現成的can測試儀更加靈活和經濟。在汽車零部件生產線的產品檢驗測試中獲得了應用。 socket實現UDP收發訊息
import socket while true 建立udp套接字 udp socket socket.socket socket.af inet,socket.sock dgram 設定接收方的位址和埠 根據具體情況更改 dest addr 255.255.255.255 8080 從鍵盤輸入資料...
socket收發訊息底層原理
服務端和客戶端想要通訊,底層需要internet物理連線,網絡卡配備有ip位址和mac位址,網絡卡收發的訊息是位元組流。服務端程式和客戶端程式工作中應用層,服務端程式要想發包,必須一層一層往下走,走到網絡卡那一層,將資料轉化成二進位制才能送到客戶端 客戶端網絡卡收到包,一層一層往上送,然後客戶端程式...
python使用kafka收發訊息
kafka是最近幾年很流行的訊息佇列中介軟體。在大資料以及後端服務領域有很廣泛的應用。廢話不多說,接下來直接上 介紹python如何向kafka傳送資料以及訂閱資料。kafka的訊息是 發布 訂閱 模式的。接下來先介紹向kakfa發布訊息。先安裝python的kafka連線模組。pip instal...