Can_Chart上位机

Can_Chart上位机

前言

在某种情况下,电脑不支持U盘,网盘等外部网站访问不了,甚至以太网都没法支持的情况下。交流,工作都会变得很受限制,dbc,ldf,报文日志互传都会相当麻烦。那能咋办。"录报文" 啊!本上位机是基于图莫斯UTA0503开发的,必须支持canfd。通过Can_Chart这款上位机,可以实现有线交流,文件传输。

视频演示

can_chart上位机视频

啊博协议栈

三次握手

首先,上位机已经识别到本地连接图莫斯了,但是不知道对方有没有图莫斯可以与自己连接,所以需要发送连接请求。这里仿照TCP协议的三次握手,但是又简化了,听我道来。

TCP的三次握手需要给SYN和ACK的位置位,还需要随机序列号,太麻烦了,对于本上位机,不太想去定义这些位。

流程是这样子的:1、首先,谁发起的连接请求,谁就是客户端。发送id为0x10000001的canfd扩展帧,数据就是"SYN"三个字符的ascii码。2、被请求连接的那一方,就是服务器,服务器收到SYN之后,需要发送id为0x10000002的canfd扩展帧,数据就是"SYN-ACK"7个字符的ascii码。如果没在3秒内发出,客户端视为响应超时。

3、客户端收到SYN-ACK之后,需要再以id为0x10000001的canfd扩展帧,数据就是"ACK"三个字符的ascii码发送,否则服务器视为响应超时。

心跳报文

三次握手之后,双方就建立了连接,但是,如何维持连接?双方都需要知道对方还存在。这里仿造canopen协议的心跳报文。心跳报文的格式:如果当前设备作为服务器,那么帧格式是id:0x10000002 data:8位(十六进制显示)的图莫斯设备句柄(唯一);如果当前设备作为客户端,那么帧格式是id:0x10000001 data:8位(十六进制显示)的图莫斯设备句柄(唯一)。

当3秒内没收到对方心跳报文,视为与对方断开连接。

功能码

1、文件传输,需要知道对方传输的zip名字,我好接收之后文件名用对方的名字,不然接收到完整的也容易找不到。

2、文件大小,对方把一个zip分成多少帧报文需要告诉"我",方便"我"知道传输的进度,显示到进度条

3、传输一大堆报文,哪些属于真正的zip的有效数据

4、聊天室发出的无关紧要的数据,需要和zip有效数据区分开来。

这里仿造uds的服务的概念。为上述的功能定义了一个功能码

c 复制代码
//功能码
typedef enum func_num{
    Code_tran_filename = 1,//报文传输压缩文件名字
    Code_tran_filesize,    //报文传输压缩文件大小
    Code_tran_filecontent, //报文出书压缩文件内容
    Code_tran_chart,       //can聊天
}Func_Num_E;

帧格式(canfd扩展帧):

客户端 id:0x18000001

服务器 id:0x18000002

数据:功能码(包头:1byte)

一帧携带的有效数据(包头:1byte)

当前帧在整个zip包传输的序号(包头:4byte)

有效数据(最大54byte)

crc32校验(包尾:4byte)

开始、结束

上边说到的几个功能码,都需要知道什么时候开始,什么时候结束,比如功能码1传输文件名称,功能码4聊天室,都不知道对方要传输的内容有多少,而且没有连续帧的概念,所以必须有那种类似IIC的起始(SCL = 1 SDA = 1->0)和结束(SCL = 1 SDA = 0->1)来表示。当开始时,清空缓冲区,传输过程中,就不断往缓冲区追加数据。当结束时,把数据一起显示到界面等操作。

开始和结束的帧格式也是很简单。

开始:

id:0x18000001

data:功能码,0x73(s),0x74(t),0x61(a),0x72®,0x74(t)

结束:

id:0x18000001

data:功能码,0x73(s),0x74(t),0x6F(o),0x70§

肯定响应、否定响应

目前只有功能码3,也就是内容传输接收方有做crc校验。

其他功能码都是不比较crc值,直接给出肯定应答,功能码4聊天,接收方不做应答,发送方一股脑发送,接收方照单接收。对于功能码3,把接收到的每一帧数据,除了crc32的4字节外去计数crc值,与接收到的对比,一样则发送肯定响应,不一样发送否定响应。

肯定响应:

id : 0x18000002

data :功能码 (1byte)+ x(无关值,1byte)+ 帧帧序号(接收到的帧帧序号,照抄,4byte)+ 功能码 (1byte)+ 0x79(y)+0x65(e)+0x73(s)

消极响应:

id : 0x18000002

data :功能码 (1byte)+ x(无关值,1byte)+ 帧帧序号(接收到的帧帧序号,照抄,4byte)+ 功能码 (1byte)+ 0x6E(n) + 0x6F(o)

相关资料下载连接

上位机下载、源码下载

注意

本文章和上位机仅作技术交流,不得使用Can_Chart上位机进行任何非法或剽窃行为,否则后果自负

相关推荐
读书札记202218 分钟前
Qt界面卡死问题探讨及解决方法
qt
IT大白鼠21 分钟前
RSTP协议原理与配置详解:快速生成树技术的深度解析
网络·网络协议
C+++Python2 小时前
BIO、NIO、AIO 区别
网络·nio
VOOHU-沃虎2 小时前
沃虎——网络变压器与RJ45集成连接器选型实战:从百兆到10G、从非PoE到4PPoE
网络
2301_773643623 小时前
华为云存储实验
网络·mysql·华为云
ylscode3 小时前
Windows 内核惊现高危提权漏洞 CVE-2026-40369:沙箱隔离失效,SYSTEM 权限唾手可得
网络·安全·安全威胁分析
jieyu11193 小时前
Wireshark使用指南【超全面】
网络·wireshark
weixin_520649873 小时前
通信【报文】
网络
志栋智能4 小时前
小步快跑:从单一场景开启超自动化巡检之旅
运维·网络·人工智能·自动化
XINERTEL4 小时前
视频卡顿花屏?专业视频质量评估测试让画质从“凭感觉”到“数据说话”
网络·测试工具·音视频·丢包