试验平台 仅仅 需要一台主机 一台 周立功 CAN 助手, 一个232 助手就OK

ICAN 协议

资源节点地址 电脑 我认为是0x01

51单片机主机的地址 是 0x1f

建立连接的 功能码 是0x04

发送分帧 和 一个 帧 的 资源 source ID 0X80

所以建立连接发送的时候 上位机的地址是 0023e4fe

所以发送分帧传送的时候 上位机的地址就是 0x0023e180 0x80 是资源节点编号

这个程序 在 51单片机板 接收到CAN    消息以后 单片机板上的数码管从0重新开始计数。

1 我用台式机发送数据 然后将这些数据放在串口调试住手中显示

我用笔记本上用串口调试助手观测

实现上部分功能 我用的是下面程序

上面程序是将一帧数据 13个字节 全部拷贝过来

其中0X88 代表的是帧信息

BIT7

BIT6

BIT5

BIT4

BIT3

BIT2

BIT1

BIT0

FF

RTR

X

X

DLC.3

DLC.2

DLC.1

DLC.0

1

0

0

0

1

0

0

0

表示 扩展帧 ,数据帧 数据长度 8

在调试本程序的时候 发现一个问题

如果我 仅定义了 一个指向unsigned char * 的指针变量 adrtemp

则我这样写程序, 最后拷贝的数据是不对的。

程序如下:

用周立功 发送 同样的数据 我用笔记本的串口调试助手 接收的数据如下,是错误的

正确的做法 :

更改程序如下 仅仅显示接收数据的部分

这样仅仅显示接收的00 01 02 03 04 05 06 7个数

分段帧的调试完成

试验目的: 当接收完分段帧的最后一帧数据,则单片机将分段帧传送的所有数据上传到串口调试助手,并且发送出响应帧。

台式发送的分帧数据过程

步骤一:建立连接

步骤二:发送第一帧数据 从机接收完成数据以后,数码管会从0重新开始计数

步骤三:发送第二帧数据 从机接收完成数据以后,数码管会从0重新开始计数

步骤四:发送第三帧数据 在发送完第三帧数据以后,单片机发出应答帧

应答帧的ID号 0X03E03180 数据场为 00

同时 数码管会从0 重新开始计数

串口调试助手检测的数据

百度网盘

CAN分帧发送程序说明的更多相关文章

  1. CAN编写完分帧发送, 分帧接收,J1939位域型结构体心得

    关于由多个不同的C文件构成的工程,我采用以下方法 以为400Hz数字电源程序为例 假设工程由以下文件组成 DC_Comm.c 主要完成串口通讯部分 DC_Config.c 主要完成时钟,外设 中断初始 ...

  2. 在使用TCP协议进行消息发送时,对消息分帧

    成帧与解析 阅读 <java TCP/IP Socket 编程>第三章笔记 成帧技术(frame)是解决如何在接收端定位消息的首尾位置的问题.在进行数据收发时,必须指定消息接收者如何确定何 ...

  3. CAN分帧接收实现

    该版本程序实现了上电后先发送MACID检测功能,如果网络上有应答.则一直进行死循环,直到用户更改了本机的ID地址 才可以跳出循环体. 本单片机设置为双滤波 ,使目标地址为0X1F 实现了建立连接命令 ...

  4. HTTP2.0的二进制分帧

    1.帧的类型: 在二进制分帧的结构中,头部有8个字节(64Bit),其中有一个字节(8Bit)来标志帧的类型: HTTP2.0规定了如下帧类型: DATA: 用于传输HTTP消息体 HEADERS:用 ...

  5. Qt:报文接收不完成,产生分帧的处理方法

    最近在设备的测试工装时,通过串口,向设备发送自定义规约,其报文的枕结构已经编写,使用串口助手调试,设备可正常回复,但是通过工装,接收报文会不完整,导致解析失败.使用qDebug打印出来却发现数据被分成 ...

  6. HTML的窗口分帧

    下面通过一个后台管理的部分设计来说明窗口分帧 frameset.html代码 <!-- <frameset>标签(常用来做后台管理界面) 属性:rows(行).cols(列).可以使 ...

  7. HTML高级标签(2)————窗体分帧(2)————后台管理页面

    使用frameset进行窗体分帧.构建简易的后台页面.这篇博客就作为一个简易后台管理页面的实战演练. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3px ...

  8. PHP分帧后台模板页面css样式,js引入方法

    一,首先把下载好的分帧后台模板放到对应的目录中,HTML显示页面放到View目录中,CSS和JS.img图片等公共资源放到include目录中 二.然后开始准备更改CSS和JS , img路径操作:( ...

  9. DIOCP数据包太大,请在业务层分拆发送

    DIOCP数据包太大,请在业务层分拆发送 DIOCP日志记录异常:数据包太大,请在业务层分拆发送...... 跟踪发现,原因在下图:

随机推荐

  1. 什么是Device ID?

    Android ID用于唯一识别一部设备的一次刷机行为,虽然不能完全确定该设备的唯一性(真的唯一性是用IMEI号的),但是可以很大程度上过滤重复设备.这是移动互联网广告行业的基础,尤其是CPI广告,设 ...

  2. js中数值各进制之间的转换

    十进制转换为二进制 toString()方法可把一个 Number 对象转换为一个字符串,并返回结果.语法如下: NumberObject.toString(radix); 其中,radix为可选.规 ...

  3. IntelliJ IDEA 破解之后,用了一段时间后,打开软件提示 no suitable licenses left on the license server

    IntelliJ IDEA 破解之后,用了一段时间后,打开软件提示 no suitable licenses left on the license server 需要让我们重新注册,原来是之前的地址 ...

  4. Day11 - N - Game HDU - 3389

    题目链接 题意是说有1到n个标号的盒子,选择一个非空的盒子A,B是否空无所谓,满足(A+B)%2=1,(A+B)%3=0,A>B 解上面的同余方程组,最小解为3,循环为2*3=6,那我们可以把前 ...

  5. python 中的 *args 和 **kwargs

    在阅读Python代码时,经常会看到如下函数的定义: def fun(*args, **kwargs): 很多同学可能会对此感到困惑,这个 * args和 **kwargs是什么东西.为啥会在源码中应 ...

  6. Python作业篇 day03

    ###一.有变量name = 'aleX leNb',完成如下的操作 name = 'aleX leNb' name1 = ' aleX leNb ' #1.移除name1 变量对应的值两边的空格 , ...

  7. KDE Plasma 5.17 即将发布

    导读 Plasma 5.17上个月达到了beta版本,而下周将发布Plasma 5.17.0版本!KDE桌面的大更新只有几天了.因此,开发人员一直在整理它,同时也集思广益讨论Plasma 5.18应该 ...

  8. Django:邮件功能实现

    django-users2和django的邮件功能模块都有相关的实现 ----------------------------------------------------------------- ...

  9. Android适配底部虚拟按键的方法

    ---恢复内容开始--- 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近项目进行适配的时候发现部分(如华为手机)存在底部虚拟按键的手机会因为虚拟按键的存在导致挡住部分界面,因为需要全屏显示 ...

  10. struts2--通配符映射

    1.通配符映射: --规则: > 1)若找到多个匹配,没有通配符的优先: > 2)若指定动作不存在,struts2将会尝试把这个URI与任何一个包含着通配符*的动作名进行匹配: > ...