自動駕駛(四十九)---------Kavser二次開發

       我們知道CAN總線是連接車身各個模塊之間的橋樑,通過協議通訊,在車輛標定和測試中很多情況是用上位機和車身相連,收發滿足CAN總線的信號。這中間如何通訊呢?這就需要用到Kavser。

       Kvaser 公司是 CAN 測試設備的優秀供應商,提供的 API 函數,通過Kvaser公司的設備,結合Kvaser CANlib的 API 函數,可以方便的編寫自己的 CAN 測試工具,對 CAN 網絡的開發測試有很大的幫助。

      Kvaser 驅動地址:http://canlandbucket.s3-website-eu-west-1.amazonaws.com/productionResourcesFiles/bc6870e3-87de-4661-b023-be0eec981d53/kvaser_drivers_setup.exe

      Kvaser Canlib地址: http://canlandbucket.s3-website-eu-west-1.amazonaws.com/productionResourcesFiles/6b1cefab-0210-415a-9925-55d6088c4716/canlib.exe

1. Kvaser設備:

       常用的Kvaser設備型號如下: 

       Kvaser Hybrid 2xCAN/LIN:  標準USB接口和兩個高速CAN或LIN通道,兩個獨立9針D-SUB CAN接口。

                    

     Kvaser Leaf Light R v2 :採用標準USB2.0連接和高速CAN通道,配有9針D-SUB CAN接口,可處理標準和擴展CAN報文的傳送和接收,時間戳精度爲100微秒。

                 

2. Kvaser CANLIB

      a. 信息服務類:

           

       b. 通道開啓和關閉:

             

        c. 通道參數:

             

         d. 接收消息:

             

          e. 發送消息

             

           f. 通知和等待:

             

3. 操作實例:

       使用 Kvaser CANLIB 時,在文件開頭,必須包含 #include <canlib.h>

       簡單操作流程

  •    初始化驅動程序
  •    讀 CAN 通道數目,獲取通道句柄
  •    選擇開啓指定通道
  •    設定通道參數
  •    設定通道工作類型
  •    打開總線
  •    讀 CAN 消息或寫 CAN 消息
  •    關閉總線
  •    關閉通道

     代碼實例:

void main(void)
{
    canHandle h;
    canInitializeLibrary(); 
    h = canOpenChannel(0, canWANT_EXCLUSIVE);
    if (h != canOK) {
        char msg[64];
        canGetErrorText((canStatus)h, msg, sizeof(msg));
        fprintf(stderr, "canOpenChannel failed (%s)\n", msg);
        exit(1);
    }
    canSetBusParams(h, BAUD_250K, 0);
    canSetBusOutputControl(h, canDRIVER_NORMAL);
    canBusOn(h);
    canWrite(h, 123, "HELLO!", 6, 0);
    canWriteSync(h, 500);
    canBusOff(h);
    canClose(h);
}

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章