MD小智

学习-思考-分享


  • 首页

  • 分类

  • 归档

  • 关于我

  • 搜索

基于ossasn1工具生成V2X消息的C语言编解码器

时间: 2024-08-09   |   分类: 工具教程   | 字数: 896 字 | 阅读: 2分钟 | 阅读次数:

实验说明

目的

通过已有的V2X通讯中的ASN.1文件,借助ossasn1工具,生成C语言的编解码代码。

思路

  1. 购买/试用ossasn1工具;
  2. 下载ASN.1文件,这里以V2X标准文件为例;
  3. 使用ossasn1工具生成对应的编解码工具;
  4. 编写测试用例,进行基本的encode、decode演示;

实验过程

试用ossasn1工具

  1. 在官网,选择对应的版本进行试用,我们这里选择ASN.1/C,试用链接点这里;

  2. 提交完成后,会收到一封邮件。邮件标题类似OSS Nokalva Trial Software: Links for Product, License Key, and Documentation,其中包括了软件下载链接、license以及安装方法,其实就是对ossasn1_linux64_trial_v11_ossinfoctrial_88175Z.zip 和ossasn1_linux64_trial_v11.zip这连个文件解压;

  3. 按照方法解压软件和license;解压完成,目录大致如下:

    #ossasn1软件目录
    caeri@caeri ~/lzp/ossasn1/download/ossasn1
    .
    └── linux-x86-64.trial
        └── 11.3.1
            ├── asn1dflt.linux-amd64
            ├── bin
            ├── doc
            ├── include
            ├── lib
            └── samples
    #ossasn1 license位置
    caeri@caeri ~/lzp/ossasn1/download
     % ls
    asn1studio  ossasn1  ossasn1_linux64_trial_v11_ossinfoctrial_88175Z.zip  ossasn1_linux64_trial_v11.zip  ossinfoctrial  Trial_Agreement_7000359.4.txt
    

下载ASN.1文件

  1. 在这里,可以下载到V2X的ASN.1文件;

使用ossasn1工具生成对应的编解码工具

  1. 首先,需要export环境变量,加载license;

    cd /home/caeri/lzp/ossasn1/download/ossasn1/linux-x86-64.trial/11.3.1/bin
    export OSSINFOTRIAL=/home/caeri/lzp/ossasn1/download/
    
  2. 新建测试文件夹day2,并上传ASN.1文件;

    caeri@caeri ~/lzp/ossasn1/download/ossasn1/linux-x86-64.trial/11.3.1/bin/day2
     % ls
    ltev-csae-157-2020-defs.asn
    
  3. 执行如下指令,编译。这里为了防止生成的字符与系统冲突,添加了前缀-prefix asn_;

    ../asn1 -c ../../asn1dflt.linux-amd64 -json -uper -der -xer -toed -prefix asn_ ltev-csae-157-2020-defs.asn
    
  4. 编译完成后,效果如下:

    caeri@caeri ~/lzp/ossasn1/download/ossasn1/linux-x86-64.trial/11.3.1/bin/day2
     % ../asn1 -c ../../asn1dflt.linux-amd64 -json -uper -der -xer -toed -prefix asn_ ltev-csae-157-2020-defs.asn
    
    OSS ASN.1 Compiler Version 11.3.1
    Copyright (C) 2024 OSS Nokalva, Inc.  All rights reserved.
    This product is licensed for use by "lzp (Trial)", License "88175Z".
    
    C0043I: 0 error messages, 0 warning messages and 0 informatory messages issued.
    
    caeri@caeri ~/lzp/ossasn1/download/ossasn1/linux-x86-64.trial/11.3.1/bin/day2
     % ls
    ltev-csae-157-2020-defs.asn  ltev-csae-157-2020-defs.c  ltev-csae-157-2020-defs.h
    

编写测试用例,进行基本的encode、decode演示;

接下来,我们创建工程,用来演示基本的编解码操作。

  1. 下载demo代码

    git clone https://github.com/mdxz2048/ossasn_basic_demo.git
    
  2. 通过make编译一下,

    caeri@caeri ...11.3.1/bin/v2x % make
    gcc -Wall -I. -L. -g -I/home/caeri/lzp/ossasn1/download/ossasn1/linux-x86-64.trial/11.3.1/include -c -DOSSPRINT -o demo.o demo.c
    gcc -static  -Wl,--no-as-needed -o demo demo.o ltev-csae-157-2020-defs.o /home/caeri/lzp/ossasn1/download/ossasn1/linux-x86-64.trial/11.3.1/lib/libasn1code.a -lm -ldl
    
  3. 执行demo,会看到编码的RTCM数据和解码的数据

    caeri@caeri ...11.3.1/bin/v2x % ./demo
    Encoded RTCM Corrections (UPER):
    3023800101A11E300D800101810203E9820401020304300D800101810203EA820405060708
    value RTCMcorrections ::= 
    {
      msgCnt 1,
      corrections 
      {
        {
          rev reserved,
          rtcmID 1001,
          payload '01020304'H
        },
        {
          rev reserved,
          rtcmID 1002,
          payload '05060708'H
        }
      }
    }
    Decoded ASN.1 Data:
    value RTCMcorrections ::= 
    {
      msgCnt 1,
      corrections 
      {
        {
          rev reserved,
          rtcmID 1001,
          payload '01020304'H
        },
        {
          rev reserved,
          rtcmID 1002,
          payload '05060708'H
        }
      }
    }
    
  4. 至此,完成了整个ossasn1试用的演示。

#ossasn1# #V2X#
微信扫一扫关注

声明:基于ossasn1工具生成V2X消息的C语言编解码器

链接:https://mdxz2048.github.io/post/%E5%9F%BA%E4%BA%8Eossasn1%E5%B7%A5%E5%85%B7%E7%94%9F%E6%88%90v2x%E6%B6%88%E6%81%AF%E7%9A%84c%E8%AF%AD%E8%A8%80%E7%BC%96%E8%A7%A3%E7%A0%81%E5%99%A8/

作者:MD小智

声明: 本博客文章除特别声明外,均采用 CC BY-NC-SA 3.0许可协议,转载请注明出处!

创作实属不易,如有帮助,那就打赏博主些许茶钱吧 ^_^
WeChat Pay

微信打赏

Alipay

支付宝打赏

chatGPT友好使用指南
沉浸式翻译插件+自定义OpenAI接口
  • 文章目录
  • 站点概览
MD小智

MD小智

我们会高估自己所拥有的一切!

39 日志
5 分类
48 标签
GitHub
标签云
  • 编码
  • 自上而下理解内核网络
  • 文件同步
  • 12306bypass
  • Asn.1
  • Asn1c编译器
  • Chatgpt
  • D触发器
  • Ean13
  • Gdb交叉编译
  • 目的
  • 思路
  • 试用ossasn1工具
  • 下载ASN.1文件
  • 使用ossasn1工具生成对应的编解码工具
  • 编写测试用例,进行基本的encode、decode演示;
© 2010 - 2024 MD小智
Powered by - Hugo v0.96.0 / Theme by - NexT
/
Storage by GitHub / MD小智
0%