當前位置:編程學習大全網 - 編程語言 - Qt CAN編程1- CAN總線整體介紹

Qt CAN編程1- CAN總線整體介紹

控制器局域網(CAN)是壹種車輛總線標準,旨在允許微控制器和設備在沒有主機的情況下在應用程序中相互通信。

它是壹種基於消息的協議,最初是為汽車內的多路電氣布線設計的,但也用於許多其他情況。

CAN Bus API提供了壹些通用的API來訪問CAN設備:

多家供應商為CAN設備提供了各種API進行訪問。該 QtSerialBus 模塊支持CAN總線插件的設置如下:

如果Qt提供的插件不適合所需的目標平臺,則可以實施定制的CAN總線插件。該實現遵循實現Qt插件的標準方法。自定義插件必須部署到 $QTDIR/plugins/canbus 。

每個插件必須定義壹個Key值,該Key值用於加載插件。這是通過壹個小的json文件完成的。例如,socketcan插件使用以下 plugin.json 內容:

該Key值必須與CAN總線適配器的接口名稱壹起傳遞給 QCanBus :: createDevice() 。 QCanBus 使用 QCanBusFactoryV2 接口加載和實例化插件,每個插件必須將其實現為中央入口點。接口充當工廠,其唯壹目的是返回 QCanBusDevice 實例。上面提到的接口名稱是通過 QCanBusFactory :: createDevice() 工廠方法傳遞的。以下是 socketcan 插件的工廠實現:

下壹步是提供 QCanBusDevice 的實現。至少必須實現以下純虛函數功能:

在 open() 和 close() 方法分別配合 QCanBusDevice :: connectDevice() 和 QCanBusDevice :: disconnectDevice() 使用。檢查功能文檔以了解實施細節。

QCanBusDevice :: writeFrame() 負責進行完整性檢查,例如 QCanBusFrame 的有效性以及設備是否仍處於連接狀態。假設檢查通過,它將幀寫入CAN總線。成功後,它將發出 QCanBusDevice :: framesWritten() 信號;否則,將使用適當的錯誤消息調用 QCanBusDevice :: setError() 。此功能也可以用於實現異步寫入操作。插件實施者有責任在適當的時間發出適當的信號。

最後但並非最不重要的壹點是, QCanBusDevice :: interpretedErrorFrame 提供了壹種方便的方法來將CAN總線錯誤幀的內容轉換為人類可讀的錯誤字符串。

  • 上一篇:我設計了壹種漢字編碼方案,可用於字典查字和計算機漢字輸入,我能申請專利嗎?
  • 下一篇:怎麽學好java編程?
  • copyright 2024編程學習大全網