如何从CAN(控制器区域网络)消息帧中获取CRC?

时间:2016-10-19 20:09:54

标签: c# perl crc can-bus

我有一个项目,我需要在其中创建一个perl脚本来将.hex文件解析为一个完整的CAN帧的.can文件以供发送。一旦解析了文件,它将由基于C#的GUI读取,该GUI将这些行转换为要发送的正确CAN消息。

我需要为.can包含的方面列表如下:

  1. 为TX命令添加延迟

  2. 添加解析器将忽略的注释

  3. 添加解析器将忽略的文件头注释 文件创建时,哪个文件,解析器版本等等

  4. 添加CRC(在文件本身上)

  5. 添加应用程序CRC(写入某个闪存位置)

  6. 这是我正在解析的.hex文件的一个示例:

    :020000040000FA
    :10000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
    :10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
    :10002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
    :10003000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
    :10004000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
    :10005000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
    :10006000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
    :10007000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
    :10008000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
    :10009000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
    

    在这个列表中我只缺少4号和5号。我一直在阅读什么是CRC以及如何使用它,所以我对这个主题有一些了解,但我不知道实现点关于如何处理这个问题,我将不胜感激。下面是我使用的.can文件示例:

    //File used: app1FULL.hex
    //Parser version: 0.2 alpha
    //Date: Thu Oct 13 16:47:55 2016
    TX:10:1537:8:45:EF:0B:F0:FF:FF:FF:FF //load flash
    TX:10:1538:8:FA:CF:11:F0:FB:CF:12:F0 //load flash
    TX:10:1539:8:E9:CF:13:F0:EA:CF:14:F0 //load flash
    TX:10:1540:8:E1:CF:15:F0:E2:CF:16:F0 //load flash
    TX:10:1541:8:D9:CF:17:F0:DA:CF:18:F0 //load flash
    TX:10:1542:8:F3:CF:19:F0:F4:CF:1A:F0 //load flash
    TX:10:1543:8:F6:CF:1B:F0:F7:CF:1C:F0 //load flash
    TX:10:1544:8:F8:CF:1D:F0:F5:CF:1E:F0 //load flash
    TX:10:1536:5:B:0:16:0:40:00:00:00:00:64 //flash write
    RX:1000:1535:3:B:0:16:64 //expect response
    PRINT:Boot has failed:Boot received all messages successfully
    

    谢谢你们!

0 个答案:

没有答案