CAN分帧发送程序说明
试验平台 仅仅 需要一台主机 一台 周立功 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分帧发送程序说明的更多相关文章
- CAN编写完分帧发送, 分帧接收,J1939位域型结构体心得
关于由多个不同的C文件构成的工程,我采用以下方法 以为400Hz数字电源程序为例 假设工程由以下文件组成 DC_Comm.c 主要完成串口通讯部分 DC_Config.c 主要完成时钟,外设 中断初始 ...
- 在使用TCP协议进行消息发送时,对消息分帧
成帧与解析 阅读 <java TCP/IP Socket 编程>第三章笔记 成帧技术(frame)是解决如何在接收端定位消息的首尾位置的问题.在进行数据收发时,必须指定消息接收者如何确定何 ...
- CAN分帧接收实现
该版本程序实现了上电后先发送MACID检测功能,如果网络上有应答.则一直进行死循环,直到用户更改了本机的ID地址 才可以跳出循环体. 本单片机设置为双滤波 ,使目标地址为0X1F 实现了建立连接命令 ...
- HTTP2.0的二进制分帧
1.帧的类型: 在二进制分帧的结构中,头部有8个字节(64Bit),其中有一个字节(8Bit)来标志帧的类型: HTTP2.0规定了如下帧类型: DATA: 用于传输HTTP消息体 HEADERS:用 ...
- Qt:报文接收不完成,产生分帧的处理方法
最近在设备的测试工装时,通过串口,向设备发送自定义规约,其报文的枕结构已经编写,使用串口助手调试,设备可正常回复,但是通过工装,接收报文会不完整,导致解析失败.使用qDebug打印出来却发现数据被分成 ...
- HTML的窗口分帧
下面通过一个后台管理的部分设计来说明窗口分帧 frameset.html代码 <!-- <frameset>标签(常用来做后台管理界面) 属性:rows(行).cols(列).可以使 ...
- HTML高级标签(2)————窗体分帧(2)————后台管理页面
使用frameset进行窗体分帧.构建简易的后台页面.这篇博客就作为一个简易后台管理页面的实战演练. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3px ...
- PHP分帧后台模板页面css样式,js引入方法
一,首先把下载好的分帧后台模板放到对应的目录中,HTML显示页面放到View目录中,CSS和JS.img图片等公共资源放到include目录中 二.然后开始准备更改CSS和JS , img路径操作:( ...
- DIOCP数据包太大,请在业务层分拆发送
DIOCP数据包太大,请在业务层分拆发送 DIOCP日志记录异常:数据包太大,请在业务层分拆发送...... 跟踪发现,原因在下图:
随机推荐
- Celeste 机制研究
0. 简介.惯例.总论 Celeste (塞莱斯特) 是一个具有优秀手感的平台跳跃游戏. 虽然操作所使用的按键很少, 但是却有着复杂的组合机制. 在游戏实现上, Celeste 是一个锁定 60 帧 ...
- Maven项目-端口被占用java.net.BindException: Address already in use: JVM_Bind <null>:8080解决方法
异常显示: 问题所在:之前启动的tomcat未停止,端口被占用. 解决方法: 养成良好的习惯,用完之后停掉服务.
- jdbc学习over
这次的代码和之前学习到一般的代码主要就是将一些很常见的操作(建立连接.清除连接)不管做什么操作都需要用到它们,所以将它们单独放到另一个工具类里面去. 用到的术语: 1.事务:https://www.c ...
- Centos7 之 MariaDB(Mysql) root密码忘记的解决办法
MariaDB(Mysql) root密码忘记的解决办法 1.首先先关闭mariadb数据库的服务 # 关闭mariadb服务命令(mysql的话命令就是将mariadb换成mysql) [root@ ...
- 防火墙问题 Linux系统 /etc/sysconfig/路径下无iptables文件
虚拟机新装了一个CentOs7,然后做防火墙配置的时候找不到iptables文件,解决方法如下: 因为默认使用的是firewall作为防火墙,把他停掉装个iptable systemctl stop ...
- runas的替代品CPAU使用
runas替代软件CPAU 在windows系统下,想要实现某个程序不论何时都以指定的用户身份登录,因此找到了CPAU这个软件 cpau官方网站:https://www.joeware.net/fre ...
- jqGrid 重新加载数据
参考:https://blog.csdn.net/u012746051/article/details/52949353 $("#列表区域id").jqGrid('clearGri ...
- #写一个随机产生138开头手机号的程序 1.输入一个数量,产生xx条手机号 2.产生的这些手机号不能重复
import randomcount=int(input('请输入你所想要手机号数量:'))prefix='138'for i in range(count): num=random.sample(r ...
- java并发初探CyclicBarrier
java并发初探CyclicBarrier CyclicBarrier的作用 CyclicBarrier,"循环屏障"的作用就是一系列的线程等待直至达到屏障的"瓶颈点&q ...
- springcloud-alibaba手写负载均衡的坑,采用restTemplate,不能添加@loadbalanced注解,否则采用了robbin
采用springcloud-alibaba整合rabbion使用DiscoveryClient调用restful时遇到的一个问题,报错如下: D:\javaDevlepTool\java1.8\jdk ...