簡體   English   中英

如果消息是由交互式生成器塊生成的,如何修改 CAPL 中的消息數據?

[英]How to modify message data in CAPL if message is generated by Interactive generator block?

我正在使用 CANalyzer。 我正在使用 Interactive Generator 塊傳輸 CAN 消息。 我使用 IG 手動修改傳輸消息中的信號。 每次發送消息時,我都需要自動計算校驗和(消息中的最后一個字節)。 校驗和是根據消息中所有先前的數據字節計算的(消息總是 8 個字節長)。 IG 沒有選擇這樣做。

我需要:

  1. 使用 IG 手動設置信號。
  2. 根據前面數據字節的值自動計算最后一個數據字節的值。

我嘗試用 CAPL 編寫簡單的代碼,但沒有成功。 我將 CAPL 程序節點放在配置窗口中的 IG 節點之后,並在 CAPL 腳本中寫入消息事件:

on message FooMsg
{
  message FooMsg msg1; // FooMsg is name of message in database
  
  msg1 = this; // copy message from IG to temporary variable
  // this.byte(7) = 0x11; // not posibble, compiler warning
  msg1.byte(7) = 0x11;  // constant value just for test
  output(msg1); // send message
}

消息正在傳輸,但不遵守 IG 中設置的 Tx 周期(消息盡可能快地傳輸)。

我以為我捕獲了從 IG 生成的消息,對其進行修改並發送到 CAN 總線。

最后,我按照 VioletVynil 的建議重新設計了整個東西。 我創建了面板,添加了系統變量並將它們連接到面板上的控件,在 CAPL 中編寫了一些代碼來計算校驗和並定期傳輸消息並且它運行了! 沒有任何問題! 是的,有效載荷上的額外 CRC 用於額外的安全性(鐵路應用)。 我沒有設計通信協議,我只是得到它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM