列车tcn网络mvb从站接收代码流程解析

TCN-列车通信网络概述

机车车辆通信网络(TCN-列车通信网络)的基本组件是在整个列车单元中提供数据通信的有线列车总线(WTB)和用于在车辆或固定连接车辆组(组成)内进行数据交换(通信)的多功能车辆总线(MVB)。每个要连接到WTB网络的组件都必须配备WTB通信节点(称为WTB网关)。MVB通信网络也可以通过该节点连接。这称为 TCN WTB/MVB 网关。 

mvb板卡设置需求

需求:mvb板卡从站配置地址0x002,源端口0x500,端口大小32字节。

MVB从站源代码实现过程

1、板卡初始化
2、过程数据初始化
3、传输存储与新鲜度初始化
4、源端口初始化 PD_SOURCE_PORT
5、设备地址初始化
6、循环接收数据
7、交叉编译后生成arm64文件格式

1、板卡初始化

TCN_DECL_PUBLIC
AS_RESULT
as_init (void)
{LS_RESULT   ls_result = LS_OK;ENUM8       link_id;link_id = 0;while ((link_id < ls_max_links) && (LS_OK == ls_result)){ls_result = ls_init(link_id);/* ignore LS_UNKNOWN_LINK */if (LS_UNKNOWN_LINK == ls_result){ls_result = LS_OK;} /* if (LS_UNKNOWN_LINK == ls_result) */link_id++;} /* while ((link_id < ls_max_links) && (LS_OK == ls_result)) */return((AS_RESULT)ls_result);} /* as_init */

2、过程数据初始化

TCN_DECL_PUBLIC
AP_RESULT
ap_init (void)
{AP_RESULT   ap_result = AP_OK;LP_RESULT   lp_result = LP_OK;ENUM8       ts_id;#if (TCN_AP_MUTEX_PORT == 1)/* initialise mutex for port access */if (FALSE == tcn_ap_mutex_status_port){if (0 != pthread_mutex_init(&tcn_ap_mutex_object_port, NULL)){ap_result = AP_ERROR;} /* if (0 != pthread_mutex_init(&tcn_ap_mutex_object_port, NULL)) */else{tcn_ap_mutex_status_port = TRUE;} /* else */} /* if (FALSE == tcn_ap_mutex_status_port) */if (TRUE == tcn_ap_mutex_status_port){if (0 != pthread_mutex_lock(&tcn_ap_mutex_object_port)){ap_result = AP_ERROR;} /* if (0 != pthread_mutex_lock(&tcn_ap_mutex_object_port)) */if (AP_OK == ap_result){if (0 != pthread_mutex_unlock(&tcn_ap_mutex_object_port)){ap_result = AP_ERROR;} /* if (0 != pthread_mutex_unlock(&tcn_ap_mutex_object_port)) */} /* if (AP_OK == ap_result) */} /* if (TRUE == tcn_ap_mutex_status_port) */
#endif /* #if (TCN_AP_MUTEX_PORT == 1) */if (AP_OK == ap_result){TCN_AP_MACRO_MUTEX_LOCK();ts_id = 0;while ((ts_id < lp_max_traffic_stores) && (LP_OK == lp_result)){lp_result = lp_init(ts_id, 0);/* ignore LP_UNKNOW_TS */if (LP_UNKNOW_TS  == lp_result){lp_result = LP_OK;} /* if (LP_UNKNOW_TS  == lp_result) */ts_id++;} /* while ((ts_id < lp_max_traffic_stores) && (...)) */TCN_AP_MACRO_MUTEX_UNLOCK();ap_result = (AP_RESULT)lp_result;} /* if (AP_OK == ap_result) */return(ap_result);} /* ap_init */

3、传输存储与新鲜度初始化

TCN_DECL_PUBLIC
AP_RESULT
ap_ts_config
(ENUM8       ts_id,UNSIGNED16  fsi
)
{LP_RESULT   lp_result;TCN_AP_MACRO_MUTEX_LOCK();lp_result = lp_init(ts_id, fsi);TCN_AP_MACRO_MUTEX_UNLOCK();return((AP_RESULT)lp_result);} /* ap_ts_config */

4、源端口初始化 PD_SOURCE_PORT

        pd_port_address            = 0x500;pd_prt_attr.port_size      = 32;pd_prt_attr.port_config = PD_SOURCE_PORT;// PD_SINK_PORT;pd_prt_attr.p_bus_specific = NULL;ap_result =                 \ap_port_manage          \(                       \0,                  \pd_port_address,    \PD_PRT_CMD_CONFIG,  \&pd_prt_attr        \);

5、设备地址初始化

        mvb_control.device_address  = 0x002;mvb_control.reserved1       = 0x00;mvb_control.t_ignore        = 0x00;mvb_control.reserved2       = 0x00;mvb_control.command         = SV_MVB_CTRL_CMD_BIT_SLA;mvb_control.command        |= SV_MVB_CTRL_CMD_BIT_SLB;mvb_control.reserved3       = 0x0000;as_result =                             \as_service_handler                  \(                                   \0,                              \SV_MVB_SERVICE_WRITE_CONTROL,   \(void*)&mvb_control             \);

6、循环接收数据

        if (0 == result)
        {
            ds_name.traffic_store_id = 0;
            ds_name.port_address     = 0x500;
            ap_result = ap_put_dataset(&ds_name, &pd_port_data[0]);
            if (ap_result != AP_OK)
            {
                TCN_OSL_PRINTF("ERROR: ap_result=%u\n", ap_result);
                TCN_DEMO_ON_ERROR(ap_result);
                result = (UNSIGNED16)ap_result;
            } /* if (ap_result != AP_OK) */
        } /* if (0 == result) */

7、交叉编译后生成arm64文件格式

make 编译Makefile文件

slave: ELF 64-bit LSB executable, ARM aarch64, version 1 (GNU/Linux), statically linked, for GNU/Linux 3.7.0, BuildID[sha1]=4042a2f2a5d572698a6882f773b06be008799613, with debug_info, not stripped

8、mvb从站实测源代码下载地址

mvb从站接收源代码需求:mvb板卡从站配置地址0x002,源端口0x500,端口大小32字节Makefile编译方式资源-CSDN文库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/641504.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rust入门-所有权

一、为什么、是什么、怎么用 1、为什么Rust要提出一个所有权和借用的概念 所有的程序都必须和计算机内存打交道&#xff0c;如何从内存中申请空间来存放程序的运行内容&#xff0c;如何在不需要的时候释放这些空间&#xff0c;成为所有编程语言设计的难点之一。 主要分为三种…

时钟HRC、LRC的校正

时钟校准 HRC校准原理LRC校准原理校准系数自加载flash测试步骤相关代码 HRC校准原理 寻找最合适的HRC温度特性调节HRC_TC、HRC输出频率调节控制位HRC_ADJ&#xff0c;使得HRC的实际频率和期望频率差别最小。 LRC校准原理 寻找最合适的LRC输出频率调节控制位LRC_ADJ使误差最…

谷歌广告B2C实战特训营,500+谷歌账户经验,实战演示从0-1搭建广告账户

结合数据优化搜索、购物(PMax)、再营销、展示、视频广告类型&#xff0c;提升ROI稳定增长 课程背景&#xff1a; 不同的电商产品(如大件家具、假发、服饰等)适合的广告类型、组合策略、预算配置大不相同。 为了让大家最快掌握不同产品的投放策略找到最适合自己的打法&#x…

vuex和pinia转态管理工具介绍

一、介绍 相同点&#xff1a; 都是Vue.js的状态管理工具 不同点&#xff1a; 区别PiniaVuex支持Vue2和Vue3都支持Vue3写法需要额外配置Mutation只有 state, getter 和 action&#xff0c;无Mutationaction异步、Mutation 同步actionaction支持同步和异步action异步、Mutatio…

nvm管理多个node版本,快速来回切换node版本

前言 文章基于 windows环境 使用nvm安装多版本nodejs。 最近公司有的项目比较老需要降低node版本才能运行&#xff0c;由于来回进行卸载不同版本的node比较麻烦&#xff1b;所以需要使用node工程多版本管理&#xff0c;后面自己就简单捯饬了一下nvm来管理node&#xff0c;顺便…

淘宝京东比价接口推荐(商品api接口)

主流电商商品API接口 数据时代&#xff0c;做好数据分析的重要性不言而喻。电商行业也同样如此&#xff0c;做好商品数据的整合分析&#xff0c;对于电商企业来说&#xff0c;有以下几个好处&#xff1a; 更好地了解产品表现。通过商品数据分析&#xff0c;品牌方可以了解到商…

前端css中的transform(转换)的使用

前端css中的transform的使用 一、前言二、流程图三、举例&#xff08;一&#xff09;、平移1.平移&#xff0c;源码12.源码1运行效果(1).视频效果(2).截图效果 3.平移3d效果&#xff0c;源码24.源码2运行效果&#xff08;1&#xff09;、视频效果&#xff08;2&#xff09;、截…

甘特图:如何制定一个有效的产品运营规划?

做好一个产品的运营规划是一个复杂且系统的过程&#xff0c;涉及多个方面和阶段。以下是一些关键步骤和考虑因素&#xff0c;帮助你制定一个有效的产品运营规划&#xff1a; 1、明确产品定位和目标用户&#xff1a; 确定产品的核心功能、特点和优势&#xff0c;明确产品在市…

Android Studio实现内容丰富的安卓校园超市

获取源码请点击文章末尾QQ名片联系&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动 项目代号168 1.开发环境 后端用springboot框架&#xff0c;安卓的用android studio开发 android stuido3.6 jdk1.8 idea mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册…

jdbc操作数据库 and 一个商品管理页面

文章目录 1. 介绍1.1 应用知识介绍1.2 项目介绍 2. 文件目录2.1 目录2.2 介绍以下&#xff08;从上到下&#xff09; 3. 相关代码3.1 DBConnection.java3.2 MysqlUtil.java3.3 AddServlet.java3.4 CommodityServlet.java3.5 DelectServlet.java3.6 SelectByIdServlet.java3.7 S…

iStat Menus for Mac:强大的系统监控工具

iStat Menus for Mac是一款功能强大的系统监控工具&#xff0c;专为Mac用户设计&#xff0c;旨在帮助用户全面了解电脑的运行状态&#xff0c;提高电脑的性能和稳定性。 iStat Menus for Mac v6.73 (1239)中文版下载 该软件可以实时监测CPU使用率、内存占用、网络速度、硬盘活动…

Python网络爬虫之数美滑块的加密及轨迹分析

目录 一、引言 二、数美滑块验证概述 三、数美滑块加密机制分析 1、参数混淆与加密 2、JS代码动态执行 四、轨迹分析 1、轨迹数据获取 2、轨迹特征提取 五、动态JS参数分析 1、网络请求分析 2、JS代码调试与追踪 六、Python实现案例分析 1. 环境搭建与依赖安装 2…