“保姆级”车载LIN总线教程(三)-堪称全网“最细”系列

目录

1.无条件帧(Unconditional Frame)

2.事件触发帧(Event Triggered Frame)

3.零星帧/偶发帧(Sporadic Frame)

4.诊断帧(Diagnostic Frame)


上节对LIN总线的报文结构进行介绍,那么本节主要来聊聊LIN总线的报文类型。LIN的报文类型主要有以下几种:无条件帧、事件触发帧、零星帧/偶发帧和诊断帧等,下面将对上述帧类型进行介绍。

1.无条件帧(Unconditional Frame)

无条件帧通常用于传输有用数据,具有单一的发布节点,相当于标准帧,无需其他任何条件即可使用。

(1)帧头和响应的分配是唯一的;

主节点将帧头作为请求发送到总线,特定的从节点进行相应的响应,并根据ID确定是否需要发送响应。

(2)无条件帧与其传输的帧时隙的分配是惟一的;

(3)无条件发送应答;

主机一旦将帧头发送到总线,必须有从机任务作应答。

(4)帧ID:0-59;

2.事件触发帧(Event Triggered Frame)

(1)事件触发帧是主机节点在一个帧时隙中轮询各从机节点的信号是否发生变化时使用的帧。

(2)由于事件触发帧的帧头后只能有一个响应,因此其响应中第一个数据字节通常为该响应对应的无条件帧的PID,这样就可以确定是哪个关联的无条件帧发送的。为确保事件触发帧的长度,所有对应同一事件触发帧的无条件帧中响应的数据字节数均相同。

(3)由于多个从节点可以向来自主节点的帧头发送响应,这样可能会发生冲突,因此使用冲突解决调度表(Collision Resolving Schedule)来解决这个问题,当主节点在检测到冲突后跳转至冲突解决调度表进行一轮发送,然后跳转到开始的调度表,保证了所有响应都能被发送出来。

3.零星帧/偶发帧(Sporadic Frame)

(1)零星帧/偶发帧是主节点共用一个时隙、在需要时才被发送的一组帧。主节点使用零星帧/偶发帧发送很少使用的信息,会有多个无条件帧共享同一时隙。主节点根据需要发送零星帧/偶发帧,如果无需发送,则相关的时隙为空。

(2)如果至少一个与无条件帧相关的信号发生了变化,则发送其响应部分。

(3)当多个从节点需要进行发送时,主节点会根据LDF中定义好的优先级顺序,将这些无条件帧依次在调度表多轮运行的同一时隙进行发送,避免发生冲突。

4.诊断帧(Diagnostic Frame)

诊断帧用来传输诊断或配置信息,一般包含8个字节数据。根据ISO 15765-2传输层和ISO 14229 应用层UDS,协议中定义了两个诊断帧:主节点请求帧和从节点响应帧。主节点请求帧通常用作诊断请求或配置从节点,从节点响应帧用作诊断响应。

上述两个诊断帧均由帧头和响应构成。主节点请求帧(诊断请求)由主节点传输帧头和帧响应。帧头为ID=0x3C。从节点响应帧(诊断响应)由主节点发送帧头,被诊断的从节点发送帧响应,帧头为ID=0x3D

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
当涉及到 Vue DHTMLX-Gantt 导出 Excel 的保姆完整教程时,以下是一步一步的指南: 1. 确保您的项目中已经安装了 Vue 和 DHTMLX-Gantt。如果尚未安装,请使用以下命令进行安装: ```bash npm install vue dhtmlx-gantt ``` 2. 在您的 Vue 组件中引入所需的库和样式: ```javascript import 'dhtmlx-gantt'; import 'dhtmlx-gantt/codebase/dhtmlxgantt.css'; ``` 3. 创建一个 Vue 组件,并在模板中添加一个 Gantt 图表和一个按钮: ```html <template> <div ref="ganttContainer" style="width: 100%; height: 600px;"></div> <button @click="exportData">导出 Excel</button> </template> <script> import * as XLSX from 'xlsx'; import FileSaver from 'file-saver'; export default { mounted() { const ganttContainer = this.$refs.ganttContainer; gantt.init(ganttContainer); // 设置 Gantt 图表的配置和数据 // 示例数据 const tasks = [ { id: 1, text: '任务1', start_date: '2022-01-01', duration: 5, progress: 0.5 }, { id: 2, text: '任务2', start_date: '2022-01-06', duration: 4, progress: 0.2 }, // 其他任务... ]; gantt.parse({ data: tasks }); }, methods: { exportData() { const gantt = this.$refs.ganttContainer.$gantt; const tasks = gantt.getDatastore('task').getItems(); // 将任务数据转换为 Excel 数据格式 const data = tasks.map((task) => { return { id: task.id, text: task.text, start_date: task.start_date, duration: task.duration, progress: task.progress, }; }); // 创建 Excel 文件 const worksheet = XLSX.utils.json_to_sheet(data); const workbook = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(workbook, worksheet, 'Gantt Data'); const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' }); const excelData = new Blob([excelBuffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); // 下载 Excel 文件 FileSaver.saveAs(excelData, 'gantt_data.xlsx'); }, }, }; </script> <style> /* 可选的样式 */ </style> ``` 4. 在上述示例代码中,需要注意以下部分: - 在 `mounted` 钩子中,使用 `gantt.init(ganttContainer)` 初始化 Gantt 图表,并根据您的需求设置其配置和数据。 - `exportData` 方法用于将 Gantt 图表数据导出到 Excel。确保在 `exportData` 方法中的 `this.$refs.ganttContainer.$gantt` 是对 Gantt 图表组件的正确引用。 - 点击 "导出 Excel" 按钮时,将会生成一个名为 `gantt_data.xlsx` 的 Excel 文件,其中包含了 Gantt 图表的数据。 这就是使用 Vue DHTMLX-Gantt 导出 Excel 的保姆完整教程。希望对您有所帮助!如果您有任何其他问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汽车测试M哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值